PROGRAMACION ORIENTADA A OBJETOS UML Y JAVA PROGRAMACION ORIENTADA A OBJETOS
CLASE Implementación de un tipo de dato Una clase sirve tanto de módulo como de tipo Tipo: Descripción de un conjunto de objetos (equipado con ciertas operaciones) Modulo: Unidad de composición de software
Cada clase: Se define en un archivo independiente Se carga en memoria cuando se necesita
public class MiClase { … }
OBJETO Instancia de una clase: Unidad atómica que encapsula estado y comportamiento Un objeto puede caracterizar una entidad física Todos los objetos son instancia de una clase Todos los objetos de una misma clase comparten ciertas características: comportamiento y atributos
Todo objeto tiene: Identidad (puede distinguirse de otros objetos) Estado (datos asociados a el) Comportamiento (puede hacer cosas)
Objeto =Identidad + Estado + Comportamiento Es independiente de su estado No cambia durante la vida del objeto
Esta dado por los valores de sus atributos Estado: Esta dado por los valores de sus atributos Cada atributo toma un valor en un dominio El estado del objeto evoluciona con el tiempo Los atributos de un objeto no deben ser manipulables directamente por el resto de los objetos. Se protegen los datos de accesos indebidos Se distingue entre interfaz de implementación Se facilita el mantenimiento dfel sistema
Comportamiento Los métodos definen el comportamiento del objeto Agrupan competencias Describen acciones Nota: Relación competencia estado: Un avión no puede aterrizar si no esta en vuelo
Representación grafica de una clase Una clase se representa con un rectángulo dividido: Nombre de la clase Atributos Operaciones
public class Cuenta { …. } Cuenta
private double balance; //saldo private double limit; //límite } public class Cuenta { private double balance; //saldo private double limit; //límite } Cuenta -balance:double -limit:double
public class Cuenta { private double balance; //saldo private double limit; //límite public void ingresar(…).. public void retirar(…)… } Cuenta -balance:double -limit:double +Ingresar():void +retirar():void
private double balance; //saldo private double limit; //límite public class Cuenta { private double balance; //saldo private double limit; //límite public void ingresar(double cantidad) balance=balance+cantidad; } public void retirar(double cantidad) balance=balance-cantidad; Cuenta -balance:double -limit:double +Ingresar(double cantidad ):void +retirar(double cantidad):void
RELACIONES ENTRE CLASES DIAGRAMAS UML
Las relaciones existentes entre las clases nos indican como se comunican los objetos de esas clases entre si. Los mensajes navegan por relaciones existentes entre las distintas clases
Existen distintos tipos de relaciones: Asociacion (conexion entre clases) Dependencia (relacion de uso) Generalizacion/especializacion (relaciones de herencia)
Asociación Es una relación estructural, la cual describe relación entre objetos. Cliente Dirección Vive en
Cuenta Cliente Unidireccional Cuenta Cliente -balance -Limite -fecha +ingresar() +Retirar() Unidireccional Cuenta Cliente * Titular 1 -balance -Limite -fecha --nombre -apellido -direccion bidireccional
Cuenta Dinero Cuenta +ingresar() +Retirar() -balance: Dinero
class Cuenta { private Dinero balance; public void ingresar (Dinero cantidad); balance +=cantidad; } public void retirar (Dinero cantidad); balance-=cantidad; public Dinero getSaldo() return balance;
Multiplicidad Sginificado 1 Uno y solo uno 0..1 Cero o uno N..M Desde N hasta M * Cero o varios 0..* Cero o Varios 1..* Uno o varios (al menos uno)
Todo departamento tiene un director Profesor Departamento 1 0..1 Todo departamento tiene un director Un profesor puede dirigir un departamento Profesor Departamento * 1 Todo profesor pertenece a un departamento A un departamento pueden pertenecer varios profesores Cliente Cuenta 0..* 1..* Relación opcional Un cliente puede o no ser titular de una cuenta Relación obligatoria Una cuenta ha de tener un titular como mínimo
Casos particulares de asociaciones Relación entre un todo y sus partes Agregación Casos particulares de asociaciones Relación entre un todo y sus partes Polígono Punto contiene 0..1 3..*
Composición 1 barra titulo 0..2 cuerpo 0..1 ScrollBar Cabecera Ventana Panel ScrollBar -titulo:Cabecera -Cuerpo: Panel -barra[2]: ScrollBar 1 0..2 0..1 titulo cuerpo barra
Dependencia Ecuación Math -coeficientes[3] + pow() + resolver() +sqrt() + resolver()
Herencia (generalización y especialización) Empleado Profesor Admin.
NIVELES DE ENCAPSULACION Visibilidad Significado Java Pública Se puede acceder al miembro de la clase desde cualquier lugar public + Protegida Solo se puede acceder al miembro de la clase o desde una clase que herede de ella protected # Privada Solo puede acceder al miembro de la clase desde la propia clase private -