Monday, August 19, 2013

Java a lo Maracucho, Capitulo 2

Referencias:

Capitulo 2


Metas del capitulo


  • Aprender  acerca de las variable
  • Entender el concepto de las clases y los objetos
  • Poder llamar metodos
  • Aprender acerca de los parametros y los valores del resultado
  • Entender la diferencia entre objetos y la referencia de los objetos
  • Escribir programas que muestren formas simples

Los programas de hoy en dia son complejos y a su ves genialmente diseñados de una forma simple y eficiente. El estudiar programacion es para todos, no significa que uno va a llegar a las grandes ligas, pero te da trabajo y es necesario aprender en un mundo donde la informacion esta al alcance de todos.

Por lo mismo, lo que haga aqui es mas que todo personal, una forma de aprender acerca del lenguaje Java, ademas a recuperar lo aprendido en la universidad, traduciendo los capitulos del libro Big Java, indagando un poco sobre las definiciones y de donde vienen, entre otras referencias, por el simple hecho de que la informacion es nuestra herramienta para poder armar una sociedad mas humana y menos salvaje.

2.1 Que es un objeto?

http://docs.oracle.com/javase/tutorial/java/concepts/object.html

Los Objetos son la clave para entender la programacion orientada por objetos. Todo en si es un objeto: un carro, un payaso, un tiburon, una bicicleta.

Todos los objetos comparten dos caracteristicas: el estado, por medio el cual se diferencian entre los demas objetos, por ejemplo; un payaso tiene pintada la cara, es un artista, de la especie humana, etc. con un comportamiento, pues nos hace o llorar o reir, canta, baila, come, duerme, etc .

para implementar tal ejemplo y saber que estado o comportamiento tiene cada objeto se puede preguntar antes de diseñar un programa. cuales son los atributos o estados que quiero que tenga el programa? y que quiero que haga el programa? por ejemplo; un semaforo, tiene tres luces, esta en una calle. su comportamiento: prende cada luz por tiempo, necesita energia, y a las 12 am empieza a titilar.

Para la programacion, el estado del objeto se guarda en las variables o campos, y expone su comportamiento por medio de los metodos o funciones. Los metodos operan dentro del estado interno del objeto y sirven como mecanismo primario para la comunicacion entre objeto-a-objeto.

OJO, con el tiempo esta definicion tendra bastante relevancia en la practica.

Escondiendo el estado interno y requiriendo que toda interaccion sea trabajada a traves de los metodos del objeto es comunmente llamada encapsulacion de los datos. -un principio fundamental para la programacion orienada en objetos.

El atribuir estados al programa, como el numero de velocidades de un carro o moto, etc, le da la capacidad al caomportamiento, atraves de los metodos, de cambiar sus velocidades mientras sea intruida hacerlo.

2.2 Variables

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

Los objetos guardan sus estados en los campos o variables, dependiendo del programa o del diseñador.

int velocidad = 0;
string luz = "verde";

Cuando se crean variables, o campos, se deben iniciar y declarar, sea con una caracteristica nula o con lo que el programador quiera que tenga como estandar.

Las variables o campos tienen varios usos y varios tipos, cada uno importante saber de donde vienen y saber su terminologia.

2.2.1. Tipos de Variables


http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

  • Variable de instancia(Campos No-estaticos ): son las variables o los campos unicos a cada instancia de la clase, independientes de otras clases. Variables que cambian por cada vez que se usa la clase para cada tipo de instancia o objeto similar, se vera cuando se trabaje con las herencias, recurciones, etc.
  • Variables de Clase(Campos estaticos): variables unicas de la clase, variables que a pesar de que las clases sean iniciadas, permaneceran iguales, dado si estado iniciado. Las variables estaticas pueden ser constantes cuando ademas estan definidas con la palabra reservada final usada para datos constantes. pi, entre otros.
  • Variables locales: son aquellas iniciadas dentro de los metodos, para poder trabajar con una libertad independiente dentro de los metodos. ejemplo;  la variable que cuenta.
  • Parametros: las variables tambien estan dentro de los parametros, como la de args eso es una variable iniciada, o la del for loop (int i = 0; i<10; i++) aqui "i" esta iniciada y todo.

