You are on page 1of 26

Programacin Orientada a Objetos

1.- Introduccin al paradigma de la Programacin Orientada a Objetos (POO)


Dr. Ramn Roque Hernndez ramonroque@yahoo.com
1

Introduccin

Programacin: Actividad compleja Crisis del Software Imponiendo orden al caos Programacin Orientada a Objetos Definicin de POO Origen de la POO
2

Ing. Ramn Roque Hdz., M.C.

Programacin Orientada a Objetos

Programacin: Actividad compleja


Los problemas que se intentan resolver con el software implican elementos complejos propios del rea a la que pertenecen. Adems, es difcil gestionar el proceso de desarrollo de software.

Programacin: Actividad compleja (2)


Un constructor pensara raramente en aadir un substano a un edificio ya construido de 100 plantas Los usuarios de sistemas de software casi nunca lo piensan dos veces a la hora de solicitar cambios equivalentesDe todas formas (dicen ellos) es simplemente cosa de programar
4

Ing. Ramn Roque Hdz., M.C.

Programacin Orientada a Objetos

Crisis del software

La incapacidad humana de dominar la complejidad del software conlleva a:


Proyectos retrasados Proyectos que exceden el presupuesto Proyectos deficientes que no cumplen los requerimientos
5

Imponiendo orden al caos


La tcnica de dominar la complejidad se conoce desde tiempos remotos: divide et impera (divide y vencers).
[Dijkstra]

Para entender un nivel dado de un sistema, basta con comprender unas pocas partes (no necesariamente todas) a la vez. Descomposicin es la clave:
Descomposicin algortmica tradicional Descomposicin orientada a objetos
6

Ing. Ramn Roque Hdz., M.C.

Programacin Orientada a Objetos

Programacin Orientada a Objetos


POO es un conjunto de tcnicas que pueden utilizarse para desarrollar programas eficientemente. Los objetos son los elementos principales de construccin. La Orientacin a Objetos (OO) es el estilo dominante de programacin, descripcin y modelado de hoy en dia.

La POO es
Un mtodo de implementacin en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase y cuyas clases son todas miembros de una jerarqua de clases unidas mediante relaciones de herencia
Grady Booch

Ing. Ramn Roque Hdz., M.C.

Programacin Orientada a Objetos

Origen de la POO
Ole-Johan Dahl y Kristen Nygaard, cientficos y profesores del Norwegian Computing Center son considerados los padres de la Orientacion a Objetos. Ellos introdujeron los conceptos principales de OO, y crearon los lenguajes de programacin SIMULA 1 (1961-1965) y SIMULA 67 (1965-1968) que los implementaban.

Los conceptos de OO introducidos por SIMULA


Ya incluan los conceptos de clase, subclase, herencia, creacin dinmica de objetos y ocultamiento de informacin. Provienen del mundo real. Tardaron aprox. 20 aos en ganar entendimiento y popularidad. Han influenciado a los lenguajes de programacion modernos, a las metodologias y a los lenguajes de modelado. Los han adoptado lenguajes como Smalltalk, C++, Java y C#
10

Ing. Ramn Roque Hdz., M.C.

Programacin Orientada a Objetos

El modelo de Objetos
Objetos en el mundo real
Propiedades Mtodos

Abstraccin Clases y Objetos Encapsulamiento Mensajes Constructores Destructores Herencia


Simple Mltiple

Clases Abstractas Sobreescritura Sobrecarga Polimorfismo

11

Objetos en el mundo real

Lavadora

Perro

Televisin

Persona

Factura
12

Ing. Ramn Roque Hdz., M.C.

Programacin Orientada a Objetos

Podemos darnos cuenta que

Los objetos poseen caractersticas que los distinguen entre s. Los objetos tienen acciones asociadas a ellos.

13

Ejemplo: PERRO
Caractersticas:
Nombre: FIDO Raza: Chihuahua Color: Caf .etc

Acciones:
Ladrar [Guau Guau] Comer [Chomp Chomp] Dormir [Zzzzzzzz] etc
14

Ing. Ramn Roque Hdz., M.C.

Programacin Orientada a Objetos

Cmo modelar un objeto real en un programa?


Las caractersticas son PROPIEDADES o datos. Las acciones son METODOS u operaciones.
FIDO : Perro Nombre: FIDO Raza: Chihuahua Color: Caf Ladrar() Comer() Dormir() Objeto Perro Real Abstraccin de un objetoPerro en software
15

