lunes, 9 de mayo de 2011

Conclusiones:


Como ya lo habia dicho anteriormente, si yo como futuro programador, quiero aprovechar al máximo todas las posibilidades que nos ofrece JAVA, debo "enfrentarme" a lo que es la programación orientada  a objetos, y lo digo de esta manera, ya que debo admitir que al principio no fue sencillo, ya que a primera vista parecia mucho mas complicado que lo que yo ya habia visto en Visual Basic.

Sin embargo, despues de observar unos cuantos ejercicios sencillos, los cuales me fueron algo difíciles de conseguir, pude por fin entender el concepto y la estructura que se maneja en JAVA, y creo poder estar listo para realizar aplicaciones algo mas complicadas.

De esta manera puedo decir que en este corte he entendido y aprendido a aplicar los siguientes conceptos:


  • Qué es una clase.
  • Cuales son sus atributos.
  • Qué es un objeto.
  • Como crear un método.
  • Como instanciar un objeto.

Y por supuesto, aun tengo bastantes dudas, pero espero irlas aclarando a medida que siga desarrollando ejercicios.

POO y JAVA (Definición)

Objetos, Clases, Atributos, Metodos e Intanciación.

Entender la utilidad de la Programacion Orientada a Objetos en Java es fundamental si quiero seguir avanzando en este lenguaje de programación, por eso, a continuación expondre algunos de los conceptos y ejemplos que utilicé y desarrollé para enterder este tema.

Como ya lo sabemos la programación orientada a objetos consiste en la instanciación de métodos, desde otras clases creadas, hacia la clase principal (Main). Las clases son pedazos de códigos, que contienen sus propios atributos y métodos, lo cual conforma todo nuestro objeto que luego instanciaremos.

A continuación vemos un diagrama, en donde cada recuadro representa una clase diferente. En la primera parte de los recuadros vemos el nombre de la clase, luego sus atributos y por ultimo los métodos, los cuales toman los atributos para realizar una operación específica que puede que retorne un valor, o no.


Ejemplo de método:

Vemos en el ejemplo que declaramos un nuevo método float con el nombre de "suma". Seguido de esto, entre parentesis, vienen los parámetos, que en este caso son dos. Entonces, de esta manera el método sabra que lo que se va a realizar dentro de el tan solo consta de dos variables. Dentro del método podemos hacer cualquier operación o cálculo con estas variables dandoles un valor, sin embargo, aqui en el ejemplo, el método simplemente retorna  la suma de a y b.

Y aqui entonces vemos como ejecutamos este método. Vemos que entre parentesis están dos variables declaradas en la case Main. Estas variables han sido inicializadas por teclado por el usuario utilizando la clase Buffered Reader, pero de igual manera, dentro del parentesis puede ir cualquier valor que soporte nuestra variable.

Ejemplo de clase:

A continuación mostraré un pequeño programa el cual tiene como funcion calcular el área de un triangulo. Es un ejemplo bastante básico para que nos vayamos haciendo una idea de como funcionan las clases.


Entonces, aqui vemos por primera vez una clase completa, que pertenece a una clase principal (main). Vemos que tiene un nombre (operación), unos atributos (a,b), y un método (op_1). Dentro del método tenemos dos parámetros que serán retornados despues de haberse multiplicado. Este valor que retornará aun no lo conocemos.



Estamos aqui en la clase principal, en donde declaramos nuestras variables comun y corriente. Vamos a hallar el área de un triangulo, pero aqui no necesitaremos hacer ninguna operación, ya que esta se encuentra en el método, de la case "operacion". Lo unico que tendremos que hacer es instanciar el método, lo cual lo hicimos mediante la sentencia  "operacion objeto = new operacion();". Este es nuestro objeto, al cual he llamado "objeto", pero puede llamarse de cualquier forma.

Ya con esto podemos acceder a nuestro método. En la impresión tenemos la sentencia "System.out.print (objeto.op_1 (a,b));" en donde tenemos el nombre que le di al objeto, seguido del nombre del método,  y por ultimo tenemos los dos valores ingresados por el usuario, que son los mismos que está esperando nuestro método.

Al ejecutarlo se vería así:


Con este ejemplo entonces he podido comprender los conceptos de Clase, Atributos, Método, Instanciación y Objetos, y podré aplicarlo a problemas mas complejos.

sábado, 2 de abril de 2011

Matrices

Arreglos Bidimencionales (Matrices):

Al igual que los vectores, son colecciones de datos, con la diferencia de que estos cuentan con filas y columas. Para declarar un arreglo de dos dimensiones se utiliza el siguiente formato:

Tipo  Nombre  [][] = new  tipo  [Numero de renglones] [Numero de columnas]

Podemos ver que su sintaxis es bastante similar a la de un arreglo unidimensional, con la diferencia que este nos deja dos campos para ingresar el tamaño. El primero determinará el número de filas y el segundo el número de columnas que tendrá el arreglo. De la misma manera, estos valores tambien pueden ser ingresados por teclado por parte del usuario.

Para recorrer el arreglo, como tenemos dos tamaños diferentes, tenemos que hacerlo mediante dos "for" anidados, de la siguiente manera:

for (a=0; a<Nombre.lenght;a++)
{
     for (b=0;b<Nombre.lenght;a++)
    {


    }
}