El como nombrar a una variable tiene importancia para el programador como para quien tenga que trabajar en el futuro con el programa. Por lo general se nombran las variables por el atributo que vayan a hacer, y lo mas corto posible, SIEMPRE, comenzando por letra pequeña. Si esta compuesta por dos palabras, la primera pequeña, la segunda mayuscula.

Para un atributo como el de calcular el numero de veces que Cabrera se embaso, uno puede crear una variable similar :

Primero el tipo de variable, en este caso "int", luego el nombre de la variable:

int basesCab = 0;

Se inicia con 0 porque al comienzo Cabrera tenia 0.

Para las constantes es importante que todas sean capitulizadas.

Pl numero constante de algo.

int NUM_VEL = 6;

Las letras mayusculas al comienzo se escriben para diferenciar las clases de las variables, solo para que el programador sepa cuales son.**pero con el tiempo se vera porque.

2.3 Tipos de asignacion para las variables


Para aprender sobre cualquier lenguaje es recomendable saber sobre su terminologia. En este caso aprender sobre los conceptos de los tipos de datos que se van a manejar o manipular, sus variables o variables y su asignacion o tarea.

Un programa de computadora procesa valores: numeros, "strings"o cuerdas, y datos mas complicados. Cada dato tiene un tipo.

Los tipos espeficican la coleccion de valores o datos y las operaciones que pueden ser procesadas por los valores o datos.

Los tipos de datos de cuerda o  "string" son todos estos datos en forma de letras o palabras que forman una especie de cuerda o "string". Las cuerdas o "string" se diferencian en llevar comillas(""), dentro de las comillas el compilador las traduce como cuerdas o "string", por ejemplo; "Hola" es un string, pero Hola no lo es. Tienen que estar dentro de las comillas.

Otros tipos son de tipos de datos son los datos primitivos, de numeros, como el int y el double. El int son los famosos numeros enteros, pueden ser positivos o negativos, y los double, son aquellos que tienen fracciones
.

2.3.1  Tipo de Datos Primitivos para las variables


http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Las variables tipo de datos primitivos son todas aquellas que tienen numeros y cada tipo dato puede guardad una cantidad de bits en la memoria. Ya que el JVM asigna una serie de espacios en la memoria para que esos datos sean guardados. Se entiende mejor cuando se sabe un poco sobre el como el proceso del como los lenguajes de maquina guardan la informacion. vease. Introduccion los sistemas de computacion.

Todos estos tipos de variables son reservados, por lo mismo tiene que ser escritos de tal forma. Al tiempo uno podra crear cualquier tipo como quiera, pero ahora esto es asi hasta avanzado y cambiado por el entendimiento de la programacion y la manipulacion de datos, etc.

Representacion de signo: http://es.wikipedia.org/wiki/Representaci%C3%B3n_de_n%C3%BAmeros_con_signo


  • byte = 8 bit con representacion de signo = -128 inclusivo a 127
  • short = 16-bit con representacion de signo = -32,768 inclusivo 32,767
  • int = 32-bit con representacion de signo -2,147,483,648  inclusivo 2,147,483,647
  • long = 64-bit con representacion de signo  -9,223,372,036,854,775,808 inclusivo 9,223,372,036,854,775,807
  • float = 32-bit IEEE 754 floating point, numeros fuera de la mira de discusion
  • double = 64-bit IEEE 754 floating point, numeros fuera de la mira de discusion


Otros tipos de variables reservadas son los sigientes:

Se vera que estos datos primitivos guardan simbolos, pero los simbolos estan formadas por numeros hexadecimales, descrito por la tabla Unicode.

