Sunteți pe pagina 1din 36

TEMA 3

Conceptos fundamentales de Programacin Orientada a Objetos. 2 parte

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

CONTENIDOS
1. 2. 7. 8. 9. 10. 11. 12.

Super-clase/Herencia Relaciones entre objetos Encapsulacin y Ocultacin de informacin Cohesin y acoplamiento Comunicacin Polimorfismo Clases abstractas Lenguajes OO

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Super-clase
MUNDO REAL
Las categoras de elementos pueden reagruparse en SUPER-CATEGORIAS : SIMULACIN INFORMTICA Las clases pueden reagruparse en SUPER-CLASES :

HERENCIA

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Super-clase

Automviles, Autocares y Camiones se pueden agrupar dentro de la Super-Clase VEHICULO

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Herencia
Se establece una estructura jerrquica en la que cada clase hereda atributos y mtodos de las clases que estn por encima de ella. La clase derivada (Subclase) puede usar los procedimientos y los atributos de su SuperClase. Cada subclase puede tener nuevos atributos y mtodos y/o redefinir los heredados. Objetivo: permitir el anlisis por clasificacin. Ventajas: granularidad, reutilizacin.

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Herencia
Clase VEHICULO
matrcula, marca, velocidad, potencia, color, ... cambiarMarcha() acelerar() frenar(), ...

televisin llantasAleacion combustible cambiarMarcha() numPasajeros() Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

litera cambiarMarcha()

pesoCarga()

Herencia
EMPLEADO
PagarSalario
Jubilar Puesto N Emp Nomina Jubilar ActNomina Nivel autGastos

EJECUTIVO
PagarSalario

Herencia

Salario
Contratar Ext.Tfno Ascender Cambiar ExtTfno establecer NivelGastos

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Herencia

La bsqueda de los mtodos y de los atributos sigue la jerarqua de las clases. Un objeto busca tanto los mtodos y los atributos en su clase, despus en sus super-clases.

CambiarExtTfno

EMPLEADO
PagarSalario Jubilar Puesto N Emp Salario Nomina

EJECUTIVO
PagarSalario

Herencia

Jubilar ActNomina Nivel autGastos establecer NivelGastos

Contratar

Ext.Tfno Ascender Cambiar ExtTfno Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Herencia
Jubilar
EMPLEADO
PagarSalario Jubilar Puesto Nomina Jubilar

Jubilar EJECUTIVO
PagarSalario

Herencia
Nivel autGastos

ActNomina

NEmp
Salario Contratar Ext.Tfno Ascender Cambiar ExtTfno

establecer NivelGastos

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

10

Tipos de herencia

Simple: una clase hereda de una nica super-clase.

Persona

Empleado

Becario

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

11

Tipos de herencia

Mltiple: una clase hereda de varias super-clases.


Vehculo

Vehculo terrestre

Vehculo martimo

Coche

VehculoAnfibio

Barco

Estudiante

Empleado

Trabajador_Estudiante
Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

12

Tipos de herencia
H. Mltiple - Problemas:

Conflictos de nombres Conflictos de valores Conflictos de valores por defecto Conflictos de dominio Conflictos de restricciones

Solucin:
Lista de precedencia de clases. Herencia selectiva: Algunas de las propiedades de las superclases se heredan selectivamente.
Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

13

Jerarquas de clases

Generalizacin

Especializacin

Cada sub-clase puede establecer sus propias caractersticas, bien aadindolas a las definidas por la clase padre, o suprimiendo algunas de estas caractersticas. Para construir sistemas de software complejos y adems comprensibles, la tecnologa orientada a objetos utiliza nuestros mecanismos conceptuales innatos.

Concepto genrico
Abstraccin Concrecin

Caso particular
Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

14

Clasificacin vs. Composicin


Clasificar y ordenar las abstracciones. Jerarquizar segn los niveles de abstraccin o segn las relaciones de composicin
instrumentos musicales
cuerpo humano de viento de cuerda de percusin sistema respiratorio madera cobre rozados golpeadospellizcados vasos sanguneos vena guitarra arteria sistema sistema circulatorio digestivo sistema nervioso

sangre

corazn

de boquilla de lengeta

trombn piano trompeta violn clarinete flauta saxofn

clula

citoplasma vacuola ncleo centrosoma mitocondria


cromosoma nucleolo

Jerarqua "es-un" (herencia)

Jerarqua "parte-de" (compuesto-componente)

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Herencia
Ventajas

15

Reutilizacin de software.

Mayor seguridad, menor coste.


