objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pavz/objclases.pdf · objetos y...

34
Objetos y clases Amparo L´ opez Gaona Agosto de 2008 Amparo L´ opez Gaona () Objetos y clases Agosto de 2008 1 / 49

Upload: others

Post on 19-Jul-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Objetos y clases

Amparo Lopez Gaona

Agosto de 2008

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 1 / 49

Page 2: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Ciclo de vida de los objetos

En un programa se crean objetos. Estos interactuaran entre sı, mediante elenvıo y recepcion de mensajes.A traves de estas interacciones de objetos, se pueden tener programas queimplementen interfaces graficas, desplieguen una animacion, envien yreciban informacion de una red, etc.

Creacion de Objetos.

Uso de Objetos.

Eliminacion de objetos inutiles.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 2 / 49

Page 3: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Creacion de objetos

Cada instruccion tiene tres partes:

Declaracion. Especifica el nombre del objeto y la clase a la quepertenece.Barco titanic;

Creacion. El operador new se encarga de asignar espacio en memoriapara el objeto. Tiene un operando (el nombre de la clase) y devuelveuna referencia al objeto creado.new Barco()

Inicializacion. El nombre de la clase y parametros si se requieren.

titanic = new Barco();Barco titanic = new Barco();Punto origen = new Punto(23, 94);

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 3 / 49

Page 4: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Creacion de objetos

Punto origen;origen

new Punto(23,94)xy

2394

titanicposvel ...

0,00

negro

