Escolar Documentos
Profissional Documentos
Cultura Documentos
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
tres
II
La POO frente a programacin tradicional
Programacin tradicional
Desarrollada a partir de funciones y datos.
Datos
Funcin 3
Ojeto3
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; }
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()); } }
10
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
12
Conceptos fundamentales
Objetos y Mensajes
Orientacin a objetos
Clases
Herencia y Polimorfismo
Interfaces
13
Objeto
Un Objeto es
Una cosa tangible y/o visible del mundo real.
Un telfono mvil Un Coche Un reloj
Calculadora de Windows
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
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.
17
Objeto
Atributos + Mtodos
Objeto
Aspecto EXTERNO (interfaz)
I N T E R F A Z
Mtodos (Funciones)
Atributos
Referencia a un objeto B
Aspecto INTERNO
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
Mtodos
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
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
26
Clases
Representacin de una Clase
Ejemplo 2:
Bombilla Atributos
tipo consumo potencia duracion apagar() encender () brillar() atenuar()
Nombre de la Clase
Mtodos
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
Mtodos
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)
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
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
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
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
Bola
posicin_X posicin_Y color Golpear (x, y, fuerza) ObtenerPosicion () ObtenerColor ()
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
35
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
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
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; } }
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
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
Atributos
43
V
Jerarqua de clases y Herencia
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
45
Especializacin / Generalizacin
Superclase (Tipo) Clase padre Terrestre Vehculo
Martimo
Areo
Coche
Camin
Autobs
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
46
Especializacin / Generalizacin
Ejemplo 1: Jerarqua de clases de Animal
Superclase
Especializa
Animal
Generaliza
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() { // de pie }
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
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
52
Mamfero
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
53
VI Polimorfismo
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.
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.
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!"); } }
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().
56
Polimorfismo
Ejemplo 1:
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(); }
57
Polimorfismo
Ejemplo 2:
Clase abstracta <<abstract>>
Figura
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:
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(); }
59
VII
Interfaz
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.
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.
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
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
Coche
+girarIzquierda() +girarDerecha() +pisarAcelerador() +levantarAcelerador()
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()
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.
65