Você está na página 1de 65

Conceptos de Orientacin a Objetos

Desarrollo de software orientado a objetos con UML para programadores Java

Conceptos de orientacin a objetos

Contenidos
I. II. III. IV. V. VI. VII. VIII. IX. X.

Introduccin a la orientacin a objetos Ventajas de la orientacin a objetos Programacin tradicional Programacin orientada a objetos Programacin Clsica VS POO Lenguajes orientados a objetos El modelo Orientado a Objetos Jerarqua de clases y Herencia Polimorfismo Interfaz

Conceptos de orientacin a objetos

Introduccin a la orientacin a objetos

Conceptos de orientacin a objetos

Introduccin a la orientacin a objetos


La POO es mucho ms que un nuevo conjunto de estructuras e instrucciones de cdigo. La POO que consiste en la organizar y construir de programas a partir de modelos que representan la interaccin de los objetos del mundo real. Es una nueva forma de organizar el conocimiento.

La POO constituye una simulacin de un modelo del mundo real


Conceptos de orientacin a objetos

Ventajas de la orientacin a objetos


Permite crear modelos ms prximos a la al mundo real, ms estables y preparados para los cambios.
Permite el desarrollo iterativo que facilita el diseo de sistemas complejos.

Facilita la reutilizacin del cdigo.


Mayor independencia de la plataforma. Desarrollo de aplicaciones Web con arquitectura de capas: presentacin, negocios y datos. Desarrollo ms rpido y flexible. Facilita el trabajo en equipo y mantenimiento del software Mejora la productividad y calidad del software. En OO resulta ms importante entender que es y que hace un objeto, que el decidir como y en que lenguaje OO se implementar.
Conceptos de orientacin a objetos

tres

II
La POO frente a programacin tradicional

Conceptos de orientacin a objetos

Programacin tradicional
Desarrollada a partir de funciones y datos.

Los datos se estructuran con el fin de que puedan ser


procesados por un conjunto de funciones diferentes.
Funcin 1 Funcin 2

Datos

Funcin 3

Los datos y las funciones estn sujetos a cambios.


Problemas que presenta:

Falta de portabilidad y reutilizacin del cdigo. Cdigo difcil de mantener. Ciclos de desarrollo largos. Tcnicas de codificacin poco intuitivas.
Conceptos de orientacin a objetos

Programacin orientada a objetos


Un programa OO esta formado por una coleccin de objetos. Cada objeto es una entidad que combina datos y mtodos (funciones) que actan sobre esos datos. Durante la ejecucin, los objetos se envan mensajes entre s para ejecutar las acciones requeridas. Los objetos con similares caractersticas se organizan en clases, permitiendo que los datos y mtodos puedan ser heredados de unas clases a otras.
Ojeto1 datos mtodos Ojeto2 datos mtodos datos mtodos
Conceptos de orientacin a objetos

Ojeto3

Programacin Clsica VS POO


En
la programacin clsica estructurada existe un programa principal que controla todas las actividades mediante llamadas a funciones o procedimientos. mensajes que un objeto emisor enva a un objeto receptor para que este ejecute una determinada operacin, exclusiva de ese objeto, que depende del mensaje enviado.

En la POO la accin esta basada en los

Conceptos de orientacin a objetos

Programacin Clsica VS POO


Estructurada
Uso de memoria Global Divisin en Mdulos Mdulos sin estado Divisin en Objetos Encapsulacin (Atributos y Mtodos) Herencia, Polimorfismo, Sobrecarga

POO
Uso de memoria Fraccionada

Programa Estructurado en C
main(){ printf(Area: %lf, rectangulo(5,2)); } double rectangulo (double base, double altura) { return base * altura; }

