Sei sulla pagina 1di 39

1

JAVA desde cero

Objetivos
Construye clases siguiendo especificaciones. Describe los conceptos fundamentales de la programacin orientada a objetos. Reconoce la sintaxis utilizada en un lenguaje de programacin orientada a objetos. Busca en la documentacin del lenguaje acerca del uso de las clases predefinidas. Utiliza las clases predefinidas en el lenguaje para resolver un problema dado. Reconoce la sintaxis utilizada en un lenguaje de programacin orientada a objetos.

Introduccin
Primero que todo, deseo compartir mis clases con el Foro... de esta forma todos aprendemos de la misma forma, no creen ?? ... los objetivos planteados son ms que todo una referencia pequea, de lo que se desea llevar a cabo en este pequeo proyecto... Espero cada dos das, ir agregando in formacin y cursos dentro de este... Claro est que antes de ver todo eso, debemos ver algo de Programacin Estructurada para aquellos que nunca han visto como hacer un programa, ya sea en JAVA, u en otros lenguajes de programacin.

Dar una Introduccin de JAVA, est de ms... rafaelsk, dio bastante introduccin al tema... asi que a trabajar...

Estructura
Es la estructura de un programa basado en JAVA, por ahora ser nuestro "Ave Mara"... xD, siguiendo el curso, se ir viendo como corresponde cada secuencia... Sentencia de paquetes (packages) (opcional) 0,1,2,3,4..... N sentenciasde importacin Serie de comentarios (opcional) Declaraciones de clases privadas (si se desea, claro) Una declaracin de clases pblicas Declaracin de clases Declaracin de variables de la clase Declaracin de variables de instancia Definicin de constructores Definicin de mtodos

Descarga e instalacin de algn compilador


Para trabajar con JAVA, usaremos JDK Versin 6 Update 6, se puede descargar de la siguiente pgina: Aqu Pero no trabajaremos en s con el compilador JAVAC, que es el compilador de JAVA, sino utilizaremos un programa para poder trabajar de forma ms cmoda con un modo GUI, para ello utilizaremos JCreator Pro que es un IDE de JAVA, descargable de su Web Oficial http://www.jcreator.com/download.htm, disponible para Windows Vista, Win2000 y WinXP. Guardamos y ejecutamos el EXE:

Apretamos Next (siguiente), y aceptamos la Licencia

Crearemos el PATH (directorio), donde queremos instalar JCreator Pro

Comienza la instalacin

Lanzamos el JCreator

He aqu donde nos encontramos con la configuracin de programa, decidiremos si queremos que el compilador sea solamente utilizable para el usuario disponible, para todos los usuarios, o solamente para ejecutarlo desde el PATH.

Aqu nos encontraremos con todos los archivos asociados al programa, *.java, *.jcw, *.jcp, *.jsp, *.xml, podemos agregar o eliminar segn sea nuestra conveniencia, en este caso, lo dejaremos por defecto.

Aqu nos pide el PATH de jdk, lo buscamos y lo seleccionamos, por defecto lo encuentra. Y luego FINISH.

He aqu nuestro JCreator Pro.

Generalidades y Caractersticas del lenguaje


Aspectos Histricos Sun Microsystem lider en Servidores para INTERNET, desarrolla JAVA con el fin de eliminar incompatibilidades.(1991) Fue un proyecto que reboto mucho tiempo por distintos departamentos de SUN, java como un lenguaje de pequeos electrodomsticos. El mercado inicial de JAVA (a cargo de la filial de Sun Microsystem, FirsPerson Inc.) eran los equipos como microondas, tostadores y fundamentalmente televisin interactiva. James Gosling, miembro del equipo, con mas experiencia en lenguajes de programacin haba estado trabajando en su tiempo libre en un lenguaje de programacin que el lla mo OAK, cuyas bases fueron C++.(1990)

El primer proyecto que uso OAK, se llamo proyecto Green, el cual era un sistema de control completo de los aparatos electrnicos y el entorno de un hogar. OAK era un nombre existente. Duke es la mascota de Java, aunque tambin se usa la taza de caf (Java nace entorno a una conversacin, junto a un caf). Bill Joy, cofundador de SUN y uno de los principales desarrolladores de UNIX de Berkeley, presento JAVA en agosto de 1995.

