Análisis y Diseño OO 1

23
Módulo 2 Alejandro González Orellana Análisis y Diseño OO Clase 1 POO y UML básico POO en Java

Transcript of Análisis y Diseño OO 1

Módulo 2

Alejandro González Orellana

Análisis y Diseño OO

Clase 1

• POO y UML básico• POO en Java

Temario

• POO y UML Básico

• POO en Java

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

Asociación en UML

unAuto

Los objetos de unen con una línea

unConductor

unPasajero

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.

Temario

• POO y UML básico

• POO en Java

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