Sie sind auf Seite 1von 27

INGENIERA DEL SOFTWARE I

Tema 7

Repaso de Orientacin a Objetos


Univ. Cantabria Fac. de Ciencias
Francisco Ruiz

Objetivos

Repasar los conceptos fundamentales del paradigma


de Orientacin a Objetos.

Francisco Ruiz - IS1

Repaso 7.2

Contenido

Introduccin

Justificacin
Problemas

Polimorfismo
Persistencia

Objetos

Estado
Comportamiento
Identidad

Clases

Relaciones

Encapsulamiento
Asociaciones
Agregaciones
Generalizacin

Francisco Ruiz - IS1

Repaso 7.3

Bibliografa

Bsica
La correspondiente de las asignaturas donde se incluye la
programacin orientada a objetos.

Complementaria

Meyer, B. (1999): Construccin de Software Orientado a


Objetos. 2da edicin. Prentice-Hall.

Budd, T. (2002): Object Oriented Programming. Third


edition. Addison Wesley.

Francisco Ruiz - IS1

Repaso 7.4

Introduccin

Evolucin de la OO
Origen: finales de los aos 60
Primeras investigaciones y prototipos no industriales

Difusin: mediados de los 80


Object Oriented Programming Workshop, de IBM
1st International Conference on Object Oriented Programming

Systems, Languages and Applications - OOPSLA

Madurez: mediados de los 90


Aprobacin de estndares
Extensin de productos

Francisco Ruiz - IS1

Repaso 7.5

Introduccin

reas de Aplicacin:

Lenguajes de programacin
Bases de datos
Reingeniera de procesos
CASE
Inteligencia artificial
Sistemas operativos
Interfaces de usuario

Beneficios Potenciales:

Mejorar la calidad del software


Acortar los tiempos de desarrollo
Aumentar la productividad del programador
Incrementar la reutilizacin del software

Francisco Ruiz - IS1

Repaso 7.6

Introduccin - Justificacin
Por qu la Orientacin a Objetos?
Proximidad de los conceptos de modelado respecto de
las entidades del mundo real
Mejora captura y validacin de requisitos
Acerca el espacio del problema y el espacio de la
solucin
Modelado integrado de propiedades estticas y
dinmicas del mbito del problema
Facilita construccin, mantenimiento y reutilizacin

Francisco Ruiz - IS1

Repaso 7.7

Introduccin - Justificacin

Por qu la Orientacin a Objetos?


Conceptos comunes de modelado durante el anlisis,
diseo e implementacin
Facilita la transicin entre distintas fases
Favorece el desarrollo iterativo del sistema
Disipa la barrera entre el qu y el cmo

Sin embargo, existen problemas ...

Francisco Ruiz - IS1

Repaso 7.8

Introduccin - Problemas

...Los conceptos bsicos de la OO se conocen desde hace dos


dcadas, pero su aceptacin todava no est tan extendida
como los beneficios que esta tecnologa puede sugerir
...La mayora de los usuarios de la OO no utilizan los
conceptos de la OO de forma purista, como inicialmente se
pretenda. Esta prctica ha sido promovida por muchas
herramientas y lenguajes que intentan utilizar los conceptos
en diversos grados
--Wolfgang Strigel
Francisco Ruiz - IS1

Repaso 7.9

Introduccin - Problemas
Un objeto contiene datos y operaciones que operan sobre
los datos, pero ...
Podemos distinguir dos tipos de objetos degenerados:

Un objeto sin datos (que sera lo mismo que una


biblioteca de funciones)

Un objeto sin operaciones, con slo operaciones del tipo

crear, recuperar, actualizar y borrar (que se


correspondera con las estructuras de datos tradicionales)
Un sistema construido con objetos degenerados no es un
sistema verdaderamente orientado a objetos

Las aplicaciones de gestin estn constituidas


mayoritariamente por objetos degenerados
Francisco Ruiz - IS1

Repaso 7.10

Objetos

Cualquier cosa, ocurrencia o fenmeno que puede ser


identificado y caracterizado

Entidad definida por un conjunto de atributos comunes


y los servicios u operaciones asociados

Mquina abstracta que define un protocolo a travs


del cual los usuarios del objeto pueden actuar sobre el
mismo. Puede tener un estado que se almacena en una
pieza encapsulada de software.

Francisco Ruiz - IS1

Repaso 7.11

Objetos

La representacin abstracta del objeto informtico


es una imagen simplificada del objeto del mundo
real.