Rpido prototipado. Comportamiento similar de todas las clases que heredan de una superclase.

Reutilizacin de componentes.

Consistencia de la interface.

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Relaciones entre los Objetos


Los objetos tienen, aparte de atributos y mtodos y relaciones de herencia, relaciones con otros objetos. Las relaciones ms importantes son: Asociacin Agregacin (composicin)

16

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Asociacin
Es una conexin entre clases, una conexin (enlace) semntica entre objetos de las clases implicadas en la relacin. Esto se consigue usando algn objeto de una de las clases como atributo de la clase asociada.
Empleado Cliente Conductor Producto Departamento Pliza Vehculo Pedido

17

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Agregacin (Composicin)

18

Se da cuando una clase est estructuralmente compuesta de otras clases. Una clase est formada por objetos de objetos (objeto compuesto) de otra u otras clases. Para la existencia del objeto compuesto deben existir los dems objetos.

Monitor

Disco

Ordenador

Memoria

Teclado

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

19

Cardinalidad
Asociacin y Agregacin tienen cardinalidad: Nmero de instancias de una clase que estn relacionadas con una instancia de la otra clase.
1..*

0..*

Producto

Pedido

1..*

Cliente

Cuenta

1..*

Empleado

Departamento

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

20

Encapsulacin

Tcnica que permite localizar y ocultar los detalles de un objeto respecto al usuario, aislndolo del aspecto interno. Previene que un objeto sea manipulado por operaciones distintas a las que le son propias, as como que sus operaciones manipulen datos ajenos a ellas.
Separar el aspecto externo de los detalles internos. Ninguna parte de un sistema complejo debe depender de los detalles internos de cualquier otra parte.

poner en hora consultar la hora engranajes muelles pila

accionar las manillas disparar la alarma

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

21

Encapsulacin

Encapsulacin = disimulacin de los datos. Los datos estn protegidos de los objetos exteriores. Los objetos son independientes de la estructura interna de otros objetos. Es la propiedad que asegura que la informacin de un mdulo esta oculta al mundo exterior. Es una tcnica de diseo para descomponer sistemas en mdulos. Permite la constitucin de bibliotecas de objetos genricos reutilizables.
Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

22

Encapsulacin

Programacin estructurada:

Funciones a realizar. Variables, constantes. El programador concentra su atencin sobre el desarrollo de rutinas. La utilizacin de nuevas referencias a estas rutinas no se tiene en cuenta por el cdigo existente. Los costes de mantenimiento aumentan.

Programacin orientada a objetos:


Responsabilidades a atribuir. Clase, atributos, operaciones. El desarrollador segmenta su aplicacin en componentes materializados en clases. Los datos estn protegidos del exterior (el acceso a los atributos slo puede hacerse por los mtodos).

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

23

Ocultacin de Informacin
Principio por el cual los mdulos son utilizados por su especificacin, no por su implementacin.

?
mensaje

Los detalles de implementacin estn ocultos y slo es accesible el interfaz Un objeto tiene una interfaz pblica que otros objetos pueden usar para comunicarse con l. El objeto puede mantener informacin privada y mtodos que pueden cambiar sin que esto afecte a otros objetos que dependen de l.

El mdulo es una caja negra

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Cohesin y Acoplamiento
Buscamos: MAXIMA cohesin / MINIMO acoplamiento

24

Acoplamiento:

Es una medida de la fuerza de conexin entre dos componentes de un sistema. Cuanto ms conoce un componente de otro, ms fuerte es el acoplamiento entre ellos.

Cuando construimos sistemas de objetos, debemos acoplar los objetos en cierta medida. Si al disear un objeto lo dotamos de un excesivo conocimiento de otros objetos, estamos haciendo acoplamiento innecesario.
Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Cohesin y Acoplamiento

25

En un sistema fuertemente acoplado: disminuye la posibilidad de reutilizar objetos individuales el sistema es ms complejo y por tanto ms difcil de entender y mantener
Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Cohesin y Acoplamiento
Cohesin: Es una medida de cunto estn relacionados lgicamente los componentes encapsulados en un objeto. Es la otra cara de la moneda del acoplamiento. Para un objeto poco cohesionado: aumenta la probabilidad de sufrir cambios disminuye la probabilidad de reutilizacin

26

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

27

Comunicacin
MUNDO REAL Dos elementos de un sistema fsico interaccionan intercambiando: FLUJOS de datos, materia, o energa. SIMULACIN INFORMTICA Dos objetos interaccionan intercambiando : un MENSAJE

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