Tabla Unicode: http://en.wikipedia.org/wiki/Unicode

  • char: es un tipo de dato simple del sibolo de 16-bit Unicode. Con un valor minimo de '\u0000' igual a 0, y un valor maximo de '\uffff' igual a 65,535 inclusive.

El otro dato primitivo es el boolean.

  • boolean: guarda dos datos, las palabras reservadas true y falsa. Que se usan para comparar datos, cuyos tienen que tener la misma informacion dependiendo del estado y la caracteristica programada.

2.3.2. El operador que asigna 


El operador(=) es quien le asigna los datos a la variable, pero antes la variable tiene que estar inicializada con un dato predeterminado, o nulo, por el mismo JVM.

int num =  0;
o
int num;

es recomendable siempre que se inicialize con "0" o algo predeterminado, asi no habra problemas con los datos que tenga, como reinicializar la variable a un estado determinado por cada operacion.

otra cosa muy importante, es el tipo de data que recibira la variable, siempre es importante declararla para el uso que se le vaya a dar, pero siempre se puede (cast), o usar de esa forma para algunos usos. depende del nivel de programacion se sabra con el tiempo.

ah, algo ahi, no se puede inicializar la misma variable dos veces, solo una, pues que el compilador encontrara un error, syntax error ya que no reconocera la variable con el mismo nombre como legal.

2.4 Objetos, Clases y Metodos


  • Objetos: Son entidades del programa que se manipulan llamando a los medotos.

http://docs.oracle.com/javase/tutorial/java/javaOO/objects.html

  • Metodos: Son una serie de instrucciones que accesan la informacion al objeto.
  • Clases: La clase declara al objeto que se le puede aplicar a los objetos.

En cierta forma los objetos son en si el nucleo del programa, por donde el programador puede llamar a los metodos que manipulan la informacion recibida mediante a la clase creada.

Las Clases son el tipo del Objeto, como las variables tienen tipo int o double, la clases son para los objetos.

Un ejemplo es el:

System.out.println("hola");
el "System.out" es el objeto de la clase PrintStream. hola tambien es un objeto per de la clase String.

Para mejor informacion uno tiene que saber que son las subclases y las clases heradadas, luego con el tiempo se entendera un poco. Ya que el "System.out" viene primero de la clase "System" pero esta tiene otra subclase denominada "PrintStream" con los mismos atributos de la clase "System" pero con los de la clase "PrintStream". Para que se hace esto? para facilitar la utilizacion y la modificacion de la informacion.

El "out" es una descripcion y campo de la clase de tipo PrintStream.

El metodo es tipo String de la clase String.

vease: http://docs.oracle.com/javase/7/docs/api/java/lang/System.html

2.5 Parametros del metodo y valores de retorno


Los parametros por lo general son los que reciben la informacion al metodo, ya que pueden haber parametros sin ningun tipo de informacion y los metodos retornen algo.

Hay dos tipos del como los metodos son llamados, uno el implicito, aquel donde el programador llama al metodo y le da en los paremetros el tipo de informacion que puede recibir. El otro, son los metodos del objeto que son llamados por el objeto en si, pero todo y eso el programador como siempre tiene que diseñarlo de esa forma, al menos de que ya esten diseñados por otro programador o por el programa.

El valor del retorno es el resultado que el metodo a computado para el uso de cuyo codigo a sido llamado. Es decir, el resultado que computo el metodo gracias a la informacion obtenida de sus parametros, o del objeto en si, como los datos dentro del objeto.

Ejemplo, se crea un objeto y se le dan unos valores, luego el metodo transforma esos valores dada la informacion dentro del parametro y computa un resultado guardandolos en una variable.

DataSet data = new DataSet(100);

//inicializacion del constructor del objeto, luego en el capitulo 3

