Anda di halaman 1dari 30

INGENIERA DEL SOFTWARE II

Tema 1

Conceptos Fundamentales sobre


Ingenieria de Software Orientado a Objetos
Universidad Salesiana - Cbba
Ivan Fernandez Daza

Objetivos

Repasar los conceptos fundamentales del paradigma


de Orientacin a Objetos.

Ivan Fernandez Daza - IS2

Repaso 1.2

Contenido

Introduccin

Justificacin
Problemas

Polimorfismo
Persistencia

Objetos

Estado
Comportamiento
Identidad

Clases

Encapsulamiento

Relaciones

Asociaciones
Agregaciones
Generalizacin

Ivan Fernandez Daza - IS2

Repaso 1.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.

Ivan Fernandez Daza - IS2

Repaso 1.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

Ivan Fernandez Daza - IS2

Repaso 1.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

Ivan Fernandez Daza - IS2

Repaso 1.6

Introduccin

Diseo
Estructurado

PROGRAMAS
DFD

DATOS
Mod. E/R

Sistema de
Informacin
La Orientacin a Objetos
...es un paradigma unificador

Ivan Fernandez Daza - IS2

Repaso 1.7

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

Ivan Fernandez Daza - IS2

Repaso 1.8

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 ...

Ivan Fernandez Daza - IS2

Repaso 1.9

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
Ivan Fernandez Daza - IS2

Repaso 1.10

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
Ivan Fernandez Daza - IS2

Repaso 1.11

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.

Ivan Fernandez Daza - IS2

Repaso 1.12

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).

Ivan Fernandez Daza - IS2

Repaso 1.13

Objetos

Unidad atmica formada por la unin


de estado y comportamiento.
La encapsulacin proporciona una
cohesin interna fuerte y un
acoplamiento externo dbil.
Para manipular los objetos se utilizan
los mensajes.

Comportamiento
visible

OBJETO

Estado interno

Objeto = Estado + Comportamiento + Identidad

Ivan Fernandez Daza - IS2

Repaso 1.14

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

Ivan Fernandez Daza - IS2

Repaso 1.15

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.

Ivan Fernandez Daza - IS2

Automvil
Verde
120 CV
1000 Kg.

Repaso 1.16

Objetos - Estado

El estado evoluciona con el


tiempo.

Automvil

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

50 litros

Recorrido de
150 Km.

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

Ivan Fernandez Daza - IS2

Repaso 1.17

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.

Ivan Fernandez Daza - IS2

Repaso 1.18

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.

Ivan Fernandez Daza - IS2

Repaso 1.19

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.

Ivan Fernandez Daza - IS2

Repaso 1.20

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
3:

1:

Servidor 2

Un cliente

Ivan Fernandez Daza - IS2

Repaso 1.21

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

Ivan Fernandez Daza - IS2

Repaso 1.22

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
Flujo de control plano
Retorno de una llamada a procedimiento

Ivan Fernandez Daza - IS2

Repaso 1.23

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.

Ivan Fernandez Daza - IS2

Repaso 1.24

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
Ivan Fernandez Daza - IS2

Repaso 1.25

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

Ivan Fernandez Daza

Repaso 1.26

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

Ivan Fernandez Daza - IS2

Repaso 1.27

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


Ivan Fernandez Daza - IS2

Repaso 1.28

Clases

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

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

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

Ivan Fernandez Daza - IS2

Repaso 1.29

Clases

Ejemplos de Representaciones de Clases:


Nombre de clase
Atributos
Operaciones ( )

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

Ivan Fernandez Daza - IS2

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

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

Repaso 1.30

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)

Ivan Fernandez Daza - IS2

Repaso 1.31

Clases - Encapsulamiento
Mundo
Pblicos
Atributos
Privados

Privados
Mtodos
Pblicos
Ivan Fernandez Daza - IS2

Repaso 1.32

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

Ivan Fernandez Daza - IS2

Repaso 1.33

Clases - Encapsulamiento
En UML los niveles de encapsulamiento (heredados de
C++) son:

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

invisible (excepto para clases friends en terminologa C++).

(#) Los atributos/operaciones protegidos estn visibles


para las clases friends y para las clases derivadas de la
original.

(+) Los atributos/operaciones pblicos son visibles a otras


clases (cuando se trata de atributos se est transgrediendo
el principio de encapsulamiento).

Ivan Fernandez Daza - IS2

Repaso 1.34

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 [y agregacin como tipo particular]


Generalizaciones / Especializaciones

Se pueden crear jerarquas entre clases mediante


sucesivas agregaciones y/o generalizaciones.

Ivan Fernandez Daza - IS2

Repaso 1.35

Relaciones - Asociaciones

Asociacin:

Expresa una conexin


semntica bidireccional
entre clases.

enlaces

D.E. de Sistem as

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
e2

Antonio: Estudiante
e3
Sara: Estudiante

e1
Ing. Program acin

e2

Pepe: Estudiante

Isabel: Estudiante

Asignatura

Estudiante
asociacin

Ivan Fernandez Daza - IS2

Repaso 1.36

Relaciones - Asociaciones

Asociacin:

[direccin y multiplicidad]
Trabaja en >

Persona

Compaa
< Emplea a

Persona

Persona

Compaa
Trabaja en >
1..*

Compaa
1

Alumnos

Asignaturas
1..*

1..*

Ivan Fernandez Daza - IS2

Repaso 1.37

Relaciones - Asociaciones

Ejemplo de Asociaciones:
marido
casado-con
mujer

jefe

0..1
0..1

Persona
nombre
s.s.

emplea-a

Compaa
nombre
trabaja-para
direccin
*

0.. 1

*
Administra
empleado

Ivan Fernandez Daza - IS2

Repaso 1.38

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<>*)