new Punto(xy

Punto origen =origen

Punto origen =origen

Barco titanic = new Barco();

col

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 4 / 49

Page 5: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Alias de los objetos

Una referencia tiene un solo valor a la vez, pero un objeto puede tenervarias referencias.

Moneda laSuertuda = new Moneda();Moneda chiquita = laSuertuda;Moneda miMoneda = laSuertuda;

No hay creacion de objetos solo unos alias.

1

miMoneda

valorchiquita

laSuertuda

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 6 / 49

Page 6: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Alias de los objetos

Una referencia tiene un solo valor a la vez, pero un objeto puede tenervarias referencias.

Moneda laSuertuda = new Moneda();Moneda chiquita = laSuertuda;Moneda miMoneda = laSuertuda;

No hay creacion de objetos solo unos alias.

1

miMoneda

valorchiquita

laSuertuda

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 6 / 49

Page 7: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Referencia con valor nulo

Al terminar de trabajar con un objeto se puede asignar el valor null a lareferencia.laSuertuda = null;

1

miMoneda

valorchiquita

laSuertuda(laSuertuda = null)

En caso de que se asigne el valor null a la unica referencia al objeto, esteya no puede accesarse mas, por tanto, queda disponible para el recolectorde basura.En resumen, el valor de una referencia puede ser el valor de otra variable(o constante) de tipo referencia, el resultado de la creacion de un objeto obien el valor constante null.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 7 / 49

Page 8: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Uso de objetos

Una vez creado un objeto, se puede usar quiza para conocer su estado,modificarlo o simplemente realizar alguna accion.Para trabajar con un objeto se le deben enviar mensajes, mediante lanotacion punto:

Sintaxis: referenciaDelObjeto.nombreDelMetodo(parametros)

Ejemplo: titanic.hundir();

Si se llama a un metodo dentro de la clase en que se definio, no esnecesario especificar una referencia.Es necesario conocer su signatura o firma que consta del nombre delmetodo y entre parentesis una lista con los parametros que requiere paratrabajar.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 8 / 49

Page 9: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Ejemplo

/*** Programa que ilustra la declaraci’on y uso de un objeto.* Usa diferentes tipos de m’etodos* @author Amparo L’opez Gaona* @version Agosto 2008*/public class PruebaBarcos{public static void main(String[] pps) {Barco titanic; //Variable para referirse a un objeto Barcotitanic = new Barco(); //Construye un nuevo objeto.

titanic.reportar(); // Pide reporte su posici’on, curso y velocidad.titanic.mover(); // Pide al barco se mueva de su posici’on actual.titanic.cambiaCurso(90); // Cambia el curso 90 grados.double velocidadActual;velocidadActual= titanic.reportaVelocidad();

//Reporta su velocidad}}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 10 / 49

Page 10: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Eliminacion de objetos inutiles

Java permite al programador crear todos los objetos que se deseen sinpreocuparse de destruirlos.Java elimina los objetos cuando determina que ya no seran usados, vıa unrecolector de basura.Un objeto es inutil cuando ya no hay mas referencias a el:

Al salir del alcance donde se definio.

Al asignarle valor null, o de otro objeto.

Si se desea llamar explıcitamente al recolector de basura se debe llamar almetodo gc de la clase System.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 11 / 49

Page 11: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Volados

Escribir un programa que juegue volados con el usuario. Debe jugar variasveces y darte un marcador final.Supon que tienes las clases:

Moneda que responde al metodo lanzar con ’a’ (aguila) o ’s’ (sol).

InOut con metodos readX donde X es cualquier tipo de datoprimitivo y lo que hace cada metodo es leer un dato del tipoespecificado.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 13 / 49

Page 12: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

... Volados

class Volados {static public void main (String [] pps) {InOut io = new InOut();Moneda laSuertuda = new Moneda();char cayo, pido;

System.out.print("Qu\’e pides (a/s)? ");pido = io.readChar();cayo = laSuertuda.lanzar();if (pido == cayo)io.println("Ganaste !!!");

elseio.println("Perdiste !!!");

}}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 15 / 49

Page 13: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

... Volados

class Volados {static public void main (String [] pps) {InOut io = new InOut();Moneda laSuertuda = new Moneda();char cayo, pido;

System.out.print("Qu\’e pides (a/s)? ");pido = io.readChar();cayo = laSuertuda.lanzar();if (pido == cayo)io.println("Ganaste !!!");

elseio.println("Perdiste !!!");

}}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 15 / 49

Page 14: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Creacion de clases

Recordar que las clases tienen:

Nombre. Identificador.

Estructura. Definida mediante la declaracion de datos.

Comportamiento. Modelado mediante metodos.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 16 / 49

Page 15: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Definicion de la clase

La clase tiene un encabezado y un cuerpo.El encabezado incluye, entre otra informacion, el nombre de la clase.El cuerpo contiene atributos y metodos.El encabezado consta de:

La visibilidad de la clase: publica (public) o bien privada (package).La palabra reservada classEl nombre de la clase. Normalmente el nombre de la clase se escribeen singular.

Opcionalmente otros calificativos como extends e implements

Ejemplo: Encabezado de la clase Rectangulo y los espacios para losatributos y los metodos.

public class Rectangulo // Encabezado... // Atributos... // Metodos

}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 18 / 49

Page 16: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Definicion de la estructura

Componentes para cada elemento (variable de instancia):

Visibilidad. Puede ser public, private o protected.Calificador static o ninguno.Calificador final o ninguno.Tipo. Tipo primitivo o una clase.Nombre. Identificador.Opcionalmente un valor inicial.

La declaracion de cada atributo debe terminar con un punto y coma.Ejemplo:

public class Rectangulo {private int largo; // Estructuraprivate int ancho;private Punto centro;... // Comportamiento

}

largo, ancho y centro, solo son accesibles directamente desde cualquiermetodo dentro de la clase. Encapsulacion.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 20 / 49

Page 17: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Definicion de la estructura

Componentes para cada elemento (variable de instancia):

Visibilidad. Puede ser public, private o protected.Calificador static o ninguno.Calificador final o ninguno.Tipo. Tipo primitivo o una clase.Nombre. Identificador.Opcionalmente un valor inicial.

La declaracion de cada atributo debe terminar con un punto y coma.Ejemplo:

public class Rectangulo {private int largo; // Estructuraprivate int ancho;private Punto centro;... // Comportamiento

}

largo, ancho y centro, solo son accesibles directamente desde cualquiermetodo dentro de la clase. Encapsulacion.Amparo Lopez Gaona () Objetos y clases Agosto de 2008 20 / 49

Page 18: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Definicion de metodos

Los componentes de un metodo son:

Visibilidad. Puede ser public, private o protected.

Tipo de valor que devuelve. Incluye void.

Nombre.

Lista de parametros. Definicion parecida a la de atributos excepto:

No puede ir precedida de tipo de visibilidad.No terminan con ;

El paso de parametros es por valor.

Variable de tipo primitivo. No se modifica su valor.Variable de referencia. No se modifica su valor pero si puedemodificarse el valor del objeto referenciado.

Proposicion compuesta. Llamada cuerpo. Programacion del metodo.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 21 / 49

Page 19: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

... Definicion de metodos

public class Rectangulo {... // Estructura

public int obtenerLargo () { ... } // Comportamientopublic int obtenerAncho () { ... }public Punto obtenerCentro () { ... }public void asignarLargo(int nuevoLargo) { ... }public void asignarAncho(int nuevoAncho) { ... }public void asignarCentro(Punto nuevoCentro) { ... }public double area () { ... }public double perimetro () { ... }public void desplazar (Punto nuevoCentro) { ... }public boolean equals (Object p) { ... }public String toString() { ... }

}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 23 / 49

Page 20: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Programacion de un metodo

Elementos de trabajo de un metodo:

Elementos de la estructura. Para acceder a cualquiera basta conescribir su nombre.

public int perimetro () {return largo*2 + ancho*2;

}

Parametros. Considerados como variables locales con un valor inicialdado al momento de llamar al metodo.

public void asignarLargo (int l) {largo = l;

}

Variables locales.

public int perimetro () {int dobleLargo = largo * 2;return dobleLargo + ancho*2;

}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 25 / 49

Page 21: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

... Programacion de un metodo

Datos obtenidos como respuesta a mensajes enviados a otros objetos.(con o sin notacion punto).

public int distanciaAlOrigen () {return centro.distancia(new Punto (0,0));

}

Atributos definidos como publicos o estaticos en otras clases.

public void asignarLargote () {largo = (int) Double.POSITIVE_INFINITY;

}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 27 / 49

Page 22: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Metodos modificadores

Modifican el valor de los atributos privados de los objetos.Reciben como parametro el nuevo valor para el atributo, por tanto, eltipo del parametro y del atributo debe coincidir.No devuelven valor alguno.

/*** Asigna valor al largo del rect’angulo* @param nuevoLargo - nuevo valor para el largo de rect’angulo*/public void asignarLargo(int nuevoLargo) {largo = nuevoLargo;

}/*** Asigna valor a la coordenada del centro del rect’angulo* @param nuevoCentro - nuevo valor para el centro*/public void asignarCentro(Punto nuevoCentro) {centro = new Punto(nuevoCentro);

}/*** Asigna valor al ancho del rect’angulo* @param nuevoAncho - nuevo valor para el ancho de rect’angulo*/public void asignarAncho(int nuevoAncho) {ancho = nuevoAncho;

}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 29 / 49

Page 23: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Metodos de acceso

Unico medio de conocer el valor de los atributos privados de losobjetos.No reciben parametros.Devuelven un valor del tipo definido en el atributo.

/*** Regresa el valor del largo* @return int - largo del rect’angulo*/public int obtenerLargo () {return largo;

}/*** Regresa el valor del ancho* @return int - ancho del rect’angulo*/public int obtenerAncho () {return ancho;

}Amparo Lopez Gaona () Objetos y clases Agosto de 2008 31 / 49

Page 24: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

... Metodos modificadores

/** Regresa el valor del centro* @return Punto - centro del rect’angulo*/public Punto obtenerCentro () {return centro;

}

/** Permite desplazar el rect’angulo ...*/public void desplazar (int deltaX, int deltaY) {centro.asignarX( centro.obtenerX() + deltaX);centro.asignarY( centro.obtenerY() + deltaY);

}

/** Permite desplazar el rect’angulo ... */public void desplazar (Punto nuevoCentro) {asignarCentro(nuevoCentro);

}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 33 / 49

Page 25: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Metodos calculadores

public int perimetro () {return largo*2 + ancho*2;

}

public int area () {return largo * ancho;

}

public Punto puntoSupDerecho() {int x = centro.obtenerX() + largo / 2;int y = centro.obtenerY() + ancho / 2;return new Punto(x, y);

}

public boolean esMayor (Rectangulo r) {return area() > r.area();

}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 35 / 49

Page 26: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Constructores

Un constructor es un metodo cuyo objetivo se garantizar que un objeto secrea con un estado valido.La instruccion new es la encargada de crear el objeto y de llamar alconstructor.Un constructor se distingue de cualquier otro metodo en que:

Tiene el mismo nombre que la clase a la que pertenece.

No tiene especificado valor de regreso, ni siquiera void, porque noregresa ningun valor.

Siempre se usa con la instruccion new.

Es comun que las clases tengan mas de un constructor. Diferentesposibilidades de creacion de un objeto.Un constructor puede usarse para crear objetos anonimos.El tener varios metodos con el mismo nombre dentro de la misma clase seconoce como sobrecarga de metodos.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 36 / 49

Page 27: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

... Constructores

public Rectangulo (int l, int a, Punto p) {largo = l;ancho = a;centro = new Punto(p);

}public Rectangulo () { // Constructor por omisionlargo = 2;ancho = 1;centro = new Punto (0,0);

}public Rectangulo () { // Constructor por omisionthis (2, 1, new Punto(0,0));

}public Rectangulo (Rectangulo r) { //Constructor de copialargo = r.largo;ancho = r.ancho;centro = new Punto(r.centro);

}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 38 / 49

Page 28: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

El metodo equals (Igualdad entre objetos)

public class Diferencia {public static void main (String [] pps) {Rectangulo r1 = new Rectangulo(100,20, new Punto(50,10));Rectangulo r2 = new Rectangulo(20,20, new Punto (0,0));Rectangulo r3 = new Rectangulo(100,20, new Punto(50,10));Rectangulo r4 = r1;

if (r1 == r1) {System.out.println("r1 = r1");

}if (r1 == r2) {System.out.println("r1 = r2");

}if (r1 == r3) {System.out.println("r1 = r3");

}if (r1 == r4) {System.out.println("r1 = r4");

}}

}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 40 / 49

Page 29: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

... El metodo equals

/*** Determina si dos rectangulos son iguales* @param r - rectangulo contra el cual se va a comparar* @return boolean - true si son iguales y false en otro caso*/public boolean equals (Object r) {Rectangulo rec = (Rectangulo)r;return largo == rec.obtenerLargo() && ancho == rec.obtenerAncho()

&& centro == rec.obtenerCentro();}

public boolean equals (Object r) {Rectangulo rec = (Rectangulo)r;return largo == rec.obtenerLargo() && ancho == rec.obtenerAncho()

&& centro\textbf{.equals(}rec.obtenerCentro());}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 42 / 49

Page 30: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

El metodo toString

System.out.println(r1);

System.out.println("Tengo el rectangulo de "+r1.obtenerLargo() + " X "+r1.obtenerAncho()+" con centro en " + obtenerCentro());

/*** M\’etodo para convertir un Rectangulo a cadena de caracteres* @return String -- el punto en formato de cadena*/

public String toString() {return "rectangulo de " + largo + " X "+ ancho +" con centro en " + centro;

}

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 44 / 49

Page 31: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

... Metodos

Existe un metodo muy importante llamado main es donde esta expresadoel algoritmo general para resolver el problema original.En el main es donde se crean e interactuan los objetos involucrados en lasolucion del problema.Su sintaxis es la siguiente:

class PruebaRectangulo{

public static void main(String [] pps) {.... //Algoritmo

}

}

Java exige que el archivo donde se guarde la clase que contiene el metodomain se llame igual que la clase, es decir, en este caso deberıa estar en unarchivo llamado PruebaRectangulo.java

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 46 / 49

Page 32: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

Problema

La empresa que administra el servicio de transporte colectivo Metro hadecidido instalar maquinas expendedoras de boletos. Se debe desarrollar unprograma que controle el funcionamiento de esta maquina. En el caso delos boletos del metro, cada boleto tiene un precio fijo. La maquina debeaceptar el dinero, imprimir los boletos requeridos, dar el cambio y llevar elcontrol de la cantidad de dinero que tiene y de boletos que ha expedido.

Modularizacion. Dividir un todo en partes, las cuales puedenconstruirse y probarse de manera independiente y cuya interaccionesta bien definida. En la poo, los modulos son las clases.

Abstraccion. Consiste en ignorar detalles irrelevantes y concentrarseen los detalles significativos.La modularizacion y la abstraccion se complementan.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 47 / 49

Page 33: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

... Problema

1 Encontrar los objetos principales.Sustantivos: Maquina para expedicion de boletos, boleto, precio ydinero.

2 Determinar el comportamiento deseado.Maquina:

Aceptar la solicitud de compra.Recibir dinero.Expedir boletos.

Boleto:Ser impreso.

Cajero:Almacenar dinero.Contabilizar dinero.Dar cambio en caso necesario.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 48 / 49

Page 34: Objetos y clases - hp.fciencias.unam.mxhp.fciencias.unam.mx/~alg/pAvz/objClases.pdf · Objetos y clases Amparo Lopez Gaona Agosto de 2008 Amparo L´opez Gaona Objetos y clases Agosto

... Problema

1 Definir escenario.

1 Dar la bienvenida al expendedor de boletos.2 El usuario solicita boletos.3 La maquina valida la cantidad de boletos.4 La maquina solicita el importe de los boletos.5 La maquina cobra y en su caso da cambio.6 Si todo esta bien, la maquina expide boletos.

En este escenario se aprecia la interaccion entre los diferentes objetosinvolucrados en el problema.

Amparo Lopez Gaona () Objetos y clases Agosto de 2008 49 / 49