28

Comunicacin

Los objetos se comunican entre s mediante el envo de mensajes. El propsito de un mensaje es pedir al objeto que lo recibe que active el mtodo que se le indica y que devuelva al objeto original el resultado de esa accin. Una secuencia de instrucciones en un lenguaje clsico es reemplazada por una secuencia de comunicaciones. La sintaxis de una comunicacin es muy simple: <sujeto> <verbo> <complemento> o tambin: <destinatario> <mensaje> <datos> <objeto receptor> <mtodo seleccionado> <parmetros>
Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

29

Comunicacin

Los mensajes que recibe un objeto son los nicos conductos que conectan el objeto con el mundo exterior. Los datos de un objeto estn disponibles para ser manipulados solo por los mtodos del propio objeto. Cuando se ejecuta un POO ocurren tres cosas:
1. Los objetos se crean a medida que se necesitan. 2. Los mensajes se mueven de un objeto a otro (o desde el usuario a un objeto) a medida que el programa procesa la informacin. 3. Cuando los objetos no se necesitan se borran y se libera la memoria.
Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

30

Comunicacin
CLIENTE
MENSAJE CUENTA RetiradaFondos: 5000

CUENTA

Retirada Fondos:

Saldo

<objeto receptor> <mtodo > <parmetros> CUENTA RetiradaFondos: 5000


Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

31

Comunicacin

Unificacin de la sintaxis

funciones: restar ( a, b ) : restar a de b o restar b de a ? expresiones (anotaciones postfijado, prefijado, infijado): ab- , -ab , a-b mensaje: a restar: b, a - b

Simplificacin de la sintaxis

"El gato come al ratn" Qu es lo ms natural ? Comer (gato, ratn) gato.come(ratn)

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

32

Polimorfismo

Significa tener o asumir distintas formas. En el contexto de POO se refiere a la capacidad de los diferentes objetos para responder de distinta forma a la misma operacin. Esta caracterstica habilita al programador para tratar uniformemente objetos que provienen de clases diferentes. Permite enviar el mismo mensaje a objetos diferentes y que cada uno responda en la forma apropiada segn el tipo de objeto que sea, ejecutando su mtodo. El polimorfismo est asociado a la ligadura dinmica (dynamic binding). La asociacin de un mtodo con su nombre no se determina hasta el momento de su ejecucin. El polimorfismo es una aplicacin particular de la herencia de comportamiento. Una misma operacin (un mismo elemento de comportamiento) podr interpretarse de diversas maneras segn la posicin en la que se encuentre dentro de la jerarqua. Usualmente requiere del empleo de clases abstractas.
Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

33

Polimorfismo
Clase FIGURA GEOMETRICA (Clase Abstracta)
color, posicin borrarFigura, moverFigura, getColor, setColor, dibujar

Clase

CIRCULO

Clase

CUADRADO

Clase

TRIANGULO

dibujar

dibujar

dibujar

resultado del mtodo Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Polimorfismo
Ventajas

34

Da uniformidad a la sintaxis. Disminuye la cantidad del cdigo a escribir (por eliminacin de las estructuras alternativas con opciones mltiples). Facilita el tratamiento de colecciones heterogneas.

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

Clases abstractas
A veces es til aislar en clases conceptos incompletos aunque coherentes y cohesivos. Los atributos y los mtodos de estas clases estn disponibles para ser especializados va herencia. Una clase abstracta no puede tener instancias.
No podemos instanciar Clase totalmente abstracta slo define interfaz
Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

35

Clase concreta

Lenguajes Orientados a Objetos


Lenguajes de programacin OO puros: Solo soportan el paradigma de programacin OO. Todo son objetos, clases y mtodos. Ej: Java. Lenguajes de programacin OO hbridos: Soporta otros paradigmas adems del OO. Ej: C++. /***************************************************************/ Tipificacin: proceso de declarar cul es el tipo de informacin que contiene una variable. Tipificacin fuerte, estricta o esttica. En tiempo de compilacin. Tipificacin dbil, no estricta o dinmica. En tiempo de ejecucin. /***************************************************************/ Ligadura: Proceso de asociar un atributo a un nombre, o la llamada a una funcin con su cdigo real. Ligadura esttica, temprana o anticipada: En tiempo de compilacin. Ligadura dinmica, retardada o postergada: En tiempo de ejecucin. LOO. Permite el polimorfismo.

36

Programacin Orientada a Objetos Tema 3: Conceptos fundamentales de POO

S-ar putea să vă placă și