Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Diagrama de clases
En nuestro modelo simplificado que describe a un teléfono celular, haciendo abstracción el mismo
está formado por dos componentes principales:
Además tiene otros componentes que para nuestro sistema no son relevantes por eso no los
vamos a incluir en esta versión simplificada (pantalla, carcaza, micrófono, lector de huella, etc.)
Según el Diagrama de clases que aparece al inicio de este texto, se puede observar las siguientes
clases.
Clase Dispositivo:
Esta clase representa o modela un dispositivo cualquiera. Por tanto, como nos falta información, no
sabríamos de qué dispositivo se trata. Eso nos lleva a concluir que la misma es una clase abstracta
porque representa un dispositivo genérico cualquiera.
Algo que surge del análisis de esta clase es que el dispositivo se puede Encender() o Apagar(), pero
desconocemos cómo hacerlo (pues no sabemos de qué dispositivo se trata). Es decir, desconocemos
su implementación. Cuando se desconoce la implementación de un método el mismo será
abstracto. Deberá implementarse en alguna subclase.
Clase Celular
Un objeto celular es un dispositivo, es decir, que aplica relación de Herencia. Va a heredar los
atributos y comportamientos de la clase Dispositivo y agregará los suyos propios.
Implementación de Herencia
Para que la clase Celular no sea abstracta deberá implementar todos los métodos que hereda de
Dispositivo.
Implementación de la Composición
public Celular(){//Constructor
this.umodular=new UnidadModular();
Un objeto bat de tipo Bateria que lo integra. Podríamos pensar que la batería integra el
celular de manera casi permanente (hasta que tengamos que cambiarla por otra). Se trata
entonces de una relación de AGREGACIÓN. A diferencia del objeto umodular que está
integrado o soldado (es fijo), la batería podría cambiarse cuando se agote.
Implementación de Agregación
Clase Batería
Tiene 3 atributos propios calificados como privados: amperaje, voltaje y número de serie.
Clase UnidadModular
Tiene como atributo propio la cantidad de circuitos que la integra
La relación entre PH y Departamento implementarla usando un contenedor ArrayList, parametrizado para que sólo
admita objetos Departamento.
Implementar una clase excepción ErrorLote, que sea lanzada si se pretende asignar más de un edificio a un lote.
Implementar en los objetos Escritura la persistencia, usando la interface Serializable y métodos guardar/recuperar
para gestionarlos.
Implementar la relación 1..n (rol inmueble) usando un objeto contenedor ArrayList.
Escritura
(from inmuebles)
Registro
numero : Integer
(from i nmuebles)
superficie : int
coefAvaluoEdificio : float
domicilio : String
municipio : String
tasa : float Lote
Escritura() (from inmuebles)
Casa PH
(from i nmuebles) (from inmuebles)
plantaAlta : boolean cantPisos : byte
superficie : int
PH()
Casa() valuar()
valuar()
Deberás también, basándote en los apuntes de teoría, generar métodos para guardar() y recuperar().
Vamos a suponer que existe una clase llamada Agenda, que almacena solamente nombres
import java.io.*;
Agenda a1 = new Agenda("Ana", "Martínez", "Fernández");//Estos son los objetos a1 y a2 que quiero
persistir
try{
os.writeObject(a2);
e.printStackTrace();
e.printStackTrace();
try{
a2 = (Agenda) ois.readObject();
ois.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
e.printStackTrace();
System.out.println(a2);