public int estudios(int num)
{
int temp = 0;
temp = num;
return  num;
{

int classVariable = 0
classVariable = data.estudios(100) + data.variable;

System.out.println(classVariable);

2.6 Construyendo objetos


http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

Como pueden imagina, las clases son el plano para los objetos, de las clases salen los objetos y de ahi los objetos llaman a los metodos y modifican los objetos.

Punto origenUno = new Punto(23, 94);
Rectangulo rectUno = new Rectangulo(origenUno , 100, 200);
Rectangulo rectDos = new Rectangulo(50, 100);

Aqui se ha creado un nuevo punto de partida para crear un rectangulo. Luego se han creado dos rectangulos , el rectUno, con un punto de origen que tiene la informacion del punto de origen o punto de partida ya creado y el segundo rectangulo sin punto de origen o partida.

Cada declaracion tiene tres partes:

  • Declaracion: Es el codigo asociado con la variable, lo que le da el nombre y tipo de la variable. por ejemplo; Rectanguo rectUno;
  • "Instantiation": la palabra reservada "new" crea el objeto.
  • Iniciacion: El operador new lo sigen un constructor, cuya funcion es la que inicia el nuevo objeto.

Declarar a una variable para iniciar un objeto

http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

  • El tipo de la variable: La variable tiene que tener el tipo de informacion semejante al tipo de la variable. Esto hace que cuando se declare sea reservada la memoria en su sitio adecuado. Como especificar el tipo de casilla que uno puede ponerle todos los datos similares.

Por ejemplo; Punto origenUno;

De esta forma uno no esta creando el objeto, sino que la referencia del objeto, por lo tanto no habra informacion sino que solo estara refiriendose a algo que no existe, por lo mismo estara nula la referencia.

Para que la referencia tenga su informacion se debe crear cuando se inicialize y tenga ya el operador "new" luego del objeto creado y su construccion deseada.

Es muy importante recordar. Declaracion, Instantiation y Iniciacion. la primera declara el tipo de variable que se quiere tener la informacion, el segundo crea el objeto,  y el tercero inicia el objeto dandole el valor deseado.

public class Punto {
    public int x = 0;
    public int y = 0;
    //constructor
    public Punto(int a, int b) {
        x = a;
        y = b;
    }
}

Esta clase tiene un constructor, crea usando sus parametros, iniciadas las variables de tipo int a y b, para recibir la informacion y luego ser asignadas a las variables de la clase o del objeto que se va a crear.

Punto origenUno = new Punto(23, 94);

La variable origenUno indica al objeto Punto.

public class Rectangulo {
    public int ancho = 0;
    public int alto = 0;
    public Punot origen;

    // cuatro constructores
   //?por que se crean cuatro constructores?
   //porque de esa forma el programador puede modificar, introduciendo informacion dentro
   // de los parametros, al metodo.

    public Rectangulo() {
        origen = new Punto(0, 0);
    }
    public Rectangulo(Punto p) {
        origen = p;
    }
    public Rectangulo(int w, int h) {
        origen = new Punto(0, 0);
        ancho = w;
        alto = h;
    }
    public Rectangulo(Punto p, int w, int h) {
        origen = p;
        ancho = w;
        alto = h;
    }

    // metodo para mover el rectangulo
    public void move(int x, int y) {
        origen .x = x;
        origen .y = y;
    }

    // un metodo para computar el area
    public int getArea() {
        return ancho * alto;
    }
}

Rectangulo recUno = new Rectangle(origenUno, 100, 200);

Ejemplohttp://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

foto de la pagina de Oracle: http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

?que pasa aqui?
Se crea un objeto Rectangulo con el origen uno ya creado anteriormente y se le inicializa con La informacion correspondiente.

Rectangulo RecDos = new Rectangle(50, 100);

Lo mismo aqui pero sin el punto, ya que se crearon varios constructores con varios atributos.

Rectangle rect = new Rectangle();

Y aqui no pasa nada, pero ya esta inicializado asi que retorna o apunta a un rectangulo sin nada. de 0 0 informacion.




No comments:

Post a Comment