lunes, noviembre 19, 2007

Tutorial de Programacion IV - Clases

Las clases son tipos de datos creados por usted, asi como existen tipos para contener numeros y cadenas de caracteres o "strings", ud puede crear tipos de datos que contengan tipos de datos basicos, por ejemplo, ud desea tener una lista de personas ( obvio que no las personas de verdad) con sus datos mas representativos como en una agenda, asi que ud tendria que almacenar campos como estos

  • nombre
  • apellidos
  • telefono
  • correo
  • pagina web
  • dia de cumple
  • mes de cumple
  • año cumple
solo los ultimos tres corresponden a un tipo de dato numerico, todos los demas son texto o Strings, ahora, la cosa es q podriamos crear las variables por separado y no hay problema, pero que tal tener una sola entidad que pueda manejar todas estas, y asi si creamos otra no confundirnos cual es de que persona?

Pues si se puede hacer, una clase puede mantener estas variables dentro de si, asi que solo tendriamos que llamar las variables dentro de las varaibles, esto se haria de la siguiente forma

miVariablePersona.nombre = "Juanito";

miOtraVariablePersona.nombre = "Pepe";

ahora ud dice, por que no crear de una vez mi variable con el nombre Pepe o juanito???

bueno, cuando ud diseña un programa no puede saber el contenido del dato que le va a llegar, mas si el tipo de darto, asi que crea un nombre global, y por eso tiene dentro una variable con el campo nombre que la maneja...

Para crear nuestras clases en java tenemos que crear un archivo TXT con extension .java, y el nombre que le pongamos sera el tipo de Clase que sera la nuestra, para este ejemplo sera Persona.java

El nombre del archivo tiene que ser igual al nombre de la clase, no solo para evitar confusiones, sino por que como cada clase esta separada de las demas, estas se pueden llamar desde otras clases, y al incluir el archivo, java se guia por el nombre para encontrarla.

Ademas que no solo una clase puede estar en un archivo, pueden haber más, pero solo una es visible para las demas clases exteriores, por eso se llama publica

y al ser publica hay que indicarlo dentro del archivo java

public class Persona{

}

asi se declararia nada mas la clase...
El nombre esta en mayuscula por normas del lenguaje, realmente no importa, pero para ud si, por que puede identificar un tipo de dato CLASE al empezar en mayuscuscula, las variables y variables de clase tienen que empezar con una minuscula, y las consecuentes en mayuscula

int miVariebleConValorEntero;
String miVariableDeClaseString;//String es un tipo de dato que es una clase

Una clase como ya dije tiene variables propias, asi que hay que declararlas


public class Persona{
//private indica que la variable solo puede usarse dentro de la clase

private string nombre;
private string apellido;
private string telefono;
private string correo;
private string web;
private int dia;
private int mes;
private int anio;

}

ahora bien

antes puse

miVariablePersona.nombre = "Juanito";

pero esto no es permitido tecnicamente, se puede hacer, pero por temas de seguridad, en donde se pueden conocer las variables y su contenido, la forma de asignar valores a un propiedad, que es como se llaman las variables dentro de las clases, es solo creando funciones que hagan la tarea, llamados getters y setters

Utilizando solo la propiedad nombre para facilitar la escritura y la vision del codigo tenemos lo siguiente:

public class Persona{
private string nombre;
public void setNombre( String nombre){
this.nombre = nombre;
}
public String getNombre(){
return nombre
}
}

asi entonces en lugar de
miVariablePersona.nombre = "Juanito";

tendriamos esto
miVariablePersona.setNombre("Juanito");

asi la unica forma de comunicarnos con nuestras variables de Clase seria por medio de los metodos, que son los nombres que llevan las funciones propias de una clase.

Ahora para crear nuestras variables de clase habriamos de hacer algo parecido al crear por ejemplo un int

int miVarInt;

pero resulta que las clases tienen separadas la declaracion del nombre de variable, y la declaracion de cuando se empieza a asignar memoria,


por eso tiene un metodo propio para esto de la memoria
asi que tendriamos algo asi:

Persona miPersona;//seria la declaracion de la variable de tipo Persona

y para la memoria seria asi:

miPersona = new Persona();
La palabra reservada new se usa para crear la nueva memoria limpia de Persona

pero hay que crear este metodo especial Persona(), para que inicialice a nuestra variable de clase, este metodo con el mismo nombre de la clase se llama constructor, y crea la memoria e inicializa las variables a gusto del programador; tambien puede haber mas de un constructor, pero debe tener parametros que conviertan a ese metodo en diferente de otros del mismo nombre:


public class Persona{
private string nombre;
public void setNombre( String nombre){
this.nombre = nombre;
}
public String getNombre(){
return nombre
}

public Persona(){
nombre = "";//se le asigna nada al nombre
}
public Persona(String miNombre){
nombre = miNombre;//se le asigna antes de usarlo el nombre
}

}

y la creacion seria asi:

miPersona = new Persona();

o con el otro constructor asi:

miPersona = new Persona("Juancito");

mas tarde se puede usar miPersona.getNombre(); y este retornaria "Juancito", como es esperado.

sábado, noviembre 10, 2007

Interludio Musical

Estoy pensando que pornerles para los tutos de progra, asi que mientras, disfruten de esta animación que hice ya hace un buen, y podran ver lo que se puede hacer con flash, cuando se trata de animar...

Y pónganle atencion al piezon de Led Zeppelin, muchos no la han oído, pero es un hit, se la dedico a las rosas...