class Rectangulo{ private double base, altura;

Programa OO Java

public Rectangulo(double b, double a) { base=b; altura=a; } public double area(){ return base*altura; }

public class PrincipalApp { public static void main() { Rectangulo r = new Rectangulo(5, 2); System.out.println("Area ="+ r.area()); } }

Conceptos de orientacin a objetos

10

Lenguajes orientados a objetos


Caractersticas

Basado en Objetos y clases. Soporte total de herencia y polimorfismo.


Evolucin histrica
.Net (2000...) : Visual C#, Visual Basic, Visual C++ Simula 67 C++ (1983...) C# (2000...)

Modula 2
SmallTalk (1972-...) ADA(1979-...) SmallTalk 80 Eiffel 85 Modula 3 (1986...)

Java (1995...)
Object Pascal (Delphi)

ADA 95

60-70's

80's

90 - 2000s
Conceptos de orientacin a objetos

11

III

El Modelo orientado a objetos

Conceptos de orientacin a objetos

12

Conceptos fundamentales

Objetos y Mensajes
Orientacin a objetos

Clases

Herencia y Polimorfismo

Interfaces

Conceptos de orientacin a objetos

13

Objeto
Un Objeto es
Una cosa tangible y/o visible del mundo real.
Un telfono mvil Un Coche Un reloj

Algo inventado o imaginario con un cierto significado.


Colores Una Cuenta Bancaria

Una entidad de software.

Calculadora de Windows

Conceptos de orientacin a objetos

14

Objeto
Un objeto tiene:
Identidad (Quien soy?): Un identificador nico Estado (Como soy?): Conjunto de propiedades = Atributos (Datos) Comportamiento (Qu se hacer?): Un conjunto de operaciones = Mtodos Procedencia (Cul el mi origen?) = Clase Relacin con otros objetos (Qu entiendo?): Comunicacin = Mensajes

Los trminos instancia y objeto son sinnimos.


Conceptos de orientacin a objetos

15

Objeto
Soy orientado a objetos!

Cmo soy?
Edad Raza Color Altura

Qu se hacer?
Ladrar Comer Dormir Correr

Estado

Comportamiento
Conceptos de orientacin a objetos

16

Objeto
Los objetos encapsulan atributos y mtodos Atributos (Datos)
Describen estado de un objeto, lo que lo diferencia de cualquier otro.

Cada atributo se implementa mediante una variable que tiene algn valor. Este valor puede ser un nmero, una cadena de caracteres, una referencia a otro objeto, etc.

Mtodos (Comportamiento)
Describen las acciones (operaciones) que se realizan sobre un objeto para consultar o modificar su estado. Se implementan mediante funciones formadas por instrucciones de cdigo que realizan una determinada tarea, pueden recibir parmetros y devolver o no un valor.

Conceptos de orientacin a objetos

17

Objeto
Atributos + Mtodos
Objeto
Aspecto EXTERNO (interfaz)
I N T E R F A Z

Mtodos (Funciones)

(Variables de datos simples )

Atributos

Referencia a un objeto B

Aspecto INTERNO

Conceptos de orientacin a objetos

18

Objeto
Ejemplo Prctico
Modelo fsico

Modelo informtico

Coche
Marca Color Potencia Carburante Velocidad MximaVelocidad
Aceleracin

Atributos

Mtodos
PararMotor( ) ArrancarMotor( ) Frenar CambiarMarcha( ) Acelerar() Girar()
Conceptos de orientacin a objetos

19

Objeto
Ejemplo Prctico
Modelo fsico

Modelo informtico

Bombilla Atributos
tipo consumo Potencia duracin

encender() apagar() brillar() atenuar()

Mtodos

Conceptos de orientacin a objetos

20

Objeto
Ejemplo Prctico
Modelo fsico

Modelo informtico

Cajero Automtico

Atributos
Billetes Admitidos Cantidad Entregada Efectivo disponible Operacin Mximo Importe Mltiplos.

Validar PIN Ingresar Dinero Sacar Dinero Consultar Saldo Imprimir Recibo Cancelar Operacin
Conceptos de orientacin a objetos

Mtodos

21

Objeto
Estructura interna de un objeto

Coche
Mtodos
Operaciones permitidas. Pueden estar o no ocultas par el usuario.
acelerar parar
marca color potencia velocidad

Atributos
Estructura encapsulada de los datos
frenar

arrancar

Objeto coche
Conceptos de orientacin a objetos

22

Abstraccin
La abstraccin es la capacidad para tener en cuenta nicamente los aspectos esenciales de un objeto, ignorando los detalles irrelevantes o accidentales que no son importantes para el sistema que se esta modelando.

Significa centrar la atencin en los aspectos fundamentales: Como es un objeto es y que es lo que hace. Supone identificar las clases y objetos que forman parte del dominio del problema. Qu atributos (datos) tienen, cmo se comportan (mtodos) y que mensajes se envan.
Objeto coche

Atributos

Parar
Marca Color Potencia Carburante Velocidad

Acelerar

Frenar

Mundo Real

Abstraccin

Mtodos

Arrancar
Conceptos de orientacin a objetos

23

Clases
Conceptualmente, una Clase describe un conjunto de objetos que comparten: Las mismas propiedades: Atributos El mismo comportamiento: Mtodos Las mismas relaciones con otros objetos: Mensajes El mismo significado dentro del sistema

Fsicamente, una Clase es una pieza o componente de software que acta como una plantilla para fabricar de objetos que tienen los mismos atributos y mtodos.
Los objetos (instancias) creados a partir de una clase se diferencian nicamente por los valores de sus atributos. Los atributos y mtodos (miembros de la clase) se definen una vez, cuando definimos la estructura de la clase a la que pertenecen.
Conceptos de orientacin a objetos

24

Clases
Objetos de la Clase Coche

Conceptos de orientacin a objetos

25

Clases
Representacin de una Clase
Ejemplo 1: El conjunto de todos los coches constituye la clase Coche, que posee, entre otros, los atributos y mtodos descritos en la figura.
Coche
Marca Color Potencia Tipo de Carga Velocidad Mxima Carburante Velocidad Aceleracin Capacidad Deposito Parar ( )

Atributos

Nombre de la Clase

Mtodos

Arrancar ( ) Acelerar( ) Frenar( ) Cambiar Marcha (Tipo) Girar (Sentido, Grados )

Conceptos de orientacin a objetos

26

Clases
Representacin de una Clase
Ejemplo 2:

Bombilla Atributos
tipo consumo potencia duracion apagar() encender () brillar() atenuar()

Nombre de la Clase

Mtodos

Conceptos de orientacin a objetos

27

Clases
Ejercicio 1: Definir las clases bola y palo para simular una partida de billar.

Bola
Atributos
posicin_X posicin_Y Color velocidad

Palo
Orientacion ObtenerOrientacion () Mover (grados)

Atributos

Mtodos

Golpear (x, y, fuerza) ObtenerPosicion () ObtenerColor ()

Mtodos

Conceptos de orientacin a objetos

28

Clases
Ejercicio 2: Define la clase ventana para un sistema Windows o Linux.

Ventana posicion_x posicion_y ancho alto estado Ventana( x, y, ancho, alto) cambiarDimension(ancho, alto) abrir() cerrar() mover(x, y) minimizar() maximiar() restaurar(x, y)

Conceptos de orientacin a objetos

29

Clases
Ejercicio 3: Define una clase Circulo con un radio y operaciones para calcular el rea, obtener el radio y modificarlo

Circulo
atributo radio mtodo constructor para crear crculos con un radio dado

radio circulo(radio) area() getRadio() setRadio(valor)


mtodo para calcular el rea mtodo para obtener el radio mtodo para modificar el radio

Conceptos de orientacin a objetos

30

Clases
Implementacin de la clase en Java
class Circulo { private double radio; public Circulo(double radio) { // constructor this.radio=radio; } public double area(){ return Math.PI*radio*radio; } public double getRadio(){ return radio; } public void setRadio(double valor){ radio = valor; } }

Circulo
radio: double
Circulo(radio: double) area( ): double getRadio( ): double setRadio(valor:double):void

En Java, variables o constantes pueden ser de cualquiera de los tipos simples: boolean, char, String, byte, short, int, long, float y double; as como arrays de los tipos simples o referencias a otros objetos.
Conceptos de orientacin a objetos

31

Clases y objetos
Ejemplo 1: La instanciacin de la clase Coche crear objetos coche con valores especficos para sus atributos

Clase Coche Coche


Marca Modelo Color Velocidad Carburante Parar ( ) Arrancar ( ) Acelerar( ) Frenar( ) Cambiar Marcha (Tipo)

Instancias Objeto de la clase Coche

Objeto
Todos los objetos (instancias) de la clase Coche tienen los mismos mtodo y los mismos atributos, pero con diferentes valores

Clase

ibiza104: Coche
marca = Seat Modelo = Ibiza color = Azul Polar Velocidad Maxima = 190 Carburante = Diesel

Valor

Conceptos de orientacin a objetos

32

Clases y Objetos
Ejemplo 2: La instanciacin de la clase Bola en un programa que simule una partida de billar crear objetos bola con valores especficos para sus atributos

Clase Bola de billar

Bola
posicin_X posicin_Y color Golpear (x, y, fuerza) ObtenerPosicion () ObtenerColor ()

Instancias Objetos bola

bolaRoja : Bola
posicin_X = 120 posicin_Y = 35 Color = Rojo
Valores

La bola roja es una instancia de la Clase Bola cuyos atributos toman valores concretos que describen como es.
Conceptos de orientacin a objetos

33

Clases y objetos
Ejemplo 3: La instanciacin de la clase Circulo crear objetos circulo con valores especficos para sus atributos
Clase Circulo Objeto de la clase Circulo

Circulo
radio: double color: String Circulo(radio: double)
Instancias

area( ): double
getRadio( ): double setRadio(valor:double):void getColor( ): String setColor(valor:String):void

circulo1: Circulo
radio = 20.5 color = Azul

circulo2: Circulo
radio = 10.5 color = Rojo

Todos los objetos (instancias) de la clase Coche tienen los mismos mtodo y los mismos atributos, pero con diferentes valores
Conceptos de orientacin a objetos

34

Programa Orientado a Objetos


Un programa OO esta compuesto por un conjunto de objetos que se comunican entre s para lograr un determinado objetivo.

Ciclo de vida de un objeto en un programa:


Creacin de los objetos (instancias) de cada clase, llamando al mtodo constructor. Manipulacin: Acceso a los atributos para asignarles valores o cambiarlos Ejecucin de mtodos Destruccin de los objetos cuando ya no son necesarios.

Conceptos de orientacin a objetos

35

Programa Orientado a Objetos


Ejemplo: Programa en Java que usa la clase Circulo
static indica que main() es un mtodo de clase esttico: no es necesario crear una instancia de la clase usaCirculoApp para llamarlo.

class usaCirculoApp {
public static void main ( ) { // mtodo principal // constructor: crea un objeto c de la clase Circulo de radio 5.5 Circulo c = new Circulo(5.5); // LLamada al constructor // llamada al mtodo Area del objeto c System.out.println("Area del crculo: + c.area()); }
mtodo println del objeto out de la clase esttica (static) System. El objeto out es una variable de instancia de System. Llamada al mtodo area() del obsjeto c de la clase circulo

Conceptos de orientacin a objetos

36

Encapsulacin
La encapsulacin consiste en ocultar los atributos y mtodos de un objeto a otros objetos. Los atributos y mtodos ocultos son miembros privados al objeto La encapsulacin se define en el mbito de la clase y permite separar qu hace un objeto de cmo lo hace

Comportamiento: Mtodos privados (ocultos para el resto de los objetos)

Atributos privados (ocultos para el resto de los objetos)

Conceptos de orientacin a objetos

37

Encapsulacin
La encapsulacin crea una Interfaz que rodea a los objetos que y que protege la estructura interna de los mismos.
La interfaz de un objeto permite la comunicacin con otros objetos invocando los mtodos pblicos de los mismos. La nica forma de consultar y modificar los atributos de privados de un objeto, es a travs de sus mtodos pblicos.
Parar Acelerar 38 Frenar
Interfaz Implementacin Mtodos pblicos

Mtodos privados
Atributos privados

Atributos

Arrancar

Interfaz para la clase Coche Por ejemplo: El volante, el cuentakilmetros, los pedales y la palanca de cambios representan una interfaz pblica hacia los mecanismos de funcionamiento del automvil Para conducir no es necesario conocer la mecnica del automvil (su implementacin)
Conceptos de orientacin a objetos

Encapsulacin
Cualquier objeto presenta dos partes:
Parte visible (interfaz publica):
Atributos y mtodos pblicos Contrato pblico de comportamiento. Operaciones de entrada y salida Parte oculta (implementacin): Atributos y mtodos privados Estructura de datos para la informacin Cdigo ejecutable de los mtodos.

La interfaz de un objeto protege su estructura interna y hace que no sea necesario conocer su implementacin para poder usarlo.
Conceptos de orientacin a objetos

39

Encapsulacin
La ocultacin de informacin se implementa en los lenguajes OO mediante diversos mecanismos de proteccin. UML y Java permiten asociar tres niveles de proteccin diferentes a cada miembro de la clase:
Miembro + Publico Privado Descripcin Sin proteccin. Accesible por cualquier otro objeto de un programa. Accesible solo por los objetos de la Clase que lo define. Accesible por los objetos de la Clase que lo define y por los objetos de subclases derivadas

# Protegido

Clase
- atributoPrivado:Tipo +atributoPublico: Tipo #atributoProtegido: Tipo - operacionPrivada() +operacionPublica() #operacionProtegida()
Conceptos de orientacin a objetos

40

Encapsulacin
En Java un miembro se define pblico colocando el identificador public delante de su declaracin. Para los miembros privados se utiliza private y para los protegidos protected

Circulo
- radio: double + Circulo(r: double) + area( ): double + getRadio( ): double + setRadio( r : double ):void

class Circulo { private double radio; public Circulo(double r) { // constructor radio = r; } public double area(){ return Math.PI*radio*radio; } public double getRadio(){ return radio; } public void setRadio(double r){ radio = r; } }

Conceptos de orientacin a objetos

41

Mensajes
Cualquier sistema esta compuesto por objetos que interactan o se comunican entre s envindose mensajes para realizar operaciones propias de su comportamiento. La comunicacin de un objeto con cualquier otro, y por tanto, el acceso a los atributos y ejecucin de los mtodos de ese objeto, solo se puede realizarse a travs de la Interfaz publica de ese objeto y del sistema de mensajes predefinido con el mismo.

Objeto Emisor

Objeto Receptor

Conceptos de orientacin a objetos

42

Mensajes
Ejemplo:
En el ejemplo del Coche, una persona pulsa el pedal de aceleracin para aumentar la velocidad a modo de interfaz, para enviar el mensaje acelera. El coche responder aumentando la velocidad.

Parar Frenar

Objeto receptor Coche Acelerar Objeto Emisor

Atributos

Mensaje: coche104.acelerar ( inc )


Objeto receptor Mtodo invocado

Arrancar Interfaz de Mensajes

Parmetro para ejecutar el mtodo

Conceptos de orientacin a objetos

43

V
Jerarqua de clases y Herencia

Conceptos de orientacin a objetos

44

Especializacin /Generalizacin
La especializacin consiste en definir subclases (subconjuntos de objetos similares) a partir de una clase ms genrica. De igual forma, varias clases de objetos similares pueden constituir una Generalizacin de una clase ms general. Las clases especializadas se llaman Subclases y la clase ms genrica se llama Superclase. La Especializacin/Generalizacin define una clases Jerarqua de

La superclase encapsula los atributos y mtodos comunes a todas las subclases

Conceptos de orientacin a objetos

45

Especializacin / Generalizacin
Superclase (Tipo) Clase padre Terrestre Vehculo

Martimo

Areo

Coche

Camin

Autobs

Subclases (Subtipo) Clase hija

La Especializacin/Generalizacin permite modelar relaciones del tipo es un o es una clase de y establecer clasificaciones: Por ejemplo, un coche es un Vehculo Terrestre

Conceptos de orientacin a objetos

46

Especializacin / Generalizacin
Ejemplo 1: Jerarqua de clases de Animal

Superclase
Especializa

Animal

Mamfero Subclases Perro Gato Caballo

Generaliza

Conceptos de orientacin a objetos

47

Herencia
La Herencia es la propiedad que hace que las subclases hereden los atributos y mtodos de la superclase. Las subclases pueden responder a los mismos mensajes que la clase padre. Las subclases pueden tener sus propios atributos y mtodos. Ventajas de la herencia: la reutilizacin polimorfismo
Ejemplo 2:
La clase Caballo es una subclase de la clase Animal, y por esta razn, hereda los atributos (edad, peso y altura) y mtodos (comer y dormir) derivados de la clase Animal. Adems, la clase Caballo, puede tener sus propios atributos (nombre y criadero) y mtodos (correr).

de cdigo el

Animal
- Edad - Peso - altura - comer() - dormir() Herencia

Caballo
- nombre - criadero - correr()
Conceptos de orientacin a objetos

48

Herencia
Ejemplo 3:
Animal
Herencia Dormir() {

dormir()

Len dormir()
Dormir() { // boca abajo }

Oso dormir()

Caballo dormir()

El mtodo dormir() no se implementa en el supertipo. Es heredado por las subclases y se redefinirse en cada una de ellas para que el comportamiento de cada subclase sea diferente segn sea Len, Oso o Mono.

Dormir() { // boca arriba }

Dormir() { // de pie }

Conceptos de orientacin a objetos

49

Herencia
Ejercicio: Crea una jerarqua de herencia a partir de los siguientes conceptos:

Tringulo Rectangulo Circulo radio area() posicion_x posicion_y color Figura obtenerColor() altura base

Figura
color posicion_x posicion_y area() obtenerColor()

Circulo
radio area()

Rectangulo
base altura area()

Triangulo
base altura area()

mtodo redefinido
Conceptos de orientacin a objetos

50

Herencia
Implementacin en Java
Figura
+ area():double

class Figura { public double area(); } }

Circulo
# radio:double

+Circulo(r:double) +area():double

class Circulo extends Figura{ private double radio; public Circulo(double r) { radio=r; } public double calcularArea(){ return Math.PI * radio * radio; } }

extends indica que Circulo es una subclase que hereda los atributos y mtodos de Figura

public class FiguraApp { public static void main(String[] args) { Circulo c = new Circulo(5.5); // Crculo de radio 5.5 System.out.println(rea: "+ c.area()); } }
Conceptos de orientacin a objetos

51

Clases Abstractas y Concretas


Clases Concretas. Son clases a partir de las cuales se pueden crear instancias de objetos Clases Abstractas. Definicin parcial del estado y comportamiento de una Clase: No se pueden crear instancias a partir de ellas Todos sus mtodos son abstractos, no tienen implementacin. Se usan en una jerarqua de clases para forzar a que las subclases proporcionen un comportamiento especifico Utilizadas en polimorfismo para definir operaciones comunes

Conceptos de orientacin a objetos

52

Clases Abstractas y Concretas


Ejemplo: Clases concretas y abstractas Clase Abstracta Animal
Si bien en el mundo real existen caballos, perros, etc., el concepto animal propiamente dicho continua siendo abstracto. No basta para definir completamente un animal.

Mamfero

Clases concretas Caballo

Perro

Gato

En UML, el nombre de las clases abstractas se escribe en cursiva, como se ve en la figura, o bien con el estereotipo <<Abstract>>
<<Abstract>>
{A}
Una forma no estndar pero prctica para designar una clase como abstracta

Animal

Animal

Conceptos de orientacin a objetos

53

VI Polimorfismo

Conceptos de orientacin a objetos

54

Polimorfismo
Polimorfismo es la capacidad que tienen objetos de diferentes clases de responder al mismo mtodo, pero con diferente comportamiento. Esto significa que puede haber muchos mtodos con el mismo nombre en diferentes clases. Cada Clase responde al mtodo con su propio cdigo.

El polimorfismo permite que los objetos interacten entre ellos sin necesidad de conocer a que clase pertenecen.

Vehculo Automtico de Carga

SuperClase

SubClases

Un vehculo automtico de carga puede especializarse para cargar bobinas, palets u otro tipo de elementos. Los dems objetos del sistema no tienen porque saber de cuantos tipos de vehculos tenemos. El mismo mensaje, cargar, ser interpretado de distinta manera por cada objeto receptor, segn sea la carga: bobinas, palets, etc.

Vehculo Automtico de Carga de Palets

Vehculo Automtico de Carga de bobinas

Cualquier objeto del sistema puede enviar mensajes a los vehculos automticos de carga sin conocer de qu tipo de vehculos se trata.
Conceptos de orientacin a objetos

55

Polimorfismo
Ejemplo 1: Consideramos las subclases Perro y Gato de la clase abstracta Animal.
<<abstract>>

clase abstracta public abstract class Animal { public abstract void emitirSonido(); } Gato mtodo abstracto

Animal

+ emitirSonido()

Perro + emitirSonido()

+ emitirSonido() public class Gato extends Animal { public void emitirSonido() { System.out.println("MIAU!"); } }

public class Perro extends Animal { public void emitirSonido() { System.out.println("GUAU!"); } }

El mtodo emitirSonido() tiene un comportamiento diferente segn si el Animal es una instancia de Perro o Gato. En el primer caso el sonido emitido ser Guau y en el segundo caso Miau. Tenemos un conjunto de animales emiten sonidos diferentes al invocarse el mtodo emitirSonido().

Conceptos de orientacin a objetos

56

Polimorfismo
Ejemplo 1:

Uso de Polimorfismo en Java

public class animalApp { public static void main() { Perro perro = new Perro(); Gato gato = new Gato(); System.out.println("Mi perro hace "); lanzarSonido(perro); System.out.printf(Mi gato hace "); lanzarSonido(gato); static void lanzarSonido( Animal sujeto){ sujeto.emitirSonido(); }

Conceptos de orientacin a objetos

57

Polimorfismo
Ejemplo 2:
Clase abstracta <<abstract>>

Figura

+ Figura() <<A>> + area():double

public abstract class Figura { public abstract double area(); } }

mtodo abstracto

Circulo
+ radio:double +Circulo(r : double) +area():double + ancho:double + alto:double

Rectangulo

+Rectangulo(b : double, h : double) +area():double class Rectangulo extends Figura{ private double base, altura; public Rectangulo(double b, double h) { base = b; altura = h; } public double area(){ return base * altura; } }
Conceptos de orientacin a objetos

class Circulo extends Figura{ private double radio; public Circulo(double r) { radio = r; } public double area(){ return Math.PI* radio* radio; } }

58

Polimorfismo
Ejemplo 2:

Uso de Polimorfismo en Java

public class FigurasApp { public static void main() { Circulo c = new Circulo(5.5); Rectangulo r = new Rectangulo(4.0,2.0); System.out.println(rea circulo = + areaFigura(c)); System.out.println(rea reactngulo: + areaFigura(r); static void areaFigura(Figura figura){ figura.area(); }

Conceptos de orientacin a objetos

59

VII

Interfaz

Conceptos de orientacin a objetos

60

Interfaz
Una interfaz es una coleccin de declaraciones de mtodos sin implementacin. Tambin puede incluir constantes. Una interfaz se define mediante una clase abstracta que tiene nicamente mtodos abstractos y pblicos. Una interfaz describe las caractersticas comunes a varias clases, formen o no parte de una jerarqua. Para tener herencia mltiple en aquellos lenguajes que no la permiten, como Java, se debe utilizar una interfaz. La interfaces permiten polimorfismo en clases que no son parte de una jerarqua.

Conceptos de orientacin a objetos

61

Interfaz
Las clases que implementan (implements) una interfaz deben definir obligatoriamente todos los mtodos de la interfaz.
Una clase puede heredar (extends) de una sola clase base, pero puede implementar varios interfaz. Diferencia entre interfaz y clase abstracta. Una interfaz es solo una lista de mtodos abstractos (no implementados). Una clase abstracta puede incluir mtodos implementados y abstractos, variables y constantes.

Conceptos de orientacin a objetos

62

Interfaz
Ejemplo 1:

La Interfaz AgenteDeFechas incluye operaciones de tratamiento de fechas Las clases Calendario, Empleado y pedido implementan esta interfaz

<<interface>> AgenteDeFechas validarFecha() : boolean esBisiesto(): boolean formatoFecha() : String diferenciaFechas(): int mesesEntreFechas(): int horoscopo() : String obtenerJuliano(): int sumarDiasFecha(): Date restarDiasFecha(): Date sumarMesesFecha(): Date restarMesesFecha(): Date

Implementacin de la interfaz
Calendario Empleado Pedido

Conceptos de orientacin a objetos

63

Interfaz
Ejemplo 2: Herencia mltiple mediante una interfaz.
La interfaz Volante declara los mtodos Girar a la izquierda, Girar a la derecha La interfaz PedalAcelerador ofrece los mtodos Pisar acelerador, Levantar acelerador La clase Coche implementa las interfaces Volante y PedalAcelerador
Clase Abstracta Mtodos Abstracto <<Interfaz>> <<Interfaz>> Clase Abstracta

Volante

PedalAcelerador
+pisarAcelerador() +levantarAcelerador()

+girarIzquierda() +girarDerecha()

Mtodos Abstracto

Realizacin (Implementacin) Clase Concreta

Coche
+girarIzquierda() +girarDerecha() +pisarAcelerador() +levantarAcelerador()

Implementan los mtodos de las interfaces

Conceptos de orientacin a objetos

64

Interfaz
Ejemplo 3: Interfaz y Polimorfismo
La interfaz Parlanchin declara un mtodo emitirSonido que implementan las subclases de la clase Animal y la clase Reloj
<<Interfaz>> La clase abstracta Animal implementa la interfaz Parlanchin y define el mtodo emitirSonido de dicha interfaz. Las subclases Perro y Gato. pueden redefinir el mtodo abstracto emitirSonido de la clase Animal, lo que permite que ambas clases respondan de forma diferente al mismo mensaje.

Parlanchin

Clase abstracta

+emitirSonido()

La invocacin del mtodo emitirSonido produce Tic, Tac

realizacin

Animal
La invocacin del mtodo emitirSonido produce Guau

Reloj
+emitirSonido() herencia
La invocacin del mtodo emitirSonido produce Miau

+emitirSonido()

Perro
+emitirSonido()

Gato
+emitirSonido()

La Clase Reloj, que no es una subclase de la clase Animal, tambin implementa la interfaz Parlanchin y redefine el mtodo emitirSonido.

Conceptos de orientacin a objetos

65

Você também pode gostar