Actualizaciones

Unidad 7 - Excepciones.EXAMEN PROXIMA SEMANA (VIERNES 21 DE MAYO 2010)
Para comprender mejor este tema es necesario leer de distintas fuentes,
te recomiendo leer en las diversas fuentes recomendadas en la sección de la bibliografia en el avance programático que te entregue al inicio del curso.

Nota: Hay varios ejemplares del Libro "Como Programar en Java " de Deitel esta disponible en la biblioteca.

- Actualizado el Sabado 15 de Mayo del 2010 -

jueves, 25 de marzo de 2010

Unidad 4 - Sobrecarga > ejemplo

Ejemplo visto en clase utilizando constructores y sobrecarga
Tambien se utiliza el metodo toString en la clase Persona


Clase Persona.java
Clase TryPersona.java

lunes, 15 de marzo de 2010

Constructores

Cuando creas un objeto de una clase, un tipo especial de método llamado constructor siempre es invocado. Si no se define ningún constructor para tu clase, el compilador proveerá un constructor predeterminado en la clase, el cual no hace practicamente nada, sin embargo, el proposito principal de un constructor es proveer los medios para inicializar variables de instancia para el objeto que esta siendo creado.

Un constructor tiene cinco caracteristicas especiales que lo diferencia de otros metodos de clase:

❑ Se utilizan para poner el objeto creado en un estado inicial
❑ Un constructor siempre tiene el mismo nombre que la clase.
❑ Un constructor nunca regresa un valor, y no se debe especificar ningun tipo
de retorno ni siquiera del tipo void.
❑ Son llamados automaticamente cuando se crea un objeto de la clase
❑ Java proporciona un constructor sin parametros por default, el cual, deja
de estar disponible cuando se agrega algun otro constructor a la clase.


.

lunes, 8 de marzo de 2010

Unidad 2 - Ejemplos > Parte 2 > Clases, Metodos y Objetos

Ejemplo 1_a - Semaforo.java
Ejemplo 1_b - TrySemaforo.java

Unidad 2 > Conceptos > Clases, Metodos y Objetos

PROGRAMACION ORIENTADA A OBJETOS USANDO CLASES

Definición de clases e instancias
Las clases son los elementos que Java utiliza para soportar la programación orientada a objetos. Constituyen la estructura básica sobre la que se desarrollan las aplicaciones. Una clase permite definir propiedades y métodos relacionados entre sí.

Habitualmente, las propiedades son las variables que almacenan el estado de la clase y los métodos son los programas que se utilizan para consultar y modificar el contenido de las propiedades.

Un ejemplo de clase podría ser un semáforo de circulación, cuyo estado se guarde en una propiedad EstadoSemaforo de tipo String que pueda tomar los valores “Verde”, “Amarillo” y “Rojo”. Como métodos de acceso a la propiedad podríamos definir: PonColor(String C olor) y String DimeColor().

Sintaxis

AtributoAcceso class NombreClase {
// propiedades y métodos
}

Obviando el significado del atributo de acceso, que se explicará más tarde, un ejemplo concreto de clase en Java podría ser:

public class Semaforo {
private String EstadoSemaforo = “Rojo”;

public void PonColor (String Color) {
EstadoSemaforo = Color;
}
public String DimeColor() {
return EstadoSemaforo;
}
} // Fin de la clase Semaforo


Representación gráfica
Gráficamente, la clase Semaforo la podríamos definir de la siguiente manera:



Fig. 4.1

La propiedad EstadoSemaforo, con atributo private, no es accesible directamente desde el exterior de la clase, mientras que los métodos, con atributo public, si lo son. Desde el exterior de la clase podemos acceder a la propiedad EstadoSemaforo a través de los métodos PonColor y DimeColor.


Instancias de una clase
Cuando definimos una clase, estamos creando una plantilla y definiendo un tipo. Con el tipo definido y su plantilla de código asociada (sus propiedades y métodos) podemos crear tantas entidades (instancias) de la clase como sean necesarias; de esta manera, en nuestro ejemplo, podemos crear varios semáforos (instancias de la clase Semáforo), y hacer evolucionar el estado de estos “semáforos” de forma independiente.

Si deseamos disponer de diversos semáforos independientes entre sí, en el sentido de que cada semáforo pueda encontrarse en un estado diferente a los demás, obligatoriamente debemos crear (instanciar) cada uno de estos semáforos.

Para declarar un objeto de una clase dada, empleamos la sintaxis habitual:

Tipo Variable;

En nuestro caso, el tipo se refiere al nombre de la clase:

Semaforo MiSemaforo;

De esta manera hemos creado un apuntador (MiSemaforo) capaz de direccionar un objeto (una instancia) de la clase Semaforo:



Para crear una instancia de la clase Semaforo, empleamos la palabra reservada new, tal y como hacíamos para crear una instancia de una matriz; después invocamos a un método que se llame igual que la clase. Estos métodos se denominan constructores y se explicarán un poco más delante.

MiSemaforo = new Semaforo();

También podemos declarar e instanciar en la misma instrucción:

Semaforo MiSemaforo = new Semaforo();