Se acostumbra a considerar los objetos como seres

animados con vida propia (nacen, viven y mueren).

Un objeto puede caracterizar una entidad fsica


(coche) o abstracta (ecuacin matemtica).

Francisco Ruiz - IS1

Repaso 7.12

Objetos

Unidad atmica formada por la unin


de estado y comportamiento.

Estado: valores de los atributos


Comportamiento: conjunto de
servicios asociados

La encapsulacin proporciona una


cohesin interna fuerte y un
acoplamiento externo dbil.

Comportamiento
visible

OBJETO

Estado interno

Para manipular los objetos se utilizan


mensajes.
Objeto = Estado + Comportamiento + Identidad

Francisco Ruiz - IS1

Repaso 7.13

Objetos
En UML, un objeto se representa por un rectngulo con
un nombre subrayado
Cuenta C orriente 101
Juan
Banco de Valencia

Felipe
Cuenta Corriente 114

Francisco Ruiz - IS1

Repaso 7.14

Objetos - Estado

El estado contiene los valores de


sus atributos (variables) cuya
informacin cualifica al objeto.

Un atributo toma un valor en un


dominio concreto

El estado en un instante dado


corresponde a una seleccin de
valores de entre todos los posibles
en cada atributo.

Automvil
Verde
120 CV
1000 Kg.

Francisco Ruiz - IS1

Repaso 7.15

Objetos - Estado

El estado evoluciona con el


tiempo.
Hay componentes
constantes (marca del
automvil, potencia, etc.).

Automvil
50 litros

Recorrido de
150 Km.

Generalmente el estado de
un objeto es variable.
Automvil
30 litros

Francisco Ruiz - IS1

Repaso 7.16

Objetos - Comportamiento
M e n s a je
P rim e r O b je to

M to d o 1

Segundo
O b je to

M to d o 2

.......

M to d o n

Describe las acciones y reacciones de los objetos.


Cada operacin / mtodo es un tomo de
comportamiento.
Las operaciones se desencadenan por estmulos
externos (mensajes), enviados por otros objetos.

Francisco Ruiz - IS1

Repaso 7.17

Objetos - Comportamiento
Un sistema OO puede verse como un conjunto de
objetos autnomos y concurrentes que trabajan de
manera coordinada en la consecucin de un fin
especfico.
El comportamiento global se basa pues en la
comunicacin entre los objetos que lo
componen.

Francisco Ruiz - IS1

Repaso 7.18

Objetos - Comportamiento

En base a su comportamiento, se pueden


establecer varias categoras de objetos:

Activos Pasivos

Activo: posee un hilo de ejecucin (thread) propio y


puede iniciar una actividad
Pasivo: no puede iniciar una actividad pero puede
enviar estmulos una vez que se le solicita un servicio

Clientes Servidores , Agentes

Cliente es el objeto que solicita un servicio.


Servidor es el objeto que provee el servicio solicitado.

Francisco Ruiz - IS1

Repaso 7.19

Objetos - Comportamiento

Los agentes renen las caractersticas de clientes y


servidores.

Son la base del mecanismo de delegacin.


Introducen indireccin: un cliente puede comunicarse con
un servidor que no conoce directamente.

Servidor 1
2:
Un agente
1:
Un cliente

Francisco Ruiz - IS1

3:
Servidor 2

Repaso 7.20

10

Objetos - Comportamiento
La unidad de comunicacin entre objetos se llama
mensaje
Objeto 1

1: Mensaje A

Objeto 2

2: Mensaje C
4: Mensaje E
Objeto 4

Objeto 3
3: Mensaje D

Francisco Ruiz - IS1

Repaso 7.21

Objetos - Comportamiento

Un estmulo (evento) causar la invocacin de una


operacin, la creacin o destruccin de un objeto o la
aparicin de una seal.

Un mensaje es la especificacin de un estmulo.

Tipos de flujo de control en mensajes:


Llamada a procedimiento o flujo de control anidado
Sncrono

Flujo de control plano


Asncrono

Retorno de una llamada a procedimiento

Francisco Ruiz - IS1

Repaso 7.22

11

Objetos - Identidad

Cada objeto posee un oid, que establece la identidad del


objeto y tiene las siguientes caractersticas:

Constituye un identificador nico y global para cada objeto dentro del