Todos los objetos tienen Estado, Comportamiento e Identidad


Valor de sus Caractersticas (Propiedades) Acciones que puede realizar Pertenece a una clase y tiene un nombre nico

ESTADO

COMPORTAMIENTO

IDENTIDAD
16

Ing. Ramn Roque Hdz., M.C.

Programacin Orientada a Objetos

Atributos
Son controlados a travs de la declaracin de variables Es importante identificar el tipo de dato Se debe seleccionar slo aquellos atributos necesarios para el modelo planteado (abstraccin)

17

Atributos

Variables

De instancia

Se crea una copia por cada objeto creado

De clase (estticas)

Una sla variable para todos los objetos generados


18

Ing. Ramn Roque Hdz., M.C.

Programacin Orientada a Objetos

Abstraccin
Se refiere a quitar propiedades y mtodos de un objeto y quedarse solo con aquellos que sean necesarios (relevantes para el problema a solucionar).
FIDO : Perro Nombre: FIDO Raza: Chihuahua Color: Caf

Ladrar() Objeto Perro Real: Comer() Propiedades: Dormir() (Nombre, Raza, Color, Edad, Tamao, etc.) Abstraccin de un Perro Acciones o mtodos: (Ladrar, Comer, Dormir, Jugar, Caminar, etc.)

Ntese que en la Abstraccin del perro quitamos varias Propiedades y acciones.

19

Abstraccin

La abstraccin se centra en las caractersticas esenciales de algn objeto, en relacin a la perspectiva del observador.

20

Ing. Ramn Roque Hdz., M.C.

10

Programacin Orientada a Objetos

Abstraccin

Las clases y objetos deben estar al nivel de abstraccin adecuado: ni demasiado alto ni demasiado bajo.

21

Clases y Objetos
FIDO es UN PERRO FIDO es del TIPO PERRO FIDO es un OBJETO PERRO es la CLASE de FIDO CHESTER es OTRO PERRO CHESTER tambin es del TIPO PERRO CHESTER es otro OBJETO PERRO tambin es la clase de CHESTER
22

Ing. Ramn Roque Hdz., M.C.

11

Programacin Orientada a Objetos

Clase

Es una descripcin de las caractersticas y acciones para un tipo de objetos. Una clase NO es un objeto. Es solo una plantilla, plano o definicin para crear objetos.

23

Clase
Contiene todas las caractersticas comunes de ese conjunto de objetos Clase = Modelo = Plantilla = Esquema = Descripcin de la anatoma de los objetos. A partir de una clase se pueden crear muchos objetos independientes con las mismas caractersticas.
24

Ing. Ramn Roque Hdz., M.C.

12

Programacin Orientada a Objetos

Objeto
Unidad que combina datos y funciones.
Datos = Propiedades = Atributos = Caractersticas Funciones = Mtodos = Procedimientos =Acciones

Un objeto es creado a partir de una clase. Los datos y funciones estn Encapsulados. Posee un nombre nico (identificador). Un objeto es del tipo de una clase Un objeto es la instancia de una clase Un objeto es un ejemplar especfico creado con la estructura de una clase.
25

Encapsulamiento
Permite incluir en una sola entidad informacin y operaciones que controlan dicha informacin. Permite:
Componentes pblicos [Accesibles, Visibles]. Componentes privados [No accesibles, Ocultos]. Restriccin de accesos indebidos.

26

Ing. Ramn Roque Hdz., M.C.

13

Programacin Orientada a Objetos

Encapsulamiento

El encapsulamiento oculta detalles de la implementacin de un objeto.

27

Ejemplo: Encapsulamiento
La Televisin oculta algunos componentes y operaciones de la persona que la ve.

Los objetos encapsulan lo que hacen. Ocultan la funcionalidad interna de sus operaciones, de otros objetos y del mundo exterior.
28

Ing. Ramn Roque Hdz., M.C.

14

Programacin Orientada a Objetos

Ejemplo Encapsulamiento
Componentes privados - Ocultos (NO Accesibles desde el exterior) Circuitos, cables

Aunque TODOS los componentes de un objeto se comuniquen entre s internamente, algunos componentes son visibles al exterior y otros permanecen ocultos por motivos de seguridad e integridad del objeto.