Caractersticas
Es simple. Ofrece toda la funcionalidad de un lenguaje potente, es perecido a C++. Utiliza Garbage Collector (reciclador de memoria dinmica). No es necesario preocuparse de liberar memoria, el reciclador se encarga de ello, cuando entra en accin permite liberar bloques d e memoria muy grandes, lo que reduce la fragmentacin de la memoria. Reduce 50% los errores mas comunes de programacin al eliminar caractersticas como:
Aritmtica de punteros no existen referencias registros (struct) definicin de tipos (typedef) macros (#define) necesidad de liberar memoria (free).

Es orientado a Objetos Java incorpora la resolucin dinmica de mtodos, caractersticas que deriva del lenguaje Objettive C. Usa RTTI (Run time type idetification) que define la interaccin entre objetos, excluyendo variables de instancias o implementacin de mtodos. Modo de organizar sus programas. Modelamiento de objetos del mundo real.

Es distribuido. Capacidad de interconexin TCP/IP, existen librerias de rutinas para acceder e interactuar con protocolos como http y ftp. Java en si no es distribuido, si no que proporciona las librerias y herramientas para que los programas puedan ser distribuidos, es decir, que funcione en varias mquinas, interactuando.

Es de arquitectura Neutral. Java compila su cdigo a un archivo objeto de formato independiente de la arquitectura de la maquina en que se ejecutara.

El cdigo fuente java se compila a un cdigo de bytes de alto nivel independiente de la mquina. Este cdigo (byte - Code) esta diseado para ejecutarse en una mquina hipottica que es implementada por un sistema run time que si es dependiente de la mquina. Lo nico dependiente del sistema es la mquina virtual (JVM) y las libreras fundamentales, adems habr APIs de Java que tambin entraran en contacto con el hardware y sern dependientes de la mquina.

Ejemplos de APIs JAVA2D: grficos 2D y manipulacin de imgenes. Java Media Framework: Elementos crticos en el tiempo, audio, video. Java Animation: animacin de objetos 2D. Java Telephony: Integracin con telefona. Java Share: Interaccin entre aplicaciones multiusuario. Java 3D: grficos 3D y su manipulacin.

Es seguro. Si los byte codes pasan la verificacin sin generar ningn mensaje de error, entonces sabemos que: El cdigo no produce desbordamiento de operando en la pila. Todos los tipos, los parmetros de todos los cdigos de operacin son conocidos y correctos. No ha ocurrido ninguna conversin ilegal de datos.

Es portable. Independiente de la plataforma. Un entero (int) en java, siempre ser un entero de 32 bits.

Es multitarea. Java permite muchas actividades simultneas en un programa. Java provee su propio navegador (Hotjava). Es un sistema federado, el navegador es un coordinador de piezas y cada pieza es responsable de una funcin. Las piezas se pueden aadir dinmicamente a travs de la red.

Es eficiente Existen compiladores de Java para cdigo Nativo JIT (Just in Time) Es Dinmico Objetos usados siempre en forma dinmica automticamente.

Versiones del Lenguaje Java 1.02: Versin mas difundida y la ltima de la versin 1.0 que estaba embutida en browser mas antiguos. Java 1.1.0: Esta versin incorpora grandes cantidades de funcionalidades entre las ms importantes java RMI, JavaBeans, nuevo modelo de eventos, JDBC. Java 1.2: Una de las principales caractersticas JFC (Java Foundations classes, una biblioteca que contiene los componentes de Swing) Java 1.4: Una de las ltimas versiones, incorpora nuevas mejoras, llamada java 2.0

10

-Tipos de datos y variables


En mis primeros aos que comenc a estudiar programacin, buscando informacin, tutoriales y demases, nunca encontr, algo que detallara los tipos de variables en s. Por ello quiero dar a conocer de la forma ms clara posible tipos de datos que hay. Los tipos de datos se utilizan, para que el computador trabaje bajo un cierto parmetro, ya sea nmeros (decimales o no, reales) y carcteres. Son aquellos que nos permiten interpretar algun tipo de informacin Los tipos de datos utilizados en JAVA son: Tipos de datos Valores byte short int long 8 bits complemento a 2 16 bits complemento a 2 32 bits complemento a 2 64 bits complemento a 2 Nmeros Reales float double 32 bits IEEE 754 64 bits IEEE 754 Otros Tipos boolean tru or false char 16 bits de caracteres 0o1 alfabeto 3,4 * 10^-38 a 3,4 * 10^38 1,7 * 10^-308 a 1,7 * 10^308 -127 a 127 -32767 a 32767 -2147483648 a 2147483648 -9 mil billones a -9 mil billones

byte, short, int y long, son tipos de datos enteros. Estos identificadores son representa dos bajo tres formatos, Hexadecimal, Decimal y Octal. float y double, son tipos de datos flotantes, esto quiere decir que son variables de tipo fraccionaria (con decimales). boolean, es un tipo de estado que representa bi-valores, esto significa que son dos valores, ya sea true o false, false = 0 y true >=1. char, tipo carcter, se utiliza para almacenar tipos Unicode simple. este tipo de dato almacena 16 bits de caracteres en un entero.

11

Descripcin

Representacin

Valor Unicode

Carcter Unicode \udddd Nmero Octal \ddd Barra Invertida \\ Continuacin \ Retroceso \b Retorno de carro \r Alimentacin de formularios \f Tabulacin horizontal \t Lnea nueva \n Comillas simples \ Comillas dobles \" Nmeros ASCII 0-9 Alfabeto ASCII maysculas AZ Alfabeto ASCII minsculas az

\u005C \ \u0008 \u000D \u000C \u0009 \u000A \u0027 \u0022 \u0030 a \u0039 \u0041 a \u005A \u0061 a \u007A

Explico esto a grandes ragos, cuando declaramos un carcter, se puede realizar de dos formas: char carcter_1 = 'A'; char caracter_1 = '\u0041';

Identificadores
Primero es lo primero: Palabras reservadas en JAVA
abstract double int strictfp boolean else interface super false break extends long switch null

12
byte final native synchronized true case finally new this catch float package throw char for private throws class goto protected transient const if public try continue implements return void default import short volatile

Para crear Identificadores debemos seguir las siguientes reglas: No pueden llevar el nombre de alguna palabra reservada. Es sencible a las mayusculas, entonces B != b. Debe comenzar por una letra, _ o $. seguido de los carcteres que se desen

Un pequeo ejemplo sera un identificador de tipo flotante con el nombre de cph, _cph, $cph.
float cph; float _cph; float $cph;

Operadores
Cuando hablamos de Operadores nos referimos a ciertas categoras:

13

Aritmticos Asignacin Instanceof Incrementables Unarios Relacionales Lgicos Concatenables A nivel de Bits

Aritmticos: Son aquellos Operadores bsicos dentro de la matemticas: Suma = + Resta = - Multiplicacin = * Divisin = / Resto de una divisin = %

Ejemplo de resto: 9%4=1 Asignacin: Estos ms que todo se utilizan para simplificar el trabajo de teclado, adems se basan en los Operadores Aritmticos.: += ; valor1 += valor2 valor1 = valor1 + valor2 -= ; valor1 -= valor2 valor1 = valor1 - valor2 *= ; valor1 *= valor2 valor1 = valor1 * valor2 /= ; valor1 /= valor2 valor1 = valor1 / valor2 %= ; valor1 %= valor2 valor1 = valor1 % valor2

Instanceof: Este Operador nos permite saber si el Objeto pertenece a la clase llamada o no: La sintaxis: Objeto Instaceof Clase Incrementables:

14

Este tipo de Operadores, son los que permite incrementar o disminuir en uno, la variable: ++ = incrementa en uno -- = disminuye en un

Ejemplo: Contador++ = contador incrementa en uno su valor Contador-- = contador disminuye en uno su valor. Unarios: Ms fcil comer papas fritas, sirven para cambiar el smbolo de una operacin: + -

Ejemplo: 2 + 1 = 2 + (-1) 2 1 Relacionales: Ms de alguno, os acordar cuando el profesor de matemticas/geometra/algebra, nos pedia que teniamos que saber que cifra era mayor, igual o menor que otra, o incluso si eran distintas. Los operadores relacionales se utilizan y son para eso, para realizar comparaciones: > < == != <= >= mayor que menor que igual que distintos que menor igual que mayor igual que

Lgicos Los operadores lgicos, entregarn un valor bolean, pero esto no significa que entregarn true o false, sino que compararn los dos valores que se estan comparando en el momento: && Ambas entradas deben ser verdaderas

15

|| Ambas entradas deben ser falsas | Una entrada tiene que ser falsa & Una entrada tiene que ser verdadera ! Niega la entrada

Concatenables: El Operador de concatenacin se utiliza para agrupar cadenas de caracteres: +

Ejemplo Hola + variable + como ests? A nivel de Bits Son aquellos operadores que se dedican al desplazamiento de bits: << >> & | desplaza hacia la izquierda desplaza hacia la derecha tabla de verdad (and) tabla de verdad (or)

Sentencias
Como en todo lenguaje de programacin existen las sentencias, JAVA no es la excepcin. En este apartado, nos basaremos en la Estructura de control, que se subdivide en dos, Iteracin y Seleccin. Este tipo de sentencias nos permiten hacer una programacin ms entrenida y menos secuencial. Sentencias de tipo Iteracin: Este tipo de sentencias nos permiten realizar una operacin tantas veces como sea necesaria, un pequeo ejemplo es cuando nos piden que mostremos un carcter cinco o hasta ms veces, para no repetir la misma instruccin se utilizan este tipo de sentencias iterativas. Sentencia Iterativa While

Esta sentencia es la ms sencilla de utilizar, se basa en que la condicin empleada sea verdadera, y en el caso de lo contrario, se termina y sale de la sentencia. Su sintaxis es la siguiente:

16
While (condicin) { Sentencia1; Sentencia2; Sentencia3; }

Hasta que termine por un negativo o falso (false), tenemos que procurar que la sentencia termine en algn momento, de lo contrario terminara nunca, lo cual se denota bucle infinito. Sentencia Iterativa do While

En este tipo de sentencias, primero se realiza la accin para luego confirmar la condicin dada. La sintaxis es de la siguiente forma:
Do { Sentencia1; Sentencia2; Sentencia3; } While (condicin);

Sentencia Iterativa for

En las sentencias previas, podramos avernos dado cuenta que en aquellas sentencias no sabamos el nmero exacto de ciclos que dara. En este tipo de sentencia (for), se utiliza especficamente cuando sabemos cuantos ciclos deben efectuarse antes del trmino del ciclo. La sintaxis es la siguiente:
for (tipo_de_valor nombre_variable = valor_varible; nombre_variable operador nombre_variable1; nombre_variable operador)

Un pequeo ejemplo:
for (int cph = 69; cph <= 0; cph--) { System.out.print ("Esto se mostrar 69 veces"); }

Sentencias de Seleccin

17

Este tipo de sentencias se diferencia, ya que en estas se dedican a la comparacin de variables. Un ejemplo de esto, es el famoso semforo, que haceis si la luz da rojo ?, nos detenemos o seguimos depende del criterio de cada uno, aunque lo lgico y prudente es detenerse, Si el semforo da luz roja, detenerse, de lo contrario seguir. Sentencia de Seleccin if-else

El significado de esta sentencia se denota en si pasa algo hacerlo, sino hacer otra cosa. Sintaxis:
if (condicin) { Sentencia1; Sentencia2; Sentencia3; ] Else { Sentencia1; Sentencia2; }

Un pequeo ejemplo de ello es:


if ( x % 4 == 0 ) { if ( x % 100 == 0 ) { if ( x % 400 == 0 ) { System.out.println("Es bisiesto");

} else { System.out.println("No es bisiesto"); } } else { System.out.println("Es bisiesto"); } } else { System.out.println("No es bisiesto"); }

18

Sentencia de Seleccin Swith

Este tipo de sentencias se dedica a estructurar todas las sentencias de seleccin mltiple. Swith trabaja evaluando cada tipo de expresin, y el intrprete busca las variables con el valor correspondiente. En el caso de encontrar dicha variable la ejecuta, hasta el momento de encontrarse con una quebradura (break) del programa. Si no encuentra variable con la cual evala la expresin buscar por defecto una variable llamada default (opcional). Sintaxis:
Swith (expresin) { Case constante1: Sentencia1; Break; Case constante2: Sentencia2; Break; Default: Sentenciad; }

Fijaros que en el momento de la condicin se denota con comillas simples ( ), y terminando con dos puntos ( : ), al contrario de las sentencias que tienen la terminacin del punto y coma ( ; ). Un ejemplo sencillo sera una calculadora.

Clases y Objetos
By WaesWaes Antes de empezar se debern definir unos conceptos para poder entender las definiciones de clases y objetos Variable: espacio de la memoria reservado para almacenar u valor que corresponde a un tipo de dato soportado por el lenguaje de programacin, una variable, SIEMPRE es representada y utilizada a travs de una etiqueta que se le asigna que esa etiqueta va a ser nica de eso dato. Es una variable encontraremos
tipo_de_dato etiqueta = tipo_de_dato

hay cuatro tipos de datos: numricos, lgicos, alfanumricos y alfabticos

19

Numrico
int numero = 5; long numeros = 5;

Lgico *estas en especial vas a reflejar dos estado (verdadero o falso)


boolean resultado = false; boolean gane = true;

Alfanumricos
String nick=jose23;

Alfabticos
String nombre = jose;

Constante: tipo de dato que no puede cambiar su valor. ejemplo: pi Ente: algo que tiene asociada una simbologa para poder describirlo. Para que quede ms claro voy a comentar un ejemplo que vi en una Web Por ejemplo, a travs de una palabra podemos tener una idea de aquel concepto, si n embargo habr una diferencia entre su verdad (lo que creemos sobre el concepto) y su realidad (lo que nos rodea) Para ser ms especficos, si yo digo "Marte" lo ms probable es que visualice el planeta rojo con sus caractersticas especificas, etc. (su verdad) sin embargo seguramente "Marte" es distinto a lo que ustedes visualizaron (su realidad). Sin embargo por algo visualizaron el otro planeta similar, porque "tiene asociada una simbologa para poder describirlo." Abstraccin: es la comprensin que se tiene de un ente. Por ejemplo, yo al decir Marte, uno se puede imaginar un planeta, otro un pedazo de roca, otro el color rojo, etc. sin separar la diferencia entre nuestra verdad y su realidad, la abstraccin son puras verdades. Caracterstica funcional: define todo lo que hace un objeto. Esto es algo muy importante, tomemos como ente un auto sus caractersticas funcionales serian encender, avanzar, acelerar, frenar, parar (entre otras)

20

Atributos: caractersticas propias Mtodos: caractersticas funcionales Objeto: abstraccin acotada de un ente en base a sus caracterstica, en funcin de un propsito claro y un punto de vista definido. Cabe destacar que hay diferencia entre abstraer un ente de distintos puntos de vista Por ejemplo, las caractersticas del mbito funcional de una computadora seria la cantidad de memoria ram, rom, cache, microprocesador, etc En cambio del punto de vista comercial lo que importara seria, el precio la cantidad de stock, la compra y venta, etc Por eso es que el punto de vista es muy importante. Segn sea la abstraccin y manteniendo sus caractersticas propias un objeto se puede descomponer en un conjunto de objetos. Por ejemplo el objeto "computadora" se puede descomponer en (placa medre, hdd, fuente, lectora d e CD) en este caso "computadora" seria el objeto padre y los dems serian hijos, y tambin si necesitamos mas detalles podramos descomponer un objeto hijo por ejemplo "placa madre" (zcalo cpu, sw1, sw2, bateria, usb, IDE1, IDE2) A la hora de describir u objeto hay que terminar abriendo y cerrando parntesis, no puede hacer espacios, no se puede empezar con maysculas, no se pueden poner acentos
ejemplo: placaMadre()

Clase: conjunto de atributos y mtodos asociados a la abstraccin de un ente. Recordando siempre cual es el punto de vista por ejemplo si la clase es un revolver
clase: revolver Disparar() *cantidad de balas Cargar() *capacidad de cargador PonerSeguro() *estado del seguro

Ese es un ejemplo simple para que se den mas o menos cuenta Herencia: metodologa de clases, para que una clase hija herede caractersticas y mtodos de clase padre.

Ingreso y Despliegue de Datos

21

Tenemos que mencionar que todos los programas basados en JAVA sern manipulados por la clase System, que pertenece a la librera java.io.* (entrada de datos)...
para importa un paquete (package), usaremos import, y en este caso java.io.*, por la razn que por el momento no nos interesa saber de donde pertenece la libreria exacta que hace la entrada de datos

System.in, representa la entrada standart System.out representa la salida de datos BufferedReader (es la clase que usaremos para la lectura de los datos) Ahora veremos, como hacer que el programa "ingrese los datos"...
InputStreamReader isr = new InputStreamReader (System.in); BufferedReader br = new BuffereReader (isr);

Leamos un poco, para comprender lo que dice... Haremos una clase InputStreamReader es quien a groso modo, el ingreso de datos, ya que transforma un bytes a lnea de carcteres, los lee y los decodifica... sacando conclusiones: Se crea una clase InputStreamReader isr (se le puede dar cualquier nombre, yo le pongo isr, para que no se olvide que lo que se crea), de una nueva clase InputStreamReader, que hace el ingreso de datos desde System.in... BufferedReader, ms que todo lee el texto que es ingresado, y al igual que la l nea anterior, se lee... Se crea una clase BufferedReader br (cualquier nombre), de una nueva clase BufferedReader desde isr (InputStreamReader)... Ahora, esto se me ocurrio, analizando un poco todo esto, y gracias a Plaga, la duda fue concluda de buena forma...
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));

