PARADIGMAS DE
PROGRAMACION
Unidad III
Paradigma de Programación con Orientación a
Objetos
Introducción
Objetivos de la unidad.
Que el alumno comprenda los mecanismos fundamentales que dan
origen a este paradigma.
Que el alumno utilice para la resolución de problemas un lenguaje
con OO puro en su concepción y representación.
Que el alumno aprenda el lenguaje Smalltalk.
CONTENIDOS ABORDADOS
Paradigma orientado a objetos:
Historia.
Conceptos.
Características.
Objeto.
Colaboradores.
Historia
1967 : Simula ´67 Primer lenguaje orientado a objetos.
1972 : SMALLTAK Adele Goldberg, Simula, Alan Kay.
1980 : Objective-C Brad Cox.
1984: SMALLTALK-V PC-IBM.
1985: EIFFEL Bertrand Meyer.
1986 - 1990: C++ Bjarne Stroustrup.
En la década de los años 1990 se popularizó el uso de la
programación orientada a objetos o POO, y es usada
hasta la actualidad.
Paradigma Orientado a Objetos
Los programas se organizan como colecciones de objetos que colaboran entre sí
enviándose mensajes.
Cada objeto tiene un rol específico en el programa y todos pueden comunicarse
entre sí de formas predefinidas.
Un OBJETO es una entidad que posee
características (atributos) y
comportamientos (métodos).
Paradigma Orientado a Objetos
CLASE:
Es un molde o plantilla que define las características o atributos
(variables) y comportamientos o métodos (funciones) comunes
de un conjunto de objetos relacionados.
Describe cómo deben ser los objetos que se crean a partir de
ella.
OBJETO:
Es una instancia o ejemplar de una clase.
Es una entidad concreta que se crea a partir de una clase y tiene
sus propios atributos y comportamientos.
Posee las características generales de la misma, pero con valores
concretos.
Es una variable compuesta por variables y funciones, definida
por el usuario.
Características
Abstracción
Denota las características esenciales de un objeto, donde se
capturan sus comportamientos.
El proceso de abstracción permite seleccionar las características
relevantes dentro de un conjunto e identificar comportamientos
comunes para definir nuevos tipos de entidades en el mundo real.
P e rs o n a C a ra c t e rí s ti c a s C a r a c t e rí s ti c a s E s e n c ia l e s s e g ú n
e l á m b i e n t e o S i s te m a
d ni, n om b re ( i d e n t if i c a c i ó n ) P e rs o n a e n l a P e rs o n a e n u n a
te l é fo n o , d o m i c i l io , e tc . ( c o n t a c t o ) u n i v e rs id a d a g e n c ia d e M o d e lo s
a lt u r a , p e s o , e tc . ( c o n t e xt u r a fís i c a ) dn i, n om b re d n i, n o m b re
E s tu d io s s e c u n d a r i o ( f o r m a c i ó n ) te l é fo n o , d o m i c i l i o , e tc . t e l é fo n o , d o m i c i l i o , e t c .
E s tu d i o s s e c u n d a rio , e tc . a l tu r a , p e s o , e t c .
Características
Modularidad
Permite subdividir una aplicación en partes más pequeñas,
cada una de las cuales debe ser tan independiente como sea
O b je to 1 O b je to 2
posible. Se pueden compilar por separado y tienen
conexiones con otros módulos. O b j e to 3
Encapsulamiento
Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstracción.
Principio de ocultación
Cada objeto está aislado del exterior y expone una interfaz (protocolo) a otros
objetos, que específica cómo pueden interactuar con los objetos de la clase.
O b je t o e xt e r no
El aislamiento protege las propiedades de un objeto M ie m b ro s
P riv a do s
contra su modificación por quien no tenga derecho a In te r f a z p ú b li c a ( P r o to c ol o )
acceder a ellas.
Características
Cohesión Acoplamiento
Mide las responsabilidades Mide las relaciones entre los
asignadas a cada objeto. objetos.
En el Modelado Orientado a Objetos, lo que se busca es tener
ALTA cohesión (que cada objeto se responsabilice por una sola cosa) y
BAJO Acoplamiento (Poca o nula interdependencia).
D o c ent e
U s u a r io P r in c ip a l C urs o
p e did o s
r e s p u e s ta s
Alum n o
M EN SAJE O BJET OS
S
Características
Herencia Polimorfismo
La herencia permite la definición de Capacidad de que diferentes objetos
una clase a partir de la definición de reaccionen de distintas formas a un
otra ya existente. mismo mensaje.
Los objetos heredan las propiedades Comportamientos diferentes, asociados
y el comportamiento de todas las a objetos distintos, pueden compartir el
clases a las que pertenecen, pueden mismo nombre (interfaz).
compartir (y extender) su
comportamiento sin tener que volver E je m p lo : I m p ri m ir l is t a d o
a implementarlo. U s u a r io (M is m a In te r f a c e ó p ro t o c o lo )
I m p r im ir
P erso n a C la s e B a s e M o n ito r
E s u n a P e rs o n a E s u n a P e rs o n a I m p r e s o ra
A lu m n o C la s e D o c e n te C la s e
D e r iv a d a D e r iv a d a T e r m in a l
r e m o ta
( D is t in t o s O b je t o s )
Características
Recolección de basura
La recolección de basura o garbage collector es la técnica por la cual el
entorno de objetos se encarga de destruir automáticamente, y por tanto
desvincular la memoria asociada, los objetos que hayan quedado sin
ninguna referencia a ellos.
Significa que el programador no debe preocuparse por la asignación o
liberación de memoria, ya que el entorno la asignará al crear un nuevo
objeto y la liberará cuando nadie lo esté usando.
Objeto
Es una abstracción, representación computacional de una entidad de la
realidad, tiene propiedades particulares (atributos) y formas de operar con
ellas (métodos).
Un objeto es una unidad de software de la cual lo que importa es: qué le
puedo preguntar y/o pedir, y a qué otros objetos conoce.
Los objetos responden a los pedidos interactuando con los otros objetos
que conoce, y así se va armando una aplicación.
P u e d e t e n e r p a rá m e t r o s
( o b je t o s )
P e d id o
C a r a c t e r ís t ic a s In v o c a c i ó n d e O b j eto B
O b j eto A
( o b je t o m é to d o (o b j eto
e m is o r) r e ce p to r )
C o m p o rt a m ie n t o
R e s p u e s ta
E je c u c ió n d e l m é to d o c o m o re s p u e s ta
P u e d e r e t o rn a r u n
r e s u l t a d o (o b je to )
Los Objetos en POO
Un objeto dentro de Paradigma Orientado a Objetos debe poseer:
Abstracción
Identidad
Comportamiento
Capacidad de inspección
Los Objetos en POO
Abstracción Identidad
Un Objeto es una abstracción, del La identidad es la propiedad que
cuál se identifican dos características: permite a un objeto diferenciarse
Esenciales: aquellas que hacen de otros.
que el ente sea lo que es, que no Generalmente esta propiedad es
pueden cambiar, que si falta algo tal, que da nombre al objeto.
ya no es lo que era. La identidad de los objetos sirve
Accidentales: Un ente puede para comparar si dos objetos son
poseerlos, pero si no los tuviera o iguales o no.
se lo cambiara, no dejaría de ser
lo que es. (color, tamaño, etc.).
A lu m n o C a rac terística s
le g a j o ,
n o m b re E s e n c ia le s (n o s e p u e d e n e lim in a r)
no ta 1
no ta 2
p r o m e d io A c c id e n t a l ( s e p u e d e c a lc u la r)
Los Objetos en POO
Comportamiento Capacidad de inspección
Un objeto también queda representado Poder ver en todo
por su comportamiento, el cual estará momento quiénes son
definido por el conjunto de mensajes sus colaboradores, y en
que el objeto pueda responder (para un determinado instante
que sirve, como utilizarlo). Este eventualmente
conjunto de mensajes que el objeto cambiárselo.
puede responder se lo denomina
Protocolo.
C a ja D e A h o r r o
D e p o s it a r : u n M o n t o D e D in e r o
E x t r a e r : u n M o n t o D e D in e r o
C o n s u lt a r S a ld o
Colaboraciones: Mensaje y Métodos
La colaboración se produce cuando, los objetos se envían mensajes.
Un mensaje: es cada una de las formas posibles de interactuar con un objeto.
Cada objeto entiende un conjunto N om bre o
acotado de mensajes (Protocolo). O b je to A
Id e n ti fic a d o r o
s e le c t o r
O b je to B
(o b je to (o b je t o
En cada acción de envío de e m is o r ) r ec ep t o r)
mensaje:
P u e d e te n e r p a rá m e tr o s
hay un emisor. ( o b je t o s )
P e d id o
hay un receptor. O b je t o A In v o c a c ió n d e
m é to d o
O b je t o B
( o b je t o
( o b je t o
hay un nombre, que identifica e m is o r )
R e s p u e s ta
re c e p to r)
el mensaje que estoy E je c u c ió n d e l m é t o d o c o m o r e s p u e s t a
enviando entre todos los que P u e d e re to rn a r u n
r e s u lt a d o ( o b je t o )
entiende el receptor.
Colaboraciones: Mensaje y Métodos
Método:
Sección de código que se evalúa cuando un
objeto recibe un mensaje.
Un método tiene un nombre, que es el del
mensaje correspondiente; y un cuerpo, que es el
C O L A B O R A C IO N
código que se evalúa.
Para poder especificar un método debo identificar
los colaboradores.
Tipos : C o l a b o r a d o r e s In te r n o s
Habituales (internos)
m 1: C C o lab o ra d or e xte rno
C1
Eventuales (externos): se define m 2:
especialmente para alguno de los mensajes. m 3:
C2
O b j1
Colaboraciones
Internos Externos
El conjunto de variables que va La colaboración es un contrato
a contener un objeto se llama entre emisor y receptor.
Colaborador Interno o estado El emisor debe escribir bien el
interno. mensaje y enviar un colaborador
El estado interno de un objeto: es externo que sepa hacer cosas que
el conjunto de variables que requiere el receptor. Por su lado el
contiene, y se define al programar receptor debe devolver un objeto
el Objeto. que sepa hacer cosas que
requiere el emisor.
A lu m n o C o la b o ra d o r
in te rn o : v a ria b le C o la b o ra d o r
o a trib u to e xte r n o
L e g a jo = 1 o b j eto
n o m b re = J u a n o b je t o re c e p t o r
nota1 = 10 e m is o r
nota2 = 8
Colaboraciones externos
El receptor del mensaje no tiene idea de quien le envía el mensaje. Está
totalmente desacoplado; los objetos están preparados para responder a
cualquiera que le envíe le mensaje.
El emisor, asume que existe un objeto con capacidad de responder al
mensaje que envío.
El único error que podría ocurrir es que un objeto reciba un mensaje que no
entiende:
Mensaje equivocado al objeto correcto.
Mensaje correcto al objeto equivocado.
M e n s a je : M o d i fic a e l n o m b r e
M e n s a je : p id e e l n o m b r e
C o la b o ra d o r
a p li c a c io n c u rso e x te rn o
C o l a b o ra d o r a p li c a c io n c u rs o
n o m b re i n te r n o
n o m b re n o m b r e : ‘2 k 3 ’
= ‘2 k 8 ’ n o m b re
‘2 k 8 ’ = ‘2 k 3 ’