Componentes accesibles desde el exterior (Interfaz pblico) Botones para cambiar el canal, subir/bajar el volumen

29

Mensajes entre Objetos


Los objetos realizan acciones cuando reciben mensajes

Mensaje recibido: Encender Accion realizada: Se muestra imagen

Mensaje recibido: Enciende la TV Accion realizada: Enva orden de encendido a la TV


30

Ing. Ramn Roque Hdz., M.C.

15

Programacin Orientada a Objetos

Mensajes: Comunicacin entre objetos


Mensaje.- Orden que se enva al objeto para indicarle realizar una accin. Mensaje.- Llamada a un mtodo (o funcin) del objeto.
Al conjunto de mensajes a los cuales puede responder un objeto se llama Protocolo del Objeto

31

Anatoma de un mensaje
Identidad del receptor Mtodo que ha de ejecutar Informacin especial (argumentos o parmetros)

Ejemplos:
miTelevision.Encender( ) miTelevision.Apagar( ) miTelevision.CambiarCanal( 45 ) miPerro.Comer(Croquetas) miEmpleado.Contratar (Juan, 3500) miFactura.Imprimir( )
32

Ing. Ramn Roque Hdz., M.C.

16

Programacin Orientada a Objetos

Ejemplo de envo de mensajes


Television Atributos Privados Atributos Pblicos Mtodos Privados
Activar_Imagen

3. Energizar_Circuitos Llama a Activar_Imagen envindole un mensaje.

1. El mtodo Encender se invoca por un mensaje de otro objeto (una Persona)

Energizar_Circuitos

Mtodos Pblicos
Encender

2. Encender llama a Energizar_Circuitos envindole un mensaje.


33

Constructores y Destructores
Los objetos ocupan espacio en memoria; existen en el tiempo y deben crearse [instanciarse] y destruirse:
Constructor.- Operacin que crea un objeto y/o inicializa su estado. Destructor.- Operacin que libera el estado de un objeto y/o destruye el propio objeto.
34

Ing. Ramn Roque Hdz., M.C.

17

Programacin Orientada a Objetos

Ejemplo de constructor y destructor


Cada vez que se enciende la Television Se deben energizar los circuitos Se debe activar el cinescopio Para posteriormente mostrar la imagen.

Cada vez que se apaga la Television Se deben des-energizar los circuitos Se debe des-activar el cinescopio Para posteriormente apagar la imagen

35

Herencia
Aparato_Electrodomestico

(Propiedades: Interruptor, CableElectrico Mtodos: Encender, Apagar)

Herendan caractersticas de Aparato_Electrodomestico e incorporan las suyas propias.

Lavadora
Propiedades: (Interruptor, CableElectrico, PerillaDeCiclosDeLavado, CapacidadDeCarga) Mtodos: (Encender, Apagar, LlenarConAgua, TirarAgua)

Televisin
Propiedades: (Interruptor, CableElectrico, BotonDeCanales, BotonDeVolumen) Mtodos: (Encender, Apagar, CambiarVolumen, CambiarCanal 36 )

Ing. Ramn Roque Hdz., M.C.

18

Programacin Orientada a Objetos

Herencia
Capacidad para utilizar caractersticas previstas en antepasados o ascendientes. Permite construir nuevas clases a partir de otras ya existentes, permitiendo que stas les transmitan sus propiedades. Objetivo: Reutilizacin de cdigo.

37

Herencia - Jerarqua de clases


Clase Base = Super clase = Clase madre = Clase padre Caracterstica A Caracterstica B

Caracterstica A Caracterstica A Caracterstica B Caracterstica B Caracterstica Y Caracterstica X Caracterstica Z Clases derivadas = Clases hijas = Subclases Caracterstica W Caracterstica B Caracterstica A

38

Ing. Ramn Roque Hdz., M.C.

19

Programacin Orientada a Objetos

Herencia

Una subclase hereda el comportamiento y la estructura de su Super Clase

39

Tipos de Herencia
Herencia Simple.- Una clase puede tener slo un ascendiente. [Una subclase puede heredar de una nica clase]. Herencia mltiple (en malla).- Una clase puede tener ms de un ascendiente inmediato. [Heredar de ms de una clase].
40

Ing. Ramn Roque Hdz., M.C.

20

Programacin Orientada a Objetos

Herencia simple

