Download - Análisis y Diseño OO 1
POO y UML Básico
PROCEDIMIENTOS
DATOS
ATRIBUTOS
MÉTODOS
ATRIBUTOS
MÉTODOS
ATRIBUTOS
MÉTODOS
ATRIBUTOS
MÉTODOS
Programación Estructurada
Programación Orientada a Objetos
POO y UML Básico
Objetos
• Un objeto puede ser cualquier cosa que tenga su propia identidad. Por ej: En el mundo real son objetos una persona, un auto, una casa, etc.
• Todos los objetos tienen atributos. Por ej. Un auto tiene una marca, un modelo, un color, un n° de patente, etc.
• Los objetos también tienen comportamiento. Por ej. Un auto puede moverse de un lugar a otro.
• En la POO podemos hacer abstracciones de objetos del mundo real con sus atributos y comportamiento. Cada objeto tiene cierto conocimiento, en la forma de atributos, y sabe como realizar ciertas operaciones.
POO y UML Básico
Objetos en UML
unObjeto
atributo1atributo2
operacion1()operacion2()
Nombre subrayado
Atributos
Operaciones
POO y UML Básico
Encapsulamiento
• Se refiere a esconder los atributos de un objeto detrás de sus operaciones o métodos
Métodos
Atributos
POO y UML Básico
Asociación y agregación
• Son forma de relación entre objetos
• Asociación: Los objetos se relacionan pero no dependen completamente el uno del otro. Por ej. Un auto y un conductor.
• Agregación: Uno o más objetos son parte de un objeto mayor. Por ej. Un auto y su motor.
POO y UML Básico
Agregación en UML
unAuto
Los objetos de unen con una línea. El extremo del
objeto mayor usa un rombopanelControles
motor
velocimetro
POO y UML Básico
Navegabilidad y nombre de una relación en UML
unCliente
La flecha indica la navegabilidad de la
relación
unaDireccióndireccion
POO y UML Básico
Mensajes
• Un objeto se puede colaborar con otro para realizar tareas que no podrían realizar por si mismos.
• Un objeto colabora con otro enviando un mensaje para invocar una operación de otro objeto.
• Los mensajes pueden tener una respuesta, además pueden tener diversos parámetros.
POO y UML Básico
Clases
• Las clases encapsulan características comunes a un grupo de objetos.
• Todo objeto es instancia de una clase. Por ej. Pedro, María y Juan son instancias de la clase Persona.
POO y UML Básico
Clases en UML
Clase
atributo1atributo2
operacion1()operacion2()
Nombre
Atributos
Operaciones
POO y UML Básico
Herencia
• Mediante la herencia una clase puede tomar características de una clase padre y agregar sus propias características. Por ej. La clase Tren hereda de la clase VehiculoTerrestre.
• Mediante la herencia se pueden crear jerarquías de clases. Por ej. La clase Vehiculo tiene 3 clases hijas, VehiculoTerrestre, VehiculoAereo y VehiculoMaritimo, y cada una de estas tiene clases hijo
POO y UML Básico
Herencia en UML
VehiculoTerrestre VehiculoAereo VehiculoMaritimo
VehiculoEl Triángulo apunta a
la clase padre
Auto Bicicleta
POO y UML Básico
Herencia Múltiple e Interfaces
• Una clase puede heredar de muchas otras. Pero debido a los problemas que trae la herencia múltiple en algunos lenguajes no está permitida.
• En lenguajes como Java para evitar los problemas de la herencia múltiple se introdujo el concepto de interfaz.
• Una interfaz en una clase abstracta pura. Sólo tiene métodos abstractos públicos y no tiene atributos.
• En Java una clase sólo puede heredar de otra. Pero puede implementar múltiples interfaces.
POO y UML Básico
Interfaces en UML
VehiculoTerrestre
Vehiculo
Auto
avanzar()
<<interface>>VehiculoMotorizado
Se escribe <<interface>> en la parte superior
POO y UML Básico
Clases abstractas
• Es una clase con al menos un método abstracto (sin implementación) ya sea propio o heredado.
• Las clases abstractas no pueden ser instanciadas.
• Permiten un modelamiento más flexible .
• Las clases y métodos no abstractos se denominan concretos.
POO y UML Básico
Clases abstractas en UML
VehiculoTerrestre
VehiculoEl nombre se escribe en
itálicas
Auto
avanzar()<<abstract>>
Vehiculo
avanzar()
Otra forma de representar clases abstractas
POO y UML Básico
Sobrescritura de métodos
• Una clase hijo puede cambiar la implementación de una operación de una clase padre. Por ej. El método abstracto avanzar() de Vehiculo puede implementarse en la clase Auto
POO y UML Básico
Polimorfismo
• Polimorfismo significa “muchas formas” y en OO aplica de dos formas.
• Atributos polimórficos: Un atributo que tenga como tipo una clase padre puede tener como valor, en tiempo de ejecución, objetos pertenecientes a una de las clases hijo.
• Mensajes polimórficos: Al invocar un mensaje en un objeto declarado con una clase padre, en tiempo de ejecución, se puede invocar la operación implementada en una de las clases hijo.
POO en Java
Ejemplo// Comentarios Javadoc omitidos // por brevedad
public abstract class Vehiculo {public abstract void avanzar();
}
public abstract class VehiculoTerrestre extends Vehiculo {
private int numeroRuedas;}
public class Auto extends VehiculoTerrestre implements VehiculoMotorizado {
public void avanzar() {...
}}
Vehiculo
avanzar()
VehiculoTerrestre
numeroRuedas: int
Auto
avanzar()
<<interface>>
VehiculoMotorizado