sistema.
Es determinado en el momento de la creacin del objeto.
Es independiente de la localizacin fsica del objeto, es decir, provee
completa independencia de localizacin.
Es independiente de las propiedades del objeto, lo cual implica
independencia de valor y de estructura.
Dos objetos se pueden distinguir a pesar de tener atributos
idnticos.
No cambia durante toda la vida del objeto. Adems, un oid no se
reutiliza aunque el objeto deje de existir.
No se tiene ningn control sobre los oids y su manipulacin resulta
transparente.
No se representa en el modelado de manera especfica.

Francisco Ruiz - IS1

Repaso 7.23

Clases
El mundo real puede ser visto desde abstracciones
diferentes (subjetividad)
Mecanismos de abstraccin:

Clasificacin / Instanciacin
Composicin / Descomposicin
Agrupacin / Individualizacin
Especializacin / Generalizacin
La clasificacin es uno de los mecanismos de abstraccin ms
utilizados
Francisco Ruiz - IS1

Repaso 7.24

12

Clases
La clase define el mbito de definicin de un
conjunto de objetos
Cada objeto pertenece a una clase
Los objetos se crean por instanciacin de las clases

Francisco Ruiz - IS1

Repaso 7.25

Clases

Otras definiciones
Plantilla a partir de la que se crean objetos. Contiene una
definicin del estado y los mtodos del objeto.

Mdulo software que encapsula atributos, operaciones,


excepciones y mensajes.

Conjunto de objetos que comparte una estructura y


comportamiento comunes

Instrumentacin que puede ser instanciada para crear

mltiples objetos que tienen el mismo comportamiento


inicial

Francisco Ruiz - IS1

Repaso 7.26

13

Clases

La clase Persona
Atributos
Nombre: string
Fecha de nacimiento: fecha
Color del pelo: (negro, blanco, pelirrojo, rubio)

Mtodos
Nacer
Crecer
Morir

Persona
Ana
23
rubio

Paco
19
negro

Andrs
40
blanco

Objetos de la Clase Persona


Francisco Ruiz - IS1

Repaso 7.27

Clases

Representacin
En UML cada clase se representa en un rectngulo
con tres compartimentos:

nombre de la clase
atributos de la clase
operaciones de la clase

Motocicleta
color
cilindrad a
velocidad m xima
arranca r()
acelerar()
fre nar()

Francisco Ruiz - IS1

Repaso 7.28

14

Clases

Ejemplos de Representaciones de Clases:


Nombre de clase
Atributos
Operaciones ( )

Lista

Motocicleta
Color
Cilindrada
V. Mxima
Arrancar ( )
Acelerar ( )
Frenar ( )

Primero ( )
Ultimo ( )
Aadir ( )
Quitar ( )

Francisco Ruiz - IS1

Televisor
Encender ( )
Apagar ( )
Cambiar
programa()
Regular volumen
()
Arbol binario
Subrbol izdo( )
Subrbol dcho( )
Recorrer en
profundidad ( )

Repaso 7.29

Clases - Encapsulamiento

Ocultar al exterior los detalles de implementacin, de


manera que el mundo slo vea una interfaz inteligible (la
parte pblica).

Interfaz pblica (qu)


Atributos+Servicios
Representacin privada
(cmo)

Francisco Ruiz - IS1

Repaso 7.30

15

Clases - Encapsulamiento
Mundo
Pblicos
Atributos
Privados

Privados
Mtodos
Pblicos
Francisco Ruiz - IS1

Repaso 7.31

Clases - Encapsulamiento

El encapsulamiento presenta tres ventajas bsicas:


Se protegen los datos de accesos indebidos.
El acoplamiento entre las clases se disminuye.
Favorece la modularidad y el mantenimiento.

Los atributos de una clase no deberan ser

manipulables directamente por el resto de objetos

Generalmente los atributos de una clase son siempre


privados y los mtodos que los manipulan pblicos

Francisco Ruiz - IS1

Repaso 7.32

16

Clases - Encapsulamiento
En UML los niveles de encapsulamiento son:

(-) Privado: es el ms fuerte. Esta parte es totalmente


invisible hacia el exterior, slo es visible para la propia
clase.