Ivan Fernandez Daza - IS2

Repaso 1.39

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.
La existencia de ambos es
independiente

Ivan Fernandez Daza - IS2

1
Univer

Estudi
*
*

Flotas

Equipo

Barcos

Persona
Agregacin
compartida

Repaso 1.40

Relaciones - Agregaciones

Agregacin:
Coche
marca:String

Rueda

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

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

Ivan Fernandez Daza - IS2

Repaso 1.41

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

Ivan Fernandez Daza - IS2

Repaso 1.42

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.

Ivan Fernandez Daza - IS2

Repaso 1.43

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.

Ivan Fernandez Daza - IS2

Repaso 1.44

Relaciones - Generalizacin

La nocin de clase est prxima a la de conjunto.


Dada una clase, podemos ver el conjunto relativo a las

instancias que posee o bien relativo a las propiedades de


la clase:
Extensin: Posibles instancias de una clase.
Intensin: Propiedades definidas en una clase.

Generalizacin y especializacin expresan relaciones de


inclusin entre conjuntos.
A

int(A) int(B)
ext(B) ext(A)
B
Ivan Fernandez Daza - IS2

Repaso 1.45

Relaciones - Generalizacin

Generalizacin:

Abstracciones ms
generales

Vehculo

Vehculo terrestre

Coche

Ivan Fernandez Daza - IS2

Camin

Vehculo areo

Avin

Heli cpt ero

Repaso 1.46

Relaciones - Generalizacin

Especializacin:
Transmisin

Continua

Cambio

Discreta

Embrague

Caja de Cambios

Extensin por especializacin


Ivan Fernandez Daza - IS2

Repaso 1.47

Relaciones - Generalizacin
La especializacin es una tcnica muy eficaz para la
extensin y reutilizacin
Coche

Funcionando

Est rope ado

Restricciones predefinidas (UML y Entidad-Relacin):

disjunta - no disjunta
[exclusiva solapamiento]
total (completa) - parcial (incompleta)
Ivan Fernandez Daza - IS2

Repaso 1.48

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

Militar

uso
Vehculo Areo

estructura

Avin

Helicptero

Ivan Fernandez Daza - IS2

Repaso 1.49

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

Ivan Fernandez Daza - IS2

Superclase
a1, a2, a3
m1, m2, m3

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

Repaso 1.50

Relaciones - Generalizacin

Herencia Simple:
Persona
nombre
edad
FechaDeNacimiento
nacer()
crecer()
morir()

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

Alumno
FormaDeAcceso
FechaDeMatrcula
aprobar()
suspender()

Ivan Fernandez Daza - IS2

Repaso 1.51

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.

Ivan Fernandez Daza - IS2

Repaso 1.52

Relaciones - Generalizacin

Herencia Mltiple:

Profesor

Alumno

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

FormaDeAcceso
FechaDeMatrcula
aprobar()
suspender()

ProfesorQueEstudia
porcentajeDeDescuento

Ivan Fernandez Daza - IS2

Repaso 1.53

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

cobertura

Animal
comida
Carnvoro

cobertura
Con Escamas

Conejo

Ivan Fernandez Daza - IS2

Repaso 1.54

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.

Ivan Fernandez Daza - IS2

Repaso 1.55

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 pero tiene la
posibilidad de modificar localmente el comportamiento de
estas operaciones.

Ivan Fernandez Daza - IS2

Repaso 1.56

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

Zoo
1

Len

Dorir ()
{S obre el
vientre}

Ivan Fernandez Daza - IS2

Dorm ir()

Tigre

Dorm ir()
{S obre la
espalda}

Oso

Dorm ir()
{E n un rbol}

Repaso 1.57

Polimorfismo

En la OO existen dos formas de polimorfismo:


De subclases
Un servicio definido en una clase se redefine en alguna de sus
subclases manteniendo el mismo nombre. Entonces un mensaje
enviado a un objeto que pertenece a una cierta clase de la
jerarqua puede invocar cualquiera de estos servicios, segn sea la
clase a la que pertenezca el objeto que lo recibe.

De sobrecarga
Utilizando el mismo nombre para servicios distintos, no situados en
una jerarqua de generalizacin (sobrecargando el significado del
trmino).

Ivan Fernandez Daza - IS2

Repaso 1.58

Polimorfismo

Existen dos mecanismos temporales diferentes de


elegir (vincular) la clase:

Vinculacin esttica
En tiempo de compilacin se decide qu mtodo ser
ejecutado por cada objeto en cada caso

Vinculacin dinmica, retardada o postergada:


En el momento de envo del mensaje, el sistema
selecciona el mtodo ms especfico.
Decidir si la accin es vlida.
Comprobacin de consistencia de tipos.

Ivan Fernandez Daza - IS2

Repaso 1.59

Persistencia
La persistencia de los objetos designa la capacidad
de un objeto trascender en el espacio/tiempo.
Podremos despus reconstruirlo, es decir, cogerlo de
memoria secundaria para utilizarlo en la ejecucin
(materializacin del objeto).
Los lenguajes OO no proponen soporte adecuado
para la persistencia, la cual debera ser transparente,
un objeto existe desde su creacin hasta que se
destruye.

Ivan Fernandez Daza - IS2

Repaso 1.60