En cualquier caso, el resultado es que disponemos de una variable MiSemaforo que direcciona un objeto creado (instanciado) de la clase Semaforo. Podemos crear tantas instancias como necesitemos:

Semaforo MiSemaforo = new Semaforo();
Semaforo OtroSemaforo = new Semaforo();

Es importante ser consciente de que en este momento existen dos variables diferentes implementando la propiedad EstadoSemaforo; cada una de estas variables puede contener un valor diferente, por ejemplo, cada semáforo puede presentar una luz distinta (“Verde”, “Rojo”, “Amarillo”) en un instante dado.

Utilización de los métodos y propiedades de una clase
Para designar una propiedad o un método de una clase, utilizamos la notación punto:

Objeto.Propiedad
Objeto.Metodo()

De esta forma, si deseamos poner en verde el semáforo SemaforoDeMiCalle, empleamos la instrucción:

SemaforoDeMiCalle.PonColor(“Verde”);

De igual manera podemos actuar con las demás instancias de la clase Semaforo:

MiSemaforo.PonColor(“Rojo”);
OtroSemaforo.PonColor(“Verde”);

Para consultar el estado de un semáforo:

System.out.println( OtroSemaforo.DimeColor() );
if (MiSemaforo.DimeColor().equals(“Rojo”))
String Luz = SemaforoDeMiCalle.DimeColor();

En nuestro ejemplo no podemos acceder directamente a la propiedad EstadoSemaforo, por ser privada. En caso de que fuera pública se podría poner:

String Luz = SemaforoDeMiCalle.EstadoSemaforo;
// esta linea seria valida sólo si la variable EstadoSemaforo fuera accesible
// (en nuestro ejemplo del semaforo NO lo es)

Encapsulamiento
Encapsulamiento se refiere al ocultamiento de los datos miembro de un objeto de manera que sólo se puede cambiar mediante las operaciones (métodos) definidas para ese objeto.

Cada objeto está aislado del exterior, es una entidad independiente. El aislamiento protege a los datos asociados a un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios.

Encapsulamiento se puede refierir tanto al ocultamiento de los datos como de métodos existentes dentro de un objeto.

El Encapsulamiento de los miembros de un objeto se logra asignandoles el atributo de acceso como privado (private) dentro de la definición de la clase.

De esta forma como en el el ejemplo del semaforo la variable estado solo es accesible a través de los metodos publicos definidos por la clase (setter/getter) por lo tanto solo existe una manera de alterar el contenido de las variables privadas y esta es llamando al metodo encargado de ello.

Importancia del encapsulamiento
El encapsulamiento de los miembros de una clase es importante debido a cuestiones de seguridad e integridad de los objetos de una clase. Tu podrias tener una clase con variables que acepten solo ciertos valores permitidos, como en el caso del semaforo que solo aceptaria rojo, amarillo y verde como estados permitidos. De esta forma te aseguras de que solo valores legales serán aceptados.


Por ejemplo, en la siguiente figura podemos ver que solo los miembros publicos de una clase son los que interactuan con el exterior, protegiendo asi el acceso a los miembros privados de un objeto.



.

lunes, 1 de marzo de 2010

Unidad 2 - Practicas > Parte 1 > Metodos

Practica propuesta 1

Unidad 2 - Ejemplos > Parte 1 > Metodos

Ejemplo 4 - LeyendaStr.java
Ejemplo 3 - Promedio.java
Ejemplo 2 - SumaNumeros2.java
Ejemplo 1 - SumaNumeros.java

Unidad 2 - Métodos y mensajes

Métodos
Los métodos (procedimientos, funciones, subrutinas) nos permiten encapsular un conjunto de instrucciones de manera que puedan ser ejecutados desde diferentes puntos de la aplicación.

Por ejemplo, puede resultar útil crear un método que convierta de libras a kilos, de manera que, cada vez que se necesite realizar esta conversión se pueda invocar al método sin preocuparse de los detalles con los que está implementado.



Sintaxis

No todos los métodos devuelven valores al programa principal, sólo lo hacen si es necesario. Por ejemplo, podemos crear una serie de métodos que dibujan figuras geométricas en pantalla:

void DibujaCirculo(int XCentro, int YCentro, int Radio){
........
}
void DibujaRecta(int X1, int X2, int Y1, int Y2) {
.........
}
..........

Ninguno de los métodos anteriores necesita devolver un valor al programa que los llama. En este caso, en lugar de indicar un tipo concreto de dato antes del nombre del método (como en convertirAKilos), se pone la palabra reservada void.



Por ejemplo:



No hay que confundir argumentos con parámetros; los parámetros son variables que utiliza el método como valores de partida para sus cálculos. Su visibilidad y ámbito (existencia) se limitan a los del propio método. Los argumentos son valores que se establecen en el programa llamante y que se traspasan (por valor o referencia como veremos más adelante) al método llamado.

La instrucción return Resultado; normalmente suele ser la última del método.

Cuando el método no devuelve un valor, como ya se ha comentado, hay que poner la palabra reservada void como tipo de retorno. En el método podemos prescindir de la instrucción return o utilizarla sin un valor asociado;

es decir:
return;

.