You are on page 1of 26

Programacin Orientada a Objetos

Ing. Ramn Roque Hdz., M.C. 1


1
1.- Introduccin al
paradigma de la
Programacin Orientada a
Objetos (POO)
Dr. Ramn Roque Hernndez
ramonroque@yahoo.com
2
Introduccin
Programacin: Actividad compleja
Crisis del Software
Imponiendo orden al caos
Programacin Orientada a Objetos
Definicin de POO
Origen de la POO
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 2
3
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.
4
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
Programacin: Actividad compleja (2)
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 3
5
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
6
Imponiendo orden al caos
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
La tcnica de dominar la complejidad se conoce desde
tiempos remotos: divide et impera (divide y vencers).
[Dijkstra]
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 4
7
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.
8
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
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 5
9
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.
Origen de la POO
10
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#
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 6
11
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
12
Objetos en el mundo real
Lavadora
Televisin
Perro
Persona
Factura
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 7
13
Los objetos poseen caractersticas que
los distinguen entre s.
Los objetos tienen acciones asociadas
a ellos.
Podemos darnos
cuenta que
14
Ejemplo: PERRO
Caractersticas:
Nombre: FIDO
Raza: Chihuahua
Color: Caf
.etc
Acciones:
Ladrar [Guau Guau]
Comer [Chomp Chomp]
Dormir [Zzzzzzzz]
etc
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 8
15
Cmo modelar un objeto real en un
programa?
Las caractersticas son PROPIEDADES o datos.
Las acciones son METODOS u operaciones.
Objeto Perro Real
Abstraccin de un objetoPerro
en software
FIDO : Perro
Nombre: FIDO
Raza: Chihuahua
Color: Caf
Ladrar()
Comer()
Dormir()
16
Todos los objetos tienen Estado,
Comportamiento e Identidad
ESTADO COMPORTAMIENTO
IDENTIDAD
Valor de sus
Caractersticas
(Propiedades)
Acciones que
puede realizar
Pertenece
a una clase
y tiene un
nombre
nico
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 9
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
18
V
a
r
i
a
b
l
e
s
De instancia
Se crea una copia por
cada objeto creado
De clase (estticas)
Una sla variable
para todos los
objetos generados
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 10
19
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).
Objeto Perro Real:
Propiedades:
(Nombre, Raza, Color, Edad, Tamao, etc.)
Acciones o mtodos:
(Ladrar, Comer, Dormir, Jugar, Caminar, etc.)
FIDO : Perro
Nombre: FIDO
Raza: Chihuahua
Color: Caf
Ladrar()
Comer()
Dormir()
Ntese que en la
Abstraccin
del perro
quitamos varias
Propiedades y acciones.
Abstraccin de un Perro
20
Abstraccin
La abstraccin se centra en las caractersticas
esenciales de algn objeto, en relacin a la
perspectiva del observador.
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 11
21
Abstraccin
Las clases y objetos deben estar al nivel de
abstraccin adecuado: ni demasiado alto ni
demasiado bajo.
22
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
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 12
23
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.
24
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.
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 13
25
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.
26
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.
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 14
27
Encapsulamiento
El encapsulamiento oculta detalles de la
implementacin de un objeto.
28
Ejemplo: Encapsulamiento
Los objetos encapsulan lo que hacen.
Ocultan la funcionalidad interna de
sus operaciones, de otros objetos y del
mundo exterior.
La Televisin oculta algunos
componentes y operaciones
de la persona que la ve.
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 15
29
Ejemplo Encapsulamiento
Componentes accesibles desde el exterior
(Interfaz pblico)
Botones para cambiar el canal, subir/bajar el volumen
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.
30
Mensajes entre Objetos
Los objetos realizan acciones
cuando reciben mensajes
Mensaje recibido: Enciende la TV
Accion realizada: Enva orden de encendido a la TV
Mensaje recibido: Encender
Accion realizada: Se muestra imagen
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 16
31
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
32
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( )
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 17
33
Energizar_Circuitos
Ejemplo de envo de mensajes
Television
Encender
1. El mtodo
Encender se
invoca por un
mensaje de
otro objeto
(una Persona)
Mtodos Pblicos
Mtodos Privados
2. Encender llama a
Energizar_Circuitos
envindole un mensaje.
Atributos Privados

Atributos Pblicos

3. Energizar_Circuitos
Llama a
Activar_Imagen
envindole un mensaje. Activar_Imagen
34
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.
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 18
35
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
36
Herencia
Lavadora
Aparato_Electrodomestico
(Propiedades:
Interruptor, CableElectrico
Mtodos:
Encender, Apagar)
Propiedades:
(Interruptor, CableElectrico,
PerillaDeCiclosDeLavado, CapacidadDeCarga)
Mtodos:
(Encender, Apagar,
LlenarConAgua, TirarAgua)
Propiedades:
(Interruptor, CableElectrico,
BotonDeCanales, BotonDeVolumen)
Mtodos:
(Encender, Apagar,
CambiarVolumen, CambiarCanal)
Televisin
Herendan caractersticas de
Aparato_Electrodomestico
e incorporan las suyas propias.
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 19
37
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.
38
Herencia - Jerarqua de clases
Caracterstica A Caracterstica B
Caracterstica A
Caracterstica B
Caracterstica X
Caracterstica A
Caracterstica B
Caracterstica Y
Caracterstica Z
Caracterstica A
Caracterstica B
Caracterstica W
Clase Base = Super clase = Clase madre = Clase padre
Clases derivadas = Clases hijas = Subclases
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 20
39
Herencia
Una subclase hereda el comportamiento
y la estructura de su Super Clase
40
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].
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 21
41
Herencia simple
Figura
Crculo Rectngulo Tringulo
Rectngulo
redondeado
Ejemplo 1
Ejemplo 2
42
Herencia mltiple
Persona
Profesor Investigador
Profesor
universitario
Ejemplo 1
Ejemplo 2
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 22
43
Clase abstracta
Comida
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.
Pavo Asado Sopa de fideo Pay de manzana Ensalada Cesar
44
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.
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 23
45
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.
46
Anulacin / Sustitucin / Sobreescritura
[ Overriding ]
Articulo_Academico
Propiedades:

Metodos: ...
Abrir ( )
miLibro.Abrir ( )
miLaptop.Abrir ( )
miLibro y miLaptop heredan el mtodo
Abrir ( ) pero NO lo utilizan; sino que
cada uno lo implementa nuevamente de
manera distinta.
Herencia
Clase base
Un libro y una Laptop se abren
de diferente manera.
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 24
47
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)
48
Ejemplo de Sobrecarga [ Overload ]
miPuerta.Abrir ( Adentro, Afuera)
miPuerta.Abrir ( Afuera, Adentro)
miPuerta.Abrir ( )
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 25
49
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).
50
Polimorfismo
POLI = Mltiples MORFISMO = Formas
miRegalo.Abrir( ) miCofre.Abrir( )
miRefrigerador.Abrir( Puerta de Abajo )
miRefrigerador.Abrir( Puerta de Arriba , Mitad )
ObjetoEnFormaDeCaja
Programacin Orientada a Objetos
Ing. Ramn Roque Hdz., M.C. 26
51
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

You might also like