Vemos entonces que los "for" nos marcará las posiciones en donde se ingresarán los datos. Comienza primero por los valores 0,0, luego 0,1 y asi hasta que el segundo for llegue al tamaño de las columnas que asignamos. O sea que si asignamos 8 columnas, el for llegará hasta 8 dejandonos en la posicion 0,8. Luego de que este "for" se cumpla, el primer for incrementar, dejandonos en la posición 1,0 y así sucesivamente.

Y así nos va quedando una matriz o arreglo bidimencional.

Arreglos en Java

Es un grupo de posiciones en memoria del mismo tipo y tienen el mismo nombre. Podemos encontrar arreglos Unidimencionales o vectores, y arreglos bidimencionales, o matrices. Comenzaré  explicando como crear un arreglo sencillo.

Sintaxis:

Tipo  Nombre [] =  new  Tipo  [Tamaño]

Int Arr [] = new int [10]


Int Arr [] = {1,2,3,4,5,6,7,8,9,10};


Vemos que primero asignamos el tipo de arreglo, luego el nombre del arreglo. Entre corchetes vamos a colocar el tamaño del arreglo. Esto quiere decir, el número de espacios en memoria que dispondrá el arreglo.

Para este caso, asignamos el tamaño y los valores del arreglo manualmente, sin embargo, tambien pueden ser ingresados por teclado por parte del usuario.

Los arreglos se recorren a través de ciclos repetitivos que van hasta la misma longitud del arreglo.

Ejemplo de un arreglo unidimencional (vector):

Metodos en Java

Los metodos son segmentos de codigo que cumplen una funcion espesifica dentro de una aplicacion. Podemos elegir si deseamos retornar un valor especifico o que no retorne ningun tipo de dato.

Se recomienda que las lineas de codigo sean lo mas precisas posible para que la depuración del programa sea mas rápida y que el nombre del metodo tenga que ver con su funcion.

Para el siguiente ejemplo, vamos a crear un sencillo metodo en el cual se sumarán dos variables:

Class metodo
{
int  a=8
int b=4


Int ejemplo()
{
Return a+b;
}
}

Para este caso, el nombre de la case sera "metodo". Creamos dos variables de tipo entero y las inicializamos con un valor específico. "ejemplo" será el nombre de nuestro metodo  y dentro del parentesis irán los argumentos o parametros de entrada.

En este caso, como queremos que nuestro metodo retorne un resultado, utilizamos la palabra reservada "return" y luego de ella, la operacion que queremos que realicen las variables que declaramos.

Luego hay que instanciar el objeto que deseemos de nuestra clase metodo creada. Para esto creamos una variable personalizada en nuestro proyecto:

{
metodo met= new metodo ();
System.out.print (met.ejemplo());
}

En este caso nos retornara la operacion que pusimos en nuestro metodo "ejemplo".

Estructuras de Control

Selectivas:

Estas estructuras son bastante similares, aunque tendremos que decidir cual utilizar dependiendo del caso.

For: Realiza un ciclo repetitivo hasta que la variable alcance determinado valor:

       for (int a = 0, a < 10, a++)

While: Realiza un ciclo repetitivo mientras una condicion se siga cumpliendo:

           while (x < 10)


Do While: Similar al While. Se diferencia en que este primero ejecuta la acción y luego mira la condición.


                 do
                 {
                    suma = suma + x;
                    x++;
                    }
                    while (x < 10);
                    }

Programa con un ciclo repetitivo:


Condicionales:

If: Ejecuta una accion dependiendo si se cumple una condicion  o no:

     if (a==0)
    {
    a= a +1
    }

Case: Similar al if, solo que este nos será bastante util para cuando hayan varias condicionales. Nos será mucho mas efectivo que utilizar un "if" para cada condicion.

Swithc: Funciona como un menu para el usuario, en el que dependiendo de la opcion que el seleccione, el programa ejecuta una accion.



La Sintaxis empleada por un switch es la siguiente: 


switch (variable)  { 
     case <posible valor> : Instrucciones ; break;
     case <posible valor> : Instrucciones ; break;
     case <posible valor> : Instrucciones ; break;
     case <posible valor> : Instrucciones ; break;
     case <posible valor> : Instrucciones ; break;
     default : Instrucciones ; 
}



Programa con una condicional:


Lectura de Datos


Para ingresar datos a Java por medio del teclado es algo diferente a lo que nosotros habiamos visto en visual basic, ya que en Java hay que importar librerias, y ademas instanciar algunos elementos, para que el programa sepa que estamos esperando un dato que va a ingresar el usuario.

Adicionalmente en Java, todo caracter ingresado por teclado, el programa lo toma como texto o tipo "char" asi que debemos convertirlo al tipo de dato que queremos manejar.

Los objetos System.in y System.out

Para el ingreso de datos se utiliza el elemento System.in, que es una instancia de la clase InputStream. Para la salida de datos se utiliza el objeto System.out, que pertenece a la clase PrintStream, el cual imprime el texto en pantalla.

Para leer los caracteres introducidos por el usuario por medio del teclado se conecta el objeto System.in con el objeto de la clase InputStreamReader. Esta conexion se realiza mediante la siguiente sentencia:

BufferedReader in = new BufferedReader (new InputStramReader(System.in));

Para capturar el caracter y convertirlo al tipo de dato que deseamos se utiliza lo siguiente:

Si tenemos una variable int a, entonces:

a= Integer.parseInt (in.readLine());

Si tenemos una variable float b, entonces:

b= Float.parseFloat (in.readLine());

Y asi dependiendo del tipo de dato.


Programa que incluye la lectura de datos:

Clic en la imagen para agrandar.