(#) Protegido: Los atributos/operaciones protegidos son


visibles slo para las clases derivadas de la original.

(+) Pblico: Los atributos/operaciones pblicos son

visibles a otras clases (cuando se trata de atributos se est


transgrediendo el principio de encapsulamiento).

Francisco Ruiz - IS1

Repaso 7.33

Relaciones

Los enlaces que relacionan los objetos pueden verse


de manera abstracta en el mundo de las clases:

A cada familia de enlaces entre objetos corresponde una


relacin entre las correspondientes clases

Un enlace entre dos objetos es una instancia de la relacin


entre las clases a las que pertenecen ambos objetos.

Formas de relacin entre clases:

Asociacin [agregacin como tipo particular]


Generalizaciones / Especializaciones

Se pueden crear jerarquas entre clases mediante


sucesivas agregaciones y/o generalizaciones.

Francisco Ruiz - IS1

Repaso 7.34

17

Relaciones - Asociaciones

Diagrama de objetos

Asociacin:

e2

D.E. de Sistemas

Es una abstraccin de
los enlaces que existen
entre los objetos
instancias de esas
clases.
Se representan como
los enlaces y se
diferencian por el
contexto del diagrama.

Pepe: Estudiante

e1

Expresa una conexin


semntica entre clases.

Antonio: Estudiante

e3
Sara: Estudiante

enlaces

e1
Ing. Programacin

e2

Pepe: Estudiante

Isabel: Estudiante

Diagrama de clases
Estudiante

Asignatura
asociacin
Francisco Ruiz - IS1

Repaso 7.35

Relaciones - Asociaciones

Asociacin:

[direccin y multiplicidad]
Trabaja en >

Persona

< Emplea a

Persona
Persona

Compaa

Trabaja en >
1..*

Alumnos
1..*
Francisco Ruiz - IS1

Compaa

Compaa

Asignaturas
1..*
Repaso 7.36

18

Relaciones - Asociaciones

Ejemplo de Asociaciones:
marido
casado-con
mujer

jefe
Administra

0..1
0..1

Persona
nombre
s.s.

emplea-a

Compaa
trabaja-para nombre
direccin
*

0.. 1

empleado

Francisco Ruiz - IS1

Repaso 7.37

Relaciones - Asociaciones

Multiplicidad de Asociaciones
Mnima .. Mxima
1
Uno y slo uno
0..1
Cero o uno
M..N
Desde M hasta N (enteros naturales)
*
Cualquiera (cero o varios)
0..*
Cualquiera (entre cero y varios)
1..*
Uno o muchos (al menos uno)
Slo suponen restricciones los casos:

Mnimo mayor de cero (1 o >1)


Mximo menor que varios (0,1 u otro n<>*)

Francisco Ruiz - IS1

Repaso 7.38

19

Relaciones - Agregaciones

Puede
tener
nombre

Agregacin:

Forma particular de
asociacin con acoplamiento

1
Agregado

componentes
*

fuerte y asimtrico

Representa una relacin


parte_de entre objetos

Una de las clases cumple una


funcin ms importante que
la otra.

Permite representar
asociaciones amo/esclavo,
todo/partes, compuestos /
componentes.

1
coche

motor
1
*

Flotas

Equipo

Barcos

Persona

La existencia de ambos es
independiente

Agregacin
compartida

Francisco Ruiz - IS1

Repaso 7.39

Relaciones - Agregaciones

Agregacin:
Coche
marca:String

Rueda

modelo:String
cilindrada:entero
r1, r2, r3, r4:

Francisco Ruiz - IS1

anchura:entero
dimetro:entero
inflar()
desinflar()

Repaso 7.40

20

Relaciones - Agregaciones

La Composicin es un tipo especfico de Agregacin:


*

T e x to

C u a d ro d e
te x to

C o n tie n e
V e n ta n a
*

B o t n

*
M enu

La clase del todo debe controlar el ciclo de vida de sus clases parte

Francisco Ruiz - IS1

Repaso 7.41

Relaciones - Generalizacin

Las jerarquas de clases o clasificaciones permiten


gestionar la complejidad ordenando los objetos dentro de
rboles de clases
Generalizacin:
Consiste en factorizar los elementos comunes (atributos,
operaciones y restricciones) de un conjunto de clases en una
clase ms general llamada superclase

Especializacin:
Permite capturar particularidades de un conjunto de objetos no
discriminados por las clases ya identificadas. Las nuevas
caractersticas se representan por una nueva clase, subclase de
una de las clases existentes.

La Generalizacin y Especializacin son equivalentes en


cuanto al resultado: la jerarqua y herencia establecidas

Francisco Ruiz - IS1

Repaso 7.42

21

Relaciones - Generalizacin
Nomenclatura:
clase padre - clase hija
superclase subclase
clase base - clase derivada

Las subclases heredan propiedades de sus clases


padre:
Los atributos, operaciones y asociaciones de la clase padre
estn disponibles en sus clases hijas.

Francisco Ruiz - IS1

Repaso 7.43

Relaciones - Generalizacin

Generalizacin:

Abstracciones ms
generales

Vehculo

Vehculo terrestre

Coche

Francisco Ruiz - IS1

Camin

Vehculo areo

Avin

Heli cpt ero

Repaso 7.44

22

Relaciones - Generalizacin

Especializacin:
Transmisin

Continua

Cambio

Discreta

Caja de Cambios

Embrague

Extensin por especializacin


Francisco Ruiz - IS1

Repaso 7.45

Relaciones - Generalizacin
Varias especializaciones pueden compartir una
misma clase padre, usando discriminadores:
Comercial

Militar

uso
Vehculo Areo

estructura

Avin

Francisco Ruiz - IS1

Helicptero

Repaso 7.46

23

Relaciones - Generalizacin

Mecanismo de Herencia

Las subclases heredan las propiedades


y mtodos de las superclases

Las subclases especializan a la


superclase

La superclase es una definicin


generalista de las subclases

Las subclases pueden...


Subclase 1
Aadir
a1, a2, a3, a3, a7
Inhibir
m1, m2, m3, m3, m5
Redefinir

Superclase
a1, a2, a3
m1, m2, m3

Subclase 2
a1, a2, a3, a4, a5
m1, m2, m3, m3, m4

Francisco Ruiz - IS1

Repaso 7.47

Relaciones - Generalizacin

Herencia Simple:
Persona

nombre
edad
FechaDeNacimiento
nacer()
crecer()
morir()

Profesor
salario
FechaDeContrato
subirSueldo(x:short)
contratar()
despedir()

Francisco Ruiz - IS1

Alumno
FormaDeAcceso
FechaDeMatrcula
aprobar()
suspender()

Repaso 7.48

24

Relaciones - Generalizacin

La Herencia Mltiple se presenta cuando una


subclase tiene ms de una superclase.

Debe manejarse con precaucin (o evitarla) porque


plantea problemas:

conflicto de nombre,
conflicto de precedencia.

Francisco Ruiz - IS1

Repaso 7.49

Relaciones - Generalizacin

Herencia Mltiple:

Profesor
salario
FechaDeContrato
subirSueldo(x:short)
contratar()
despedir()

Alumno
FormaDeAcceso
FechaDeMatrcula
aprobar()
suspender()

ProfesorQueEstudia
porcentajeDeDescuento

Francisco Ruiz - IS1

Repaso 7.50

25

Relaciones - Generalizacin

Uso disciplinado de la herencia mltiple:


Clasificaciones disjuntas con clases padre en hojas de
jerarquas alternativas.

Bpedo

Cuadrpedo

nro patas

nro patas
Herbvoro

Con Pelos
comida

cubertura
Con Plumas

Animal

cobertura

comida

cobertura

Carnvoro

Con Escamas

Conejo

Francisco Ruiz - IS1

Repaso 7.51

Relaciones - Generalizacin
Al utilizar Herencia entre clases debe tenerse
siempre en cuenta el Principio de Sustitucin de
Liskow, que afirma que:

Debe ser posible utilizar cualquier objeto instancia


de una subclase en el lugar de cualquier objeto
instancia de su superclase sin que la semntica del
programa escrito en los trminos de la superclase se
vea afectado.

Francisco Ruiz - IS1

Repaso 7.52

26

Polimorfismo
El trmino polimorfismo se refiere a algo que puede
adoptar varias formas diferentes.
En OO, el polimorfismo es la posibilidad de
desencadenar operaciones distintas en
respuesta a un mismo mensaje.
Cada subclase hereda las operaciones de su superclase
pero tiene la posibilidad de modificar localmente el
comportamiento de estas operaciones (redefinicin).
La operacin por tanto es polimorfa.
En tiempo de ejecucin, se elige la implementacin
apropiada de la operacin en funcin de la clase del
objeto concreto sobre el que se enve el mensaje (enlace
dinmico).
Francisco Ruiz - IS1

Repaso 7.53

Polimorfismo
Ejemplo:
Todo animal duerme, pero cada especie lo hace de forma
distinta.
Animal

Zoo
1

Len

Dormir()
{Sobre el
vientre}

Francisco Ruiz - IS1

Dormir()

Tigre

Dormir()
{Sobre la
espalda}

Oso

Dormir()
{En un rbol}

Repaso 7.54

27

Das könnte Ihnen auch gefallen