Esto se puede leer de la siguiente forma: Se crea una clase BufferedReader llamada br, de una clase BufferedReader desde InputStreamReader llamado desde System.in (De esta forma leemos los datos y se ingresan) Ahora cmo debera quedar el programa ? El Mtodo Main public static void main(String[] args)

22

public y static son modificadores de main. - El metodo main no devuelve nada indicado por void. - El metodo main tiene identificador "main". - El metodo main acepta cero o ms objetos de tipo String, se puede enviar desde la linea de comando valores a ser ocupados en el main.
import java.io.*; public class nombre /* Cuidado he aqu donde tenemos un poco de cuidado * si el nombre es distinto al archivo saldr un error de clase * en la compilacin del programa */ { public static void main(String[] args) { BufferedReader br = new BufferedReader (new InputStreamReader (System.in)); // Aqu todo lo dems del cuerpo del programa.. } }

Ahora que entendimos esta pequea parte del code, podemos seguir avanzando... Para que ingrese los datos y quede en la memoria:
System.out.print // todo el code se pondr al costado System.out.println // todo el code har un salto de carro

Ahora que sabemos como es el asunto, veremos para que los datos queden en memoria..
tipo_de_dato = Integer.parseInt(br.readLine());

Explicando un poco este code, es de la siguiente forma: El tipo_de_dato ser ledo desde el Buffer, para ser guardado como un tipo entero (en este caso). Ahora debemos de pensar una pequea cosa, el programa lo manejar el usuario, y como siempre si al usuario se le dice ingresa un nmero, el usuario ingresa una letra... entonces debemos de estar preparados para errores, y para esto ocuparemos las famosas sentencias try & catch...

try & catch


try { // code } catch (Exception e) { // code de la excepcin }

23

Las Excepciones se usan en el caso de error, ya sea de una transformacin de un dato hacia otro o en el caso de un error 0 ( , Error de Usuario)

Todo nuestro code debe estar dentro de try... ya que intentamos realizar algo... En el caso de catch, es todo lo que en el caso de error... Ahora chequemos el code, como estara quedando..
import java.io.*; public class nombre { public static void main(String[] args) { BufferedReader br = new BufferedReader (new InputStreamReader (System.in)); try { // nuestro programa } catch (Exception e) { System.out.println("Error"); } } }

Arrays
Vectores Los Arrays son un mtodo para guardar un conjunto de objetos de una misma clase, existen distintos tipos de Arrays, ya sean Unidireccional o Multidireccionales. Un Arrays o Arreglo, comienza en un ndice 0 y el ltimoi se debe denotar n -1... n == dimensin de Arrays. Primero debemos saber cmo se declara y crea un Arrays en JAVA, y se realiza de la siguiente forma:
tipo_de_dato[] nombre;

el tipo_de_dato, ya sea int, float, double, entre otros... los corchetes ( [] ), quieren decir que es la seccin de memoria a utilizar, y el nombre del Arrays... La forma de declaracin del Arreglo, cmo podra ser, sabiendo esto, y que se debe realizar un nuevo tipo de dato?... Para los que pensaron antes de continuar, bien... ... sera de la siguiente forma:
tipo_de_dato[] nombre = new tipo_de_dato [x];

24

Donde x, es la seccin de memoria a utilizar el Arrays... Se entiende o voy muy rpido ? Si voy muy rpido aqu os dejo una pequea explicacin de un Arreglo de 10 posiciones... 0 1 2 3 4 5 6 7 8 9 --> Seccin de Memoria del Vector 9 8 7 6 5 4 3 2 1 0 --> Datos de cada seccin de Memoria del Vector Cmo he dicho un vector comienza en un ndice 0 (cero), y no en 1, entonces un vector de 10 posiciones llegar hasta el nmero 9, estamos de acuerdo con ello ?

Operaciones Bsicas de un Arreglo


Definir el Arreglo Realizar un recorrido Ingresar datos al Vector Sacar los datos del Vector

Ok!... Ya sabemos como definir el vector:


tipo_de_dato [] nombre_vector = new tipo_de_dato [10]

Ahora cmo recorremos el vector??... Podra ser con una accin repetitiva (Ciclo), armando ndices... Lo recorreremos con un ciclo, en este caso un While:
While (i<=9) { System.out.print (nombre_vector[i]); i++; }

En el caso de un for
for (i=0;i<=9;i++) { System.out.print (nombre_vector[i]); }

Ok!... ya sabemos como declara y crear un arreglo, sabemos como recorrer un arreglo, falta ingresar datos al arreglo y mostrarlos...

25

Aunque creo que solo pensar un poco, podemos sacar nuestras deducciones no creen Tarea 2...

...

Crear un programa en JAVA, que permita llenar un vector de 100 posiciones con numeros aleatorios entre 0 y 100, luego indique cual es el que ms se repite y cuantas veces se repite.

Ejemplo de Vectores
by Plaga
public class Arreglo { public static void main(String[] args) { int i=0; int vector[] = new int[5]; while (i<=4) { System.out.print (vector[i]); i++; } System.out.print ("\n"); i--; while (i >= 0) { System.out.print (vector[i]); i--; }

Arrays
Matrices Ya vimos una parte de Arrays (vectores), como bien dijo WaesWaes son Unidireccionales, esto quiere decir que solo van en una direccin... ahora pensemos.... que pasa si quiero que se dirijan en dos direcciones (bidireccional)... Aqui entra el tema de Matrices... En forma grfica una Matriz es de la siguiente forma:
00000 00000 00000 00000 00000

26

En aquel ejemplo podemos visualizar una Matriz de 5 x 5... fcil o no La forma de inicializar una Matriz es la misma que inicializar un Vector, con la nica diferencia que utilizaremos dos variables
Tipo_de_dato [] [] nombre_matriz = Tipo_de_dato [variable_1][variable_2];

La forma de recorrer dicha Matriz, es recorriendo cada uno de las filas y columnas que utilizaremos...
for (int fila = valor; fila (Operador) valor; Operador) { for (int columna = valor; columna (Operador) valor; Operador) { /* Trozo de cdigo * a recorrer en la Matriz */ } }

Ahora realizaremos la misma matriz como programa en s en JAVA


public class Matriz { public static void main (String[] args) { int i=5, j=5; int [][] matriz = new int [i][j]; try { for (i = 0; i < 6; i++) { for (j = 0; j < 5; j++) { System.out.print (matriz[i][j]); System.out.print (" "); } System.out.println (" "); } System.out.print (" "); } catch (Exception e) { } } }

27

Mi primera Clase, Objetos y Mtodos


Sintaxis:
Tipo_de_clase tipo_de_dato nombre_clase (parmentros)

Por ahora en Tipo_de_clase nos centraremos en public o private... claro o no public... se puede utilizar desde cualquier Clase... private... solamente se puede utilizar desde la Clase...

...

tipo_de_dato, son todos aquellos que hemos visto... boolean, String, double, etc... nombre_clase, obviamente es el nombre del mtodo parmentros, son todos aquellos parmetros que se pueden entregar al mtodo... Ok!... veamos un pequeo ejemplo... , algunos dirn: "Otra vez esta clase"... xD, pero creo que es la mejor para poder explicar este asunto de mtodos
import java.lang.Math; public class punto { public double x; public double y; public punto() { x = 0; y = 5; } public punto (int a, int b) { x = a; y = b; } public double obtenerx() { return x; } public double obtenery() { return y; }

28
}

Algo nuevo de lo que no hayamos visto


import java.lang.Math;

... quizs en algunas lneas... pero todas conllevan a esta:

Es la libreria que tiene JAVA para las operaciones Matemticas complejas... un poco de estudio de esta libreria no les hara mal... http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html Ahora si este cdigo lo hacemos funcionar en JCreator, har lo que es NADA... Sin embargo si lo hacemos correr en un programa llamado BlueJ, vern algunas diferencias al intentar ejecutar los mtodos... eso es una tarea para todos... Pero si quiero hacerlo funcionar en JCreator ... simplemente tenemos que crear un mtodo llamado main (funcin principal), y desde ah llamar a todos los mtodos que deseamos calcular... Un pequeo ejemplo:
... public static void main (String[] args) { punto p = new punto(); System.out.print ("Obtenemos X: " + p.obtenerx()); System.out.print ("\nObtenemos Y: " + p.obtenery()); } ...

Si se fijan en este trozo de cdigo hay algo nuevo...


punto p = new punto();

Aqui hacemos referencia a que la clase punto llamar un objeto de esta clase que se denominar p, y de esta forma lo crea... por ello el new (debe utilizarse al momento de crear objetos)...

La verdad no se como estoy explicando esto... si hay dudas no dudeis en preguntar

29

Ahora crearemos un nuevo mtodo para la clase punto... qu har este mtodo la distancia entre ambos puntos.
public double distancia (double x2, double y2) { xx = (double)(Math.round (Math.sqrt((Math.pow(x2-x,2))+(Math.pow(y2-y,2))))); return xx; }

... simplemente calcular

Para hacer el ingreso de este mtodo al mtodo main, sera de la siguiente forma:
public static void main (String[] args) { double x = 23; y = 34; punto p = new punto(); System.out.print ("Obtenemos X: " + p.obtenerx()); System.out.print ("\nObtenemos Y: " + p.obtenery()); System.out.print ("\nLa distancia entre los puntos x e y son: " + p.distancia (x, y)); }

Espero todo se est entendiendo de la mejor forma posible...

aunque tengan en cuenta que si no ponen de su parte no se puede avanzar cada vez ms...

Ya estaramos comenzando a entender esto de Clases, Objetos y Mtodos... tengan en cuenta que no es llegar y entender este capitulo, conlleva un poco ms de estudio que los otros captulos... sin embargo cuando se toma el ritmo ser lo ms fcil que exista... Veremos como queda el programa completo:
import java.lang.Math; public class punto { public double x; public double y; public punto() { x = 0; y = 5; }

30
public punto (int a, int b) { x = a; y = b; } public double obtenerx() { return x; } public double obtenery() { return y; } public double distancia (double x2, double y2) { xx = (double)(Math.round (Math.sqrt((Math.pow(x2-x,2))+(Math.pow(y2-y,2))))); return xx; } public static void main (String[] args) { double x = 23; y = 34; punto p = new punto(); System.out.print ("Obtenemos X: " + p.obtenerx()); System.out.print ("\nObtenemos Y: " + p.obtenery()); System.out.print ("\nLa distancia entre los puntos x e y son: " + p.distancia (x, y)); } }

Y ah tenemos nuestra primera clase lista!... CHR0N05!... que pasa si deseo crear una nueva clase y llamar a los mtodos de la clase punto completamente igual... realizar el constructor crear el ojeto y llamar a los mtodos que se requieran (siempre y cuando se pueda)... Tarea!... Modificar esta clase, incluyendo los siguientes mtodos: Calcular el rea de los puntos Calcular el perimetro de los puntos ... es

31

Crear una nueva clase llamada recta, que contenga los siguientes mtodos: Otener la pendiente Interseccin del Eje X y del eje Y

ArrayList
http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html Anteriormente vimos Arrays o Arreglos, tanto Uni como Bidireccionales, que solamente podan almacenar un solo tipo de datos y tenan un tamao finito. En esta ocasin veremos ArrayList, que puede almacenar cualquier tipo de datos y contiene un tamao infinito. Para utilizar ArrayList, necesitaremos de la Clase java.util.ArrayList
import java.util.ArrayList;

En esta pequea clase crearemos una pequea Agenda


import java.util.ArrayList; public class Agenda { }

Que deberiamos hacer despus ??... declarar las variables no es as ?


public String Nombre; public ArrayList Notas; // Anotaciones, Citas, Como se les diga

Nuestro constructor
public Agenda (String Nom) { Nombre = Nom; Notas = new ArrayList(); }

Como pueden ver, se pedir solo un Atributo para crear una Agenda, que en este caso sera N om, que ser equivalente al Nombre, y creamos un nuevo Objeto de la clase ArrayList() con una capacidad inicial de 10 valores y con el nombre de Notas.

32
NOTA: ArrayList() = Capacidad inicial de 10 ArrayList(Collection c) = Los elementos de una Coleccin en espefcica ArrayList(int InitialCapacity) = Una capacidad Inicial determinada por el Programador

En esta Agenda solo agregaremos nombres y notaciones, ahora debemos pensar: Debemos crear un mtodo ... la respuesta es si

Este mtodo nos deber volver algn valor ... no, la respuesta es porque este mtodo solo agregar valores al Vector, entonces utilizaremos void, Pedir algn atributo Nota. , si, porque nuestro constructor nos dice que tendremos un Nombre y una Cita o

public void agregar(String Anotaciones) { Notas.add(Anotaciones); }

Notas.add(Anotaciones), se debern estudiar la clase que puse arriba de este capitulo rasgos aade una Anotacin al Vector. Como va nuestro programita
import java.util.ArrayList; public class Agenda { private String Nombre; private ArrayList Notas; public Agenda(String Nom) { Nombre = Nom; Notas = new ArrayList(); } public void agergar(String Anotaciones) { Notas.add(Anotaciones); } }

pero a grandes

Bien, solo nos faltara crear el mtodo main para que pida los valores necesarios para insertar valores al Arreglo.
public void main (String [] args) throws IOException { BufferedReader br = new BufferedReader (new InputStreamReader (System.in));

33
Agenda ag = new Agenda(Nombre); System.out.print ("Ingrese Nombre: "); String Nombre = br.readLine(); System.out.print ("Ingrese Notas: "); String Anotaciones = br.readLine(); ag.agregar(Anotaciones); }

Creo que a estas alturas ya es un poco ilgico que explique esta parte del cdigo... aun asi le explicar. ..
Agenda ag = new Agenda(Nombre);

Crea un nuevo objeto de la clase Agenda.


ag.agregar(Anotaciones);

Agrega las Anotaciones antes escritas.

Sobrecarga
En este hilo, veremos lo que es Sobrecarga... Primeramente, debemos tener en cuenta las clases y mtodos constructores...
public class MiClase { MiClase() { .... } }

De esta forma el mtodo constructor se denota:


MiClase objeto = new MiClase();

Ahi tenemos un mtodo constructor no es asi ??... bueno, la sobrecarga consiste en realizar el mismo

34

mtodo pero con atributos totalmente distintos...


public class MiClase { MiClase() { .... } MiClase(int a, int b) { .... } }

De esta forma es totalmente vlido realizar


MiClase objeto = new MiClase(); MiClase objeto = new MiClase(29,30);

La diferencia parte en la entrega de parmetros Se entiende ??... Espero que si... , esta parte de la programacin es bastante fcil de entender asi que no veo la complicacin del pequeo ejemplo... Ahora un ejemplo real:
import java.io.*; pulic class MiClase { private int a, b; MiClase(int a, int b) { this.a = a; this.b = b; } public int suma(int a, int b) { return (a + b); } public double suma (double a, double b) { return (a + b); } public void main(String [] args) throws IOException { BufferedReader br = new BufferedReader (new InputStreamReader (System.in)); System.out.print ("Ingrese primer numero: ");

35
int a = Integer.parseInt(br.readLine()); System.out.print ("Ingrese primer numero: "); int b = Integer.parseInt(br.readLine()); MiClase obj = new MiClase(a,b); System.out.print ("La suma de los nmeros es: " + obj.suma(a,b)); } }

Espero haya quedado bastante claro... Tarea: Hacer la misma operatoria con double y float... Saludos

Herencia
Que es lo primero que se les viene a la mente cuando se habla de herencia ...

Prcticamente Herencia se suele recurrir cuando un hijo hereda de su padre alguna caracterstica en especial... o casi todo... En JAVA no es distinto... pero tendremos clases hijos que heredan de la clase padre... Cuando mi profesor, nos explic el concepto de Herencia... fue bastante fcil... y la prctica an ms... xD Tomar en cuenta que ahora ya saben crear Clases, Mtodos y Sobrecarga... Asi un ejemplo bsico de una clase con mtodos a utilizar...
public class resultado { private double x, y; private String op; public resultado(double x, double y, String op) { this.x = x; this.y = y; this.op = op;

36
} public double valor() { double res = 0; if (op.equals("+")) { res = (int)x + (int)y; } if (op.equals("-")) { res = (int)x - (int)y; } if (op.equals("*")) { res = x * y; } if (op.equals("/")) { if (y != 0) { res = x / y; } else { System.out.print ("No se puede realizar la operacion"); } } return res; } }

Que hace este trozo de cdigo corresponde... Dificl ??...

... simplemente pide dos variables y una operacin, y hace lo que

Hasta aqu nada nuevo no es asi ??... Ahora si os piden agregar un nuevo nmero y otra operacin... que haceis ??... super fcil CHR0N05!!!... se agregan nuevas variables... Esa respuesta es totalmente vlida... pero harn lo mismo si en un "x" caso les piden hasta 20 nmeros ??... :S.. no creen que es demasiado engorroso ...Para que modificar una clase si lo que podemos hacer es llamar a esa clase y agregar ms valores sin necesidad de modificarla ??... Bueno aqui es donde entra nuestro gran concepto de herencia (que utilizaremos en todos los programas de ahora en adelante)... Personalmente conozco dos formas de heredar una clase... extends e import... extends
Tipo_clase nombre_clase extends clase_padre

37

public class resultado2 extends resultado

Ms claro que el agua imposible... import


import nombre_clase import resultado

import generalmente se utiliza cuando la clase est dentro del proyecto o no (carpetas) Ahora un ejemplo practico
public class resultado2 extends resultado { private double z; private String op2; public resultado2(double x, double y, String op, double z, String op2) { super(x,y,op); this.z = z; this.op2 = op2; } public double valor1() { double res = 0; if (op2.equals("+")) { res = (int)valor() + (int)z; } if (op2.equals("-")) { res = (int)valor() - (int)z; } if (op2.equals("*")) { res = valor() * z; } if (op2.equals("/")) { if (z != 0) { res = valor() / z; } else { System.out.print ("\r\r\rNo se puede realizar la operacion"); }

38
} return res; } }

Dentro del todo el cdigo no creo que existan complicaciones, excepto las siguientes lineas:
public resultado2(double x, double y, String op, double z, String op2) { super(x,y,op); this.z = z; this.op2 = op2; }

Explicacin : Mtodo Constructor de la clase resultado2 Pide cinco atributos super(x,y,op) --> llama a los atributos de la clase padre para ser utilizados dentro de esta clase this.z = z --> Instancia un objeto dentro de la clase this.op2 = op2 --> Idem a "z"

Que nos falta por crear ??... aaa... el mtodo main()


import java.io.*; public class MAIN { public static void main(String [] args) throws IOException { BufferedReader br = new BufferedReader (new InputStreamReader (System.in)); System.out.print ("\nIngrese numero [1]: "); double a = Integer.parseInt(br.readLine()); System.out.print ("\nOperaciones [+] [-] [*] [/]: "); String op = br.readLine(); System.out.print ("\nIngrese numero [2]: "); double b = Integer.parseInt(br.readLine()); System.out.print ("\nOperaciones [+] [-] [*] [/]: "); String op2 = br.readLine(); System.out.print ("\nIngrese numero [3]: "); double c = Integer.parseInt(br.readLine()); resultado3 resu = new resultado3 (a,b,op,c,op2); System.out.print ("\nEl resultado de los dos primeros numeros es: " + resu.valor()); System.out.print ("\nEl resultado de los tres primeros numeros es: " + resu.valor1()); } }

39

Con este simple ejemplo de Herencia creo que ha de quedar claro, el para que, el como y el cuando se utiliza...

Fuente Original = http://www.portalhacker.net/index.php Post original = http://www.portalhacker.net/index.php/topic,73573.0.html

Potrebbero piacerti anche