Ejemplo 1
Figura Crculo Rectngulo Rectngulo redondeado Tringulo

Ejemplo 2

41

Herencia mltiple

Ejemplo 1
Persona Profesor Investigador Profesor universitario

Ejemplo 2
42

Ing. Ramn Roque Hdz., M.C.

21

Programacin Orientada a Objetos

Clase abstracta
Comida

Pavo Asado

Sopa de fideo

Pay de manzana

Ensalada Cesar

La Comida como tal, es solo un concepto abstracto que NO puede instanciarse. Existen muchos alimentos que heredan sus caractersticas y ellos SI pueden existir por s mismos. Comida es una clase Abstracta.
43

Clase abstracta
Es una clase que sirve como clase base comn, pero NO puede tener instancias. Una clase abstracta solo puede servir como clase base (solo se puede heredar de ella). Sus clases hijas SI pueden tener instancias.

44

Ing. Ramn Roque Hdz., M.C.

22

Programacin Orientada a Objetos

Anulacin / Sustitucin / Sobreescritura [ Overriding ]


Sucede cuando una clase B hereda caractersticas de una clase A, pero la clase B re-define las caractersticas heredadas de A. Propiedades y mtodos pueden heredarse de una superclase. Si estas propiedades y mtodos son re-definidos en la clase derivada, se dice que han sido Sobreescritos.
45

Anulacin / Sustitucin / Sobreescritura [ Overriding ]


Articulo_Academico Propiedades: Metodos: Abrir ( ) ... miLibro y miLaptop heredan el mtodo Abrir ( ) pero NO lo utilizan; sino que cada uno lo implementa nuevamente de manera distinta.

Clase base

Herencia Un libro y una Laptop se abren de diferente manera. miLibro.Abrir ( ) miLaptop.Abrir ( )


46

Ing. Ramn Roque Hdz., M.C.

23

Programacin Orientada a Objetos

Sobrecarga [ Overload ]
La sobrecarga representa diferentes maneras de realizar una misma accin. En los programas se usa el mismo nombre en diferentes mtodos con diferentes firmas [nmero, orden y tipo de los parmetros]. El cdigo de programacin asociado a cada sobrecarga puede variar. Ejemplos: miEmpleado.Contratar(Juan, Ventas, 2500) miEmpleado.Contratar(Juan) miEmpleado.Contratar(Juan, 2500)
47

Ejemplo de Sobrecarga [ Overload ]

miPuerta.Abrir ( Adentro, Afuera)

miPuerta.Abrir ( Afuera, Adentro)

miPuerta.Abrir ( )

48

Ing. Ramn Roque Hdz., M.C.

24

Programacin Orientada a Objetos

Polimorfismo
Se refiere a: 1. Es el uso de un mismo nombre para representar o significar ms de una accin.
La sobrecarga es un tipo de Polimorfismo.
2.

Que un mismo mensaje pueda producir acciones totalmente diferentes cuando se recibe por objetos diferentes del mismo tipo.
Un usuario puede enviar un mensaje genrico y dejar los detalles de la implementacin exacta para el objeto que recibe el mensaje en tiempo de ejecucin. Para este caso, se utiliza herencia y sobreescritura (Override).
49

Polimorfismo
POLI = Mltiples MORFISMO = Formas

ObjetoEnFormaDeCaja
miRefrigerador.Abrir( Puerta de Abajo ) miRefrigerador.Abrir( Puerta de Arriba , Mitad )

miRegalo.Abrir( )

miCofre.Abrir( )
50

Ing. Ramn Roque Hdz., M.C.

25

Programacin Orientada a Objetos

Bibliografa recomendada
Fundamentos de programacin: Algoritmos, Estructuras de datos y Objetos. Luis Joyanes Aguilar Mc Graw Hill Tercera Edicin ISBN: 84-481-3664-0 Teach yourself Object Oriented programming in 21 days 2nd edition Ed. SAMS, 2002. ISBN: 0-672-32109-2 OOP demystified: A self-teaching guide Jim Keogh, Mario Gianny Ed. McGrawHill, 2004. ISBN: 0-07-225363-0 Modelado y Diseo Orientados a Objetos (Metodologa OMT) James Rumbough, Michael Blaha, et. al. Editorial Prentice Hall ISBN 0-13-24-0698-5

51

Ing. Ramn Roque Hdz., M.C.

26

You might also like