Upload
hyun-jaechura
View
30
Download
1
Embed Size (px)
Citation preview
15/05/2013
1
M. Sc. Ing. Lucas Coaquira Cano
CAP. 2 CONCEPTOS
FUNDAMENTALES DE POO
Es un mtodo de implementacin en el que los programas
se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de
alguna clase, y cuyas clases son todas miembros de una
jerarqua de clases unidas mediante relaciones de
herencia. (Grady Booch)
Existen tres importantes partes en la definicin: la POO
Utiliza objetos, no algortmicos, como bloques de construccin Cada objeto es una instancia de una clase Las clases se relacionan unas con otras por medio de la herencia.
2.1 QUE ES LA PROGRAMACION ORIENTADA A
OBJETOS?
Los conceptos fundamentales de programacin son: objetos, clases,
herencia, mensajes y polimorfismo. M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
2.1.1 El objeto
La idea fundamental en los LOO es combinar en una sola unidad datos y
funciones que operan sobre estos datos. Tal unidad se denomina objeto.
Funcin miembro
Funcin miembro
Funcin miembro
Datos
Datos
Datos
Funcin
Funcin
Procedimientos externos Datos Funciones externas
Privado Pblico
Figura 2.1. El modelo objeto
Los datos y las funciones asociadas se dicen que estn encapsulados en una nica entidad o mdulo.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Los datos estan ocultos, eso asegura que no se puedan modificar accidentalmente
por funciones externas al objeto.
Un objeto es una entidad que contiene los atributos que describen el
estado de un objeto del mundo real y las acciones que se asocian con el objeto del mundo real.
2.1.2 Ejemplos de objetos
Objetos fsicos: Aviones en un sistema de control de trfico areo. Automviles en un sistema de control de trfico terrestre. Casas.
Elementos de interfaces grficos de usuario: Ventanas. Mens. Objetos grficos (cuadrados, tringulos, etc.). Teclado. Cuadros de dilogo. Ratn.
Animales: Animales vertebrados. Animales invertebrados. Pescados.
Tipos de datos definidos por el usuario: Datos complejos. Puntos de un sistema de coordenadas.
Alimentos: Carnes. Frutas. Pescados. Verduras. Pasteles.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
15/05/2013
2
Clase: Persona
Objetos: Juan, Alberto, Julia
Clase: Perro
Objetos: Boby, Lazy, Benji
Clase: Pais
Objetos: Chile, Australia, Afganistan
Clase: Curso
Objetos: ING1310, ING2210
Clase: Alumno
Objetos: Pedro, Oscar, Carolina, Diego
Clase: Universidad
Objetos: UANCV, UNA, PUC, UNSA
Clase: Nmero Complejo
Objetos: (3 + 5i ), (5 7i ), 0, i
Ejemplos de clases y objetos:
Mtodos
Variables
Nombre del objeto
Datos
Mtodos
(a)
(c) (d)
(b)
Mtodos
Atributos
Nombre
Figura 2.2. Notaciones graficas de objetos: (a) Taylor; (b) Coad / Yourdon (c) OMT; (d) Booch
Nombre del
objeto
Datos y
operaciones
La notacin grfica de un objeto vara de unas metodologas a otras
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Notacin de clase en UML FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Clases y Objetos
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Point
- x: Real
- y: Real
:Point + rotate (angle: Real)
+ scale (factor: Real)
p1: Point
x = 3.14
y = 2.718
x = 1
y = 1.414
Clase
Objetos
15/05/2013
3
Automvil
- Marca : string
- Modelo: string - Color: string
+ frenar(): void
+ acelerar(): void + retroceder(): void
celular
- Marca : string
- Modelo: string
+ llamar(): void
+ colgar(): void
Un_objeto:celular
- Marca : Sagem
- Modelo: X5
+ llamar(): void
+ colgar(): void
Rectangulo
- base : float
- altura : float
+ Rectangulo()
+ calcularArea(b: float, a:float) :float
+ ponerBase(b: float) : void
+ obtenerBase(): float
+ ponerAltura(a: float) : void
+ obtenerAltura() : float
+ calcularPerimetro(b: float, a: float): float
public class NombreClase {
/*
Atributos:
tipo nombreAtributo1 ;
tipo nombreAtributo2 ;
*/
/*
Metodos :
salida nombreMetodo1 ( parametros){ contenido del
metodo } ;
Salida nombreMetodo2 (parametros) { contenido del
metodo } ;
*/
}
Ejemplo de plantilla o formato de clase
class Prueba{
public static void main(String args[]){
NombreClase objeto = new NombreClase();
}
Utilizacion de la clase
15/05/2013
4
Ejemplo de clase perro
public class Perro{
//atributos
private String nombre;
private String raza;
private float altura;
//metodos
public Perro() { ... }
public void comer() { ... }
public void dormir() { ... }
public void ladrar() { ... }
}
class Prueba{
public static void main(String args[]){
Perro pancho = new Perro();
...
}
}
Consideremos la ilustracin de un coche vendido por un distribuidor de coches.
Figura 2.3. El objeto Coche1.
Coche 1
Matrcula
Marca
Precio
Ao compra
Calcular_Precio_A
ctual
Identificador del objeto
Atributos asociados
Mtodos
Atributos: Datos o variables que caracterizan el estado de un objeto.
Mtodos: Procedimientos o acciones que cambian el estado de un objeto.
La encapsulacin de operaciones e informacin es muy importante. Dicha
encapsulacin es la propiedad que permite incluir en una sola entidad (modulo u
objeto) la informacin (datos o atributos) y las operaciones (mtodos o funciones)
que operan sobre dicha informacin.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Informacin
y
operaciones
Seccin
privada
Figura 2.4. Encapsulamiento de datos
Los objetos tienen un interfaz pblico y una representacin privada que permiten
ocultar la informacin que se desee al exterior.
Interfaz pblico
Representacin
privada
Figura 2.5. Interfaz pblico de un objeto
2.1.3 Mtodos y mensajes Un programa orientado a objetos consiste en un nmero de objetos que se comunican unos con otros llamando a funciones miembro (en C++), se denominan mtodos en otros lenguajes (como Java).
Las funciones miembro residen en el objeto y determinan como actan los objetos cuando reciben un mensaje.
Un mensaje es la accin que hace un objeto. Un mtodo es la funcin que se invoca para actuar sobre un objeto.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Llegada de
mensajes Datos
Mtodos
Figura 2.6. Mtodos y mensajes de un objeto
El conjunto de mensajes a los cuales puede responder un objeto se
denomina protocolo del objeto. Ej. El protocolo de un icono puede constar de mensajes
invocados por el click de un botn del ratn cuando el usuario localiza un
puntero sobre un icono.
Los mensajes que recibe el objeto son los nicos conductos que conectan el objeto con el mundo externo.
Cuando se ejecuta un programa OO ocurren tres sucesos:
1. Los objetos se crean a medida que se necesitan
2. Los mensajes se mueven de un objeto a otro (o desde el usuario al objeto)
3. Cuando los objetos ya no son necesarios, se borran y se libera la memoria M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
15/05/2013
5
Funcin miembro
Funcin miembro
Datos
Funcin miembro
Funcin miembro
Datos
Funcin miembro
Funcin miembro
Datos
Figura 2.7. Diagrama orientado a objetos.
Objeto 1
Objeto 2 Objeto 3
2.1.4. Clases
Una clase es la descripcin de un conjunto de objetos; consta de mtodos y datos que resumen caractersticas comunes de un conjunto de objetos. Una clase es la declaracin de un tipo de objeto.
Un objeto es una instancia de una clase.
Una clase es una coleccin de objetos similares.
Madonna, Michael Jackson, Prince, Mecano y Dire Straits son objetos de una clase, Cantantes de rock
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
2.2.1. Definicin de objetos
Un objeto, es una abstraccin de cosas (entidades) del mundo real, tales que:
Todas las cosas (instancias) del mundo real dentro de un conjunto, tienen las mismas caractersticas.
Todas las instancias siguen las mismas reglas.
Cada objeto consta de:
Estado (atributos)
Operaciones o comportamiento (mtodos invocados por mensajes).
Desde el punto de vista informtico, los objetos son TAD.
Algunos ejemplos tpicos de objetos:
Nmero racional
Estado (valor actual).
Operaciones (sumar, multiplicar, asignar)
Una de las ventajas ineludibles de la orientacin a objetos es la posibilidad de
reflejar sucesos del mundo real mediante tipos abstractos de datos extensibles
a objetos.
2.2 UN MUNDO DE OBJETOS
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Vehculo
Estado (valor actual)
Operaciones (acelerar, posiciones, parar )
Conjunto
Estado (elementos)
Operaciones (aadir, quitar, visualizar )
La identificacin se obtiene examinando la descripcin del problema y localizando
los nombre. Pueden caer dentro de las siguientes categoras:
Cosas tangibles. (avin, reactor nuclear, fuente de alimentacin, TV, libro, automvil).
Roles o papeles jugados o representados por personas (gerente, cliente, empleado, medico, paciente, ingeniero).
Organizaciones (empresa, divisin, equipo ). Incidentes (representa un suceso evento- u ocurrencia, tales como vuelo,
accidente, suceso, llamada a un servicio de asistencia tcnica ). Interacciones (implican generalmente una transaccin o contrato y relacionan
dos o mas objetos del modelo: compras comprador, vendedor, artculo-, matrimonio esposo, esposa, fecha de boda).
2.2.2. Identificacin de objetos
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Especificaciones (muestran aplicaciones de inventario o fabricacin: refrigeradora, nevera ).
Lugares (sala de embarque, muelle de carga ).
Luego se identifican los atributos y las operaciones que acten sobre ellos.
Los atributos:
AVION
Matrcula Licencia del piloto
Nombre de avin Capacidad de carga
Nmero de pasajeros
EMPLEADO
Nombre Nmero de identificacin
Salario Direccin
Nombre del departamento
Las operaciones cambian el objeto su comportamiento- Generalmente se dividen en tres grandes grupos: operaciones que
Manipulan los datos (aadir, borrar, cambiar formato ).
Realizan un calculo o proceso.
Comprueban un objeto frente a la ocurrencia e algn suceso de control
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
15/05/2013
6
Todos los objetos (o instancias) de una misma clase comparten
ciertos atributos (propiedades).
Clase: Persona
Atributos: nombre, sexo, fecha de nacimiento, estatura ....
Clase: Perro
Atributos: raza, color de pelo, sexo, ....
Clase: Pais
Atributos: nombre, rea, nmero de habitantes, ...
Distintos objetos (de una misma clase) pueden tener distintos
valores en estos atributos:
Clase: Persona
Objeto: Juan Vargas (futbolista)
Atributos:
nombre: Juan Vargas sexo: masculino
estatura: 1,85 metros
....
Se pueden realizar operaciones o mtodos sobre objetos (instancias)
de una clase, para modificar su estado.
Por ejemplo:
Cambiarle el nombre a una persona
2.2.3. Duracin de los objetos
Los objetos son entidades que existen en el tiempo; por ello deben ser creados o
instanciados (normalmente a travs de otros objetos).
Campos miembro
Funciones miembro
Inte
rfaz
Interior Exterior
Figura 2.8. Diagrama de un objeto.
Objeto hola mundo
Miembro dato privado
Esto es saludo 1
cambiar
anunciar
Figura 2.9. El objeto saludo 1.
2.2.4. Objetos frente a clases. Representacin grfica Es til ilustrar objetos y clases con diagramas
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Cual es la diferencia entre clase y objeto?
Un objeto es un simple elemento, no importa lo complejo que pueda
ser. Una clase, por el contrario, describe una familia de elementos similares.
Clase
Campo miembro
Funciones miembro
Figura 2.10. Diagrama de una clase
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
15/05/2013
7
2.2.5 Datos internos (variables de estado)
Una propiedad importante de los objetos es que almacenan informacin
de su estado en forma de datos internos.
2.2.6 Ocultacin de datos La practica de limitacin del acceso a cierta informacin interna se llama
ocultacin de datos.
Java soporta las caractersticas de ocultacin de datos con las palabras
reservadas public, private y protected
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
ATRIBUTO
Propiedad comn a todos los objetos de una clase
ESTADO
Conjunto de los valores de los atributos de un objeto en un
determinado momento.
Ejemplo:
Clase Coche
Marca
No. de puertas Color
V. Max
CC HP
Ejemplo:
XYZ 5 puertas Negro
205 km/h
4500 cc 230 hp
METODO
Definicin e implementacin de las operaciones que pueden
realizar todos los objetos de una
clase
MENSAJE
Invocacin de un mtodo de una clase sobre un objeto de dicha
clase en un instante
determinado.
Clase Coche
arrancar() parar()
acelerar()
frenar()
arrancar()
acelerar()
2.3 COMUNICACIONES ENTRE OBJETOS: LOS
MENSAJES
El mensaje es esencialmente una orden que se enva a un objeto para indicarle
que realice alguna accin. Los objetos se comunican entre si enviando mensajes,
al igual que sucede con las personas. Los mtodos son los procedimientos que se
invocan cuando un objeto recibe un mensaje.
Los mensajes pueden venir de otros objetos o desde fuentes externas, tales como
un ratn o un teclado.
Datos
Datos Datos
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
15/05/2013
8
2.3.1. Activacin de objetos
A los objetos solo se puede acceder a travs de su interfaz publico. Un objeto
accede a otro objeto envindole un mensaje.
Modelo
Puertas
Edad
2
4
Precio_coche
Matricula
Calcular precio() coche.Calcular precio()
coche (carro)
Figura 2.12. Envo de un mensaje
M. Sc. Ing. Lucas Coaquira Cano
Cuando un objeto esta inactivo (durmiendo) y recibe un mensaje se hace activo.
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
XYZ
2.3.2. Mensajes
Un mensaje es una peticin de un objeto a otro objeto al que le solicita
ejecutar uno de sus mtodos. El objeto que enva la peticin se denomina emisor y el objeto que recibe la peticin se denomina receptor.
Objeto emisor Objeto receptor
Prueba()
Ventas Producto
Calcular_precio(100)
(a)
(b)
Figura 2.13. Objetos emisor y receptor de un mensaje
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Estructuralmente un mensaje consta de tres partes:
Identidad del receptor
El mtodo que se ha de ejecutar
Informacin especial necesaria para realizar el mtodo invocado (argumentos o parmetros requeridos)
Sumar obj_test obj_test sumar 10 xyz
receptor mtodo parmetro
Figura 2.14. Estructura de un mensaje
Cuando un objeto esta inactivo (durmiendo) y recibe un mensaje se hace activo.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
El conjunto de mensajes a los que responde un objeto se denomina comportamiento.
Nombre de un mensaje
Un mensaje incluye el nombre de una operacin y cualquier argumento requerido por esa operacin.
Mtodos
Cuando un mtodo recibe un mensaje, se realiza la operacin solicitada ejecutando un mtodo. Un mtodo es el algoritmo ejecutado en respuesta a la recepcin de un mensaje cuyo nombre se corresponde con el nombre del mtodo.
El receptor responde a un mensaje.
2.3.3. Paso de mensajes El protocolo de un mensaje implica dos partes: el emisor y el receptor. Cuando un
objeto emisor enva un mensaje a un objeto receptor, tiene que especificar los siguiente:
Un receptor Un nombre de mensaje Argumentos o parmetros (si se necesita).
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
15/05/2013
9
Ejemplo
enviarCoche1.Precio_Coche() //enva a Coche1 el mensaje Precio_Coche
enviarCoche1.Fijar_precio(25000) //enva a coche1 el mensaje Fijar_precio
con el parmetro 25000
enviarCoche1.Poner_en_blanco() //enva a Coche1 el mensaje Poner_en_blanco
Los parmetros o argumentos pueden ser:
Datos utilizados por el mtodo invocado.
Un mensaje, propiamente dicho.
La estructura de un mensaje puede ser:
enviar .
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
2.4 ESTRUCTURA INTERNA DE UN OBJETO Consta de dos componentes bsicos:
Atributos
Mtodos (operaciones o servicios)
Gato (Romo) (Torno)
Atributos
Mtodos
Clase Objetos
Alimento
Leche Carne Pescado
Figura 2.15. Notacin grafica OMT de una clase y de un objeto
Figura 2.16. Objetos en notacion Coad / Yourdon M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
2.4.1. Atributos
Describen el estado del objeto. Un atributo consta de dos partes: un
nombre de atributo y un valor de atributo.
Atributos
Objeto A
Mtodo_1
Mtodo_2
Mtodo_3
El mtodo_1 llama al mtodo_2,
envindole un mensaje
El mtodo_3 se invoca por un
mensaje de otro objeto
Figura 2.17. Invocacin de un mtodo
2.4.2. Mtodos (operaciones o servicios) Describen el comportamiento asociado a un objeto o sobre un objeto.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
2.5. CLASES
Generalmente, una clase se puede definir como una descripcin abstracta
de un grupo de objetos, cada uno de los cuales se diferencia por un estado especfico y es capaz de realizar una serie de operaciones.
Clase A ObjClase A
Clase Instancia (objeto) de la clase
Figura 2.19. Una clase y una instancia (objeto) de la clase (notacin Booch)
2.5.1. Una comparacin con tablas de datos Una clase se puede considerar como la extensin de un registro.
Se pueden asociar clase e instancias con tablas y registros
respectivamente. Como mdulo la clase encapsula los recursos que ofrece a otras clases.
Como tipo describe un conjunto de objetos o instancias que existen en
tiempo de ejecucin.
Dentro de un programa, las clases tienen dos propsitos principales:
definir abstracciones y favorecer la modularidad.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
15/05/2013
10
Instancias como registros
Servicio Horas Frecuencia Descuento
S2020 4,5 6 10
S1010 8 2 20
S4040 5 3 15
Cuenta
Servicio
Horas
Frecuencia
Descuento
(Cuenta Cte.) (Cuenta Ahorro)
S1010
8
2
20
S2020
4,5
6
10
Figura 2.19. Instancias de una clase (notacin OMT)
Dos operaciones comunes son tpicas en cualquier clase son:
Constructor: crea un objeto y/o inicializa su estado.
Destructor: libera el estado de un objeto y/o destruye el propio objeto.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
2.6 HERENCIA
Propiedad que permite a los objetos ser construidos a partir de otros
objetos. Capacidad de un objeto para utilizar las estructuras de datos y los mtodos previstos en antepasados o ascendientes.
Caracterstica A Caracterstica B
Caracterstica A
Caracterstica B
Caracterstica Y
Caracterstica Z
Caracterstica A
Caracterstica B
Caracterstica X Caracterstica W
Caracterstica B
Caracterstica A
Clase base
Clase derivada
Clase derivada
Clase derivada
Figura. 2.20. Jerarqua de clases
El objetivo final es la reutilizabilidad o reutilizacin (reusability), es decir
reutilizar cdigo anteriormente ya desarrollado.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Caracterstica A
Herencia
Es una propiedad que permite que los objetos sean creados a
partir de otros ya existentes obteniendo caractersticas (mtodos y atributos) similares a los ya existentes. Ejemplo el gato y el perro
tendran la herencia (mtodos y atributos) de mamfero.
Abstraccin
Expresa las caractersticas esenciales de un objeto las cuales
distinguen al objeto de los dems. Ejemplo en la abstraccin de las Aves, el objeto seria el pjaro y sus caractersticas por ejemplo
serian:
Pico, alas, plumas, patas; las funcionalidades asociadas serian: volar, parar, etc.
Polimorfismo
Es la capacidad que tienen los objetos de una clase de responder al mismo
mensaje o evento en funcin de los parmetros utilizados durante su
invocacin.
Figura 2.21. Jerarqua de herencia
Las jerarquas de clases se organizan en forma de rbol.
Como ejemplo, considrese la jerarqua de herencia mostrada en la
Figura 2.21.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Animal
Insecto Mamifero Animal
Persona
Hombre Mujer
15/05/2013
11
Las definiciones de clases para esta jerarqua puede tomar la siguiente estructura:
clase animal atributos tipo: string; peso: real; habitat:( algun tipo de habitat ); operaciones crear() animal; predadores(animal) fijar(animal); esperanza_vida(animal) entero; end animal. clase mamfero hereda animal; atributos (propiedades) periodo_gestacion: real; operaciones end mamfero clase persona hereda mamifero; atributos apellidos, nombre: string; fecha_nacimiento: date; origen: pais; end persona clase hombre hereda persona; atributos esposa: mujer; operaciones end hombre clase mujer hereda persona; atributos esposo: hombre; nombre: string; end mujer
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
celular
- Marca : string
- Modelo: string
+ llamar(): void
+ colgar(): void
celular_nuevo
- precio_venta : int
- fecha_ingreso: Date
celular_malogrado
- motivo : string
- dueo: string
2.6.1. Tipos de herencia
Herencia simple: un objeto (clase) puede tener solo un ascendiente
Herencia mltiple: un objeto (clase) puede tener mas de un ascendiente.
Herencia simple Herencia mltiple
Figura 2.22. Tipos de herencia
Herencia simple (herencia jerrquica)
Herencia mltiple (herencia en malla)
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Figura
Circulo Rectangulo Triangulo
Rectan. Red.
Persona
Profesor Investigador
Prof Univers
15/05/2013
12
Atributos
Tamao
Color
Mapasdebits
Mtodos
Dibujar
Cargar
Almacenar
Escala
Atributos
Duracin
Voz y tono
Mtodos
Reproducir
Cargar
Escala
almacenar
Para un objeto multimedia, el mtodo Escala significa poner el sonido en
diferentes tonalidades, o bien aumentar/reducir el tamao de la escala de grafico
Ejemplo de una dificultad que surge con la herencia mltiple:
El problema que se produce es la ambigedad, y se tendr que resolver con una
operacin de prioridad que el lenguaje tendr que soportar.
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
M. Sc. Ing. Lucas Coaquira Cano
Grficos
Multimedia
Sonidos
Problemas de la Herencia mltiple:
1. La propiedad referida solo est en una de las superclases padre.
2. La propiedad concreta existe en ms de una superclase.
Caso 1. No hay problemas
Atributos Nombre
Direccin Campus
Curso
Ao
Atributos Nombre Direccin Estudios Salario Dias_Vacaciones Mtodo Aumento_salario
Atributos heredados
Nombre Direccin
Salario Estudios
Dias_Vacaciones Curso
Campus Ao
Mtodos heredados
Aumento_salario
Figura 2.23. Herencia de atributos y mtodos
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Estudiante Empleado
Emplead_est
Caso 2. Existen diferentes tipos de conflictos que pueden ocurrir:
Conflictos de nombres
Conflictos de valores
Conflictos por defecto
Conflictos de dominio
Conflictos de restricciones
Por ejemplo:
Conflicto de nombres Nombre Nombre_estudiante
Nombre_empleado
Valores Atributos con igual nombre, tienen valores en cada
clase
Universidad con diversos campus
Reglas de resolucin de conflictos
1. Una lista de precedencia de clases, como sucede en LOOPS y FLAVORS
2. Una precedencia especificada por el usuario para herencia, como en Smalltalk
3. Lista de precedencia del usuario, y si no sucede asi, la lista de precedencia de
las clases por profundidad.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Declaracin de subclases en Java
public class Motocicleta extends Vehiculo {
public Motocicleta() {
super(2);
}
}
public class ClaseA {
// Declaracion de atributos y metodos especificos de
ClaseA
}
public class ClaseB extends ClaseA {
// Declaracion de atributos y metodos especificos de
ClaseB
// y/o redeclaracion de componentes heredados
}
15/05/2013
13
2.6.2. Clases abstractas
Es una clase que sirve como clase base comn, pero no tendr
instancias (objetos).
+ inyectores + agujas
Figura 2.24. La clase abstracta impresora y sus clases
derivadas que se conocen como clases concretas
2.6.3. Anulacin / sustitucin (overriding)
Cuando la propiedad se define nuevamente en la subclase, aunque se
haya definido anteriormente a nivel de superclase, entonces la definicin realizada en la subclase es la utilizada por esta subclase.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Impresora
Impresora chorro tinta
Impresora matricial
A
H G
J I F E
C D
Figura. Anulacin de atributos y mtodos en clases derivadas.
2.7. SOBRECARGA
Es una propiedad que describe una caracterstica adecuada que utiliza el
mismo nombre de operacin para representar operaciones similares que se comportan de modo diferente cuando se aplican a clases diferentes.
Empleado
Ingeniero Administrativo
Nombre Salario
Edad Incrementar = Salario * inflacin
Beneficios Salario [40 80] Edad [25 65] Incrementar
Calcular_ Comision = 0.03 * Presupuesto
Calcular_Comision = 0.05 * Presupuesto
Figura 2.25. Sobrecarga
Actualmente la sobrecarga se aplica solo a operaciones. La sobrecarga
no es propiedad especifica de los LOO. Lenguajes como C y Pascal soportan operaciones sobrecargadas.
En la mayora de los lenguajes, los operadores aritmticos +, - y * se utilizan para sumar, restar y multiplicar nmeros enteros o reales. M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
2.8 LIGADURA DINAMICA Los LOO tienen la caracterstica de poder ejecutar ligadura tarda
(dinmica), al contrario que los lenguajes imperativos, que emplean ligadura temprana (esttica).
En el caso de ligadura dinmica o tarda, el tipo se conecta directamente
al objeto. Por consiguiente, el enlace entre el mensaje y el mtodo
asociado solo se puede conocer en tiempo de ejecucin.
Esto permite definir funciones o mtodos virtuales.
2.8.1. Funciones o mtodos virtuales
Las funciones virtuales en C++ permiten especificar un mtodo como
virtual en la definicin de una clase particular. La implementacin real del mtodo se realiza en las subclases. En este caso, la seleccin del
mtodo se hace en tiempo de compilacin, pero el cdigo real del
mtodo utilizado se determina utilizando ligadura dinmica o tarda en tiempo de ejecucin.
M. Sc. Ing. Lucas Coaquira Cano
LENGUAJE DE PROGRAMACION
15/05/2013
14
Esto permite definir el mtodo de un numero de formas diferentes para
cada una de las diferentes clases.
Figura
Dibujar Dibujar Dibujar Dibujar
Dibujar
Mtodo virtual
Circulo Cuadrado Rectngulo Lnea
Cdigo para dibujar un circulo
Figura 2.26. Mtodos o funciones virtuales
Aqu el mtodo virtual se define en la clase FIGURA y el cdigo
procedimental real utilizado se define en cada una de las subclases CIRCULO, CUADRADO, RECTANGULO Y LINEA.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
2.9 OBJETOS COMPUESTOS
Son objetos que contienen otros objetos.
En la mayora de los sistemas, los objetos compuestos no contienen en el sentido estricto otros objetos, sino que contienen referencias a otros objetos. La referencia almacenada en la variable se llama
identificador del objeto (ID del objeto).
Var1: *
Var2: *
Objcompuesto
Objgr1 Objgr2
Figura 2.27. Un objeto compuesto
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Coche
Motor Sistema frenos Sistema
transmisin Chasis
parte_de parte_de parte_de parte_de
Figura 2.28. Relacin de agregacin (parte_de)
Un objeto compuesto consta de dos o mas objetos componentes. Los
objetos componentes tienen una relacin part_of (parte_de).
La relacin parte_de puede representarse tambin por has_a (tiene_un).
Coche
Motor
Tiene_un
Figura 2.29. Relacin de agregacin (tiene_un)
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
Figura 2.30. Objetos compuestos (dos objetos orden_compra)
Cliente
Articulo
*
*
Cliente
Articulo
*
*
Objetos
compuestos
orden_compra
componentes
Artculo Cliente Artculo
2.9.1 Un ejemplo de objetos compuestos
15/05/2013
15
Empleado
-pNombre: String -apPaterno : String
-fechaNac : Fecha - fechaCont : Fecha
Fecha
- dia : int - mes : int
- anio : int
+ Fecha(int, int, int) - comprobarMes(int) : int
+ comprobarDia(int) : int + aStringFecha() : String
+ Empleado(String, String, Fecha, Fecha)
+ StringEmpleado():String
public class Fecha {
private int mes; private int dia;
private int anio;
public Fecha(int d, int m, int a){ }
private int comprobarMes(int mp){
} private int comprobarDia(int dp){
}
public String aStringFecha(){
}
}
public class Empleado {
private String pNombre; private String apPaterno;
private Fecha fechaNac;
private Fecha fechaCont;
public Empleado(String nombre, String apellido, Fecha
fechaNacim, Fecha fechaContrata ){ }
public String aStringempleado(){
} }
public class PruebaEmp {
public static void main(String args[]){ Fecha nacimiento = new Fecha(24, 7, 1949);
Fecha contratacion = new Fecha(12, 3, 1988);
Empleado empleado = new Empleado("Juan", "Perez", nacimiento, contratacion);
}
2.9.2 Niveles de profundidad COCHE
MOTOR SISTEMA_FRENOS
SISTEMA_TRANSMISION CHASIS
Atributos
Numero_coches_vendidos
Atributos compartidos
Concesionario: SEAT
Atributos instancia
modelo
color
precio
Objetos componentes
MOTOR
SISTEMA_FRENOS
SISTEMA_TRANSMISION
CHASIS
Atributos:
Numero_cilindros
Potencia
Cilindrada
Valvulas_cilindros
Atributos:
Tipo:
ABS:
Proveedor:
Atributos:
Tipo_embrague:
Caja_cambio:
Atributos:
Tipo:
Color:
15/05/2013
16
A
B
C
Figura 2.31 Jerarqua de componentes agregados A
B
Z
Figura 2.32 Anidamiento de objetos
2.10 REUTILIZACION CON ORIENTACION A
OBJETOS
Es la propiedad por la que el software desarrollado puede ser utilizado
cuantas veces sea necesario en mas de un programa
2.10.1. Objetos y reutilizacin
La POO proporciona el marco idneo para la reutilizacin de las
clases. Los conceptos de encapsulamiento y herencia son las bases que facilitan la reutilizacin.
La facilidad para reutilizar clases (y en consecuencia objetos) es una
de las propiedades fundamentales que justifican el uso de la POO.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
La sobrecarga es una clase de polimorfismo, que tambin es una
caracterstica importante de POO
En un sentido mas amplio, el polimorfismo supone que un mismo mensaje puede producir acciones (resultados) totalmente
diferentes cuando se reciben por objetos diferentes.
M. Sc. Ing. Lucas Coaquira Cano
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION
2.11 POLIMORFISMO
Es el uso de un nombre o un smbolo por ejemplo, un operador- para representar o significar mas de una accin.
Cuando un operador existente en el lenguaje tal como +, = o * se le
asigna la posibilidad de operar sobre un nuevo tipo de dato, se dice que esta sobrecargado.
La utilizacin de operadores o funciones de formas diversas,
dependiendo de cmo estn operando, se denomina polimorfismo.
El trmino polimorfismo se refiere a que la caracterstica de una clase
puede tomar varias formas.
El polimorfismo representa en nuestro caso la posibilidad de
desencadenar operaciones distintas en respuesta a un mismo mensaje.
Cada subclase hereda las operaciones pero tiene la posibilidad de modificar localmente el comportamiento de estas operaciones.
Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta.
15/05/2013
17
Animal
Tigre Oso Len
dormir()
dormir() dormir() dormir()
dormir ()
{
}
dormir ()
{
en un rbol
}
dormir ()
{
sobre la espalda
}
dormir ()
{
sobre el vientre
}
Vehculo
bicicleta automvil moto embarcacin
Conducir()
Conducir() Conducir() Conducir() Conducir()
Figura. Ejemplo de polimorfismo al enviar el mensaje conducir
al objeto vehiculo
Animal
+ mover()
+ mover() + mover() + mover()
Pez Rana Ave