Documentos de Académico
Documentos de Profesional
Documentos de Cultura
N
O
P
E
R
A
C
I
O
N
A
L
A
B
S
T
R
A
C
C
I
N
D
E
D
A
T
O
S
Lenguajes
Mquina /
Ensamblador
Cd.Inst.Simb.
Macros
Id = Dir Mem.
Manip.Total de
Datos
FORTRAN
Subrutinas
Funciones
Id. Simb.
Tipos
Oper. restring.
PASCAL
Anidamiento
Subprogramas
Registros
Tipos definidos
Gest. Din. Mem
MODULA-2
ADA
Encapsulam.
Octult. Inform.
Espec - Impl
Tipo
Abstracto de
Datos
Lenguajes
Orientados a
Objetos
Objetos
Mtodos
Mensajes
17/07/2005 4
Evolucin Histrica
COMPONENTES
A
B
S
T
R
A
C
C
I
N
O
P
E
R
A
C
I
O
N
A
L
A
B
S
T
R
A
C
C
I
N
D
E
D
A
T
O
S
Lenguajes
Mquina /
Ensamblador
Cd.Inst.Simb.
Macros
Id = Dir Mem.
Manip.Total de
Datos
FORTRAN
Subrutinas
Funciones
Id. Simb.
Tipos
Oper. restring.
PASCAL
Anidamiento
Subprogramas
Registros
Tipos definidos
Gest. Din. Mem
MODULA-2
ADA
Encapsulam.
Octult. Inform.
Espec - Impl
Tipo
Abstracto de
Datos
Lenguajes
Orientados a
Objetos
Mtodos
Mensajes
Objetos
Eventos
Invocacin remota
Componentes
17/07/2005 5
Introduccin
Razones para la crisis del software
Hacer un lpiz es difcil?
La industria del software se parece
ms a ...
la fabricacin de armas?
la fontanera?
Tecnologa / objetivo.
17/07/2005 6
Programa
El Paradigma Orientado a Objetos
Historia e introduccin.
Conceptos bsicos.
Aplicacin de los conceptos en
lenguajes de programacin y
mtodos de anlisis.
17/07/2005 7
Qu es la Orientacin a Objetos?
El concepto surge en los lenguajes de
programacin
Se organiza el software como una coleccin de
objetos discretos que encapsulan
Estructuras de Datos y
Comportamiento.
Un sistema OO funciona mediante la colaboracin
entre los objetos que se comunican entre s.
El concepto se extiende a los mtodos de
anlisis y diseo
Se utilizan los objetos del mundo real como base
para construir modelos
Los elementos que forman los sistemas del mundo
real se corresponden con objetos software
17/07/2005 8
Vehculo
Punto
Figura
Animal
(1,3)
(2,2)
(2,1)
(5,2.5)
Las clases y los objetos estn en todas
partes
Platero:Animal
17/07/2005 9
Conceptos bsicos: CLASES y OBJ ETOS
CLASE
Atributos
Operaciones
Comportamiento
Lavadora
marca
modelo
capacidad: integer
...
Programar
PonerRopa
CerrarPuerta
Lavar
OBJETO
Valores de los atributos
Estado
Identidad
ID:Lavadora
marca=Lapava
capacidad=5
estado=centrifugando
17/07/2005 10
Conceptos bsicos: PASO DE MENSAJ ES
:MandoADistancia
:Televisor
Conectar()
Canal(4)
Invocacin de mtodos
Medio de colaboracin
entre objetos
17/07/2005 11
Conceptos bsicos: ENCAPSULACIN
Ocultacin de detalles
Concepto de Interfaz
Independencia
V
o
l
+
Sens3 => Vol++
=> DAC31.out=2.1
=> Amp27.gain=1.3
=> OSD, Pref, ...
Sens => VolUp =>
=> Settings.vol++
=> DAC23.out=0.7
=> Amp02.gain=1.7
=> OSD, Pref, ...
17/07/2005 12
Conceptos bsicos: HERENCIA
Generalizacin / Especializacin
Los objetos heredan las caractersticas de la
clase.
Las clases pueden heredar de otras clases.
Extensin.
Restriccin.
Modificacin.
Utilidad:
Abstraccin.
Reutilizacin.
Hormiga
Plancha Televisor
Electrodomstico
tensin
consumo
Conectar
Desconectar
Lavadora
capacidad
numCanales vapor
17/07/2005 13
Conceptos bsicos: POLIMORFISMO
Ej: Operacin Abrir
Permite al modelador hablar el lenguaje del cliente.
Evita asignar identificadores artificiosos para
distinguir las operaciones.
Contribuye a la reutilizacin de cdigo.
Ej: Operacin Enchufar
Puerta
Plazo Puerto
Cuenta
Abrir()
Abrir() Abrir()
Abrir()
TomaDeCorriente
tensin
Enchufar(e:Electrodomstico)
17/07/2005 14
Conceptos bsicos: ASOCIACION
Modela la relacin entre objetos (necesaria para
que se comuniquen y colaboren)
Asociacin-Clase / Enlace-Objeto
Tipos bsicos:
Asociacin
Herencia
Agregacin / Composicin (agregacin fuerte)
Coche Motor
rbol
Hoja
17/07/2005 15
Hasta aqu deberamos tener claro ...
Cmo surge el enfoque OO.
Cmo funciona un sistema OO.
El concepto y la representacin de:
Asociacin
Agregacin
Herencia
Polimorfismo
Paso de mensajes
Encapsulacin
Clase y Objeto
Atributos
Operaciones
Comportamiento
Identidad
Interfaz
17/07/2005 16
Programa
El Paradigma Orientado a Objetos
Historia e introduccin.
Conceptos bsicos.
Aplicacin de los conceptos en
lenguajes de programacin y
mtodos de anlisis.
17/07/2005 17
Clases y Objetos
CLASE = MODULO + TIPO
Criterio de Modularizacin
Estado + Comportamiento
Entidad esttica (en general)
OBJETO = Instancia de una CLASE
Objeto (Clase) Valor (Tipo)
Identidad
Entidad dinmica
Cada objeto tiene su propio estado
Objetos de una clase comparten su comportamiento
17/07/2005 18
Mtodos: definen el comportamiento de una
clase
Invocacin de mtodos: Paso de Mensajes
obj . mens( ar gs) mens( obj , ar gs)
Mtodos y Mensajes
Punto
x,y: float
trasladar(a,b)
distancia(pto)
Estado e identidad
Comportamiento
trasladar(1,-1)
P1:Punto
X=2
Y=2
17/07/2005 19
Clases
Estructuras que encapsulan
datos y funciones
class Punto
{ public:
Punto();
float x,y;
void trasladar(float, float);
void cambiar_x(float a){x=a;};
void cambiar_y(float b){y=b;};
float distancia(Punto);
};
P
u
n
t
o
.
h
p
p
VARIABLES DE ESTADO
(DATOS MIEMBRO)
MTODOS
(FUNCIONES MIEMBRO)
CONSTRUCTOR
17/07/2005 20
Colaboracin entre objetos
Los objetos (clases) colaboran para
resolver problemas.
La forma en que los objetos (clases)
colaboran puede ser muy variada:
Asociacin simple
Herencia
Agregacin
Composicin
...
17/07/2005 21
class Segmento {
private Punto inicio,final;
public Segmento(Punto p)
{inicio = Punto();
final = p;}
public float longitud()
{return inicio.distancia(final);}
public void trasladar(float a,float b)
{inicio.trasladar(a,b);
final.trasladar(a,b);}
}
Agregacin de objetos
17/07/2005 22
public class Habitacion {
private int numHabitacion;
private int numCamas;
// declaracin de mtodos
...
}
public class Hotel1 {
Habitacion h1;
Habitacion h2;
// resto declaraciones
...
h1 = new Habitacion( 222 );
}
Composicin de objetos
17/07/2005 23
Construccin y Destruccin
Diferentes mecanismos para la creacin y la
eliminacin de objetos, dependiendo del lenguaje.
Construccin de objetos (reservar memoria):
Constructores (C++, Eiffel, J ava)
Mtodos de clase (Smalltalk)
Eliminacin de objetos (liberar memoria):
Destructores (C++)
Recoleccin automtica de memoria garbage
collection- (Smalltalk, Eiffel, J ava)
Detalles
17/07/2005 24
Construccin y Destruccin
/ / C++
cl ass J ugador {
i nt sal ud;
i nt f uer za;
J ugador ( ) ; / / const r uct or - no
t i ene t i po
J ugador ( i nt s, i nt f ) ; / / const r uct or
al t er nat i vo
voi d mover ( ) ;
voi d at acar ( ) ;
};
J ugador : : ~J ugador ( ) {
17/07/2005 25
Construccin y Destruccin
J AVA
cl ass Ci r cul o ext ends El i pse {
/ / ext ensi n, r est r i cci n,
modi f i caci n;
publ i c Ci r cul o ( ) {
. . . };
publ i c Ci r cul o ( i nt r adi o) {
. . . };
}
. . .
Ci r cul o c1;
. . .
17/07/2005 26
Construccin y Destruccin
Smal l t al k
Vehi cul o subcl ass: #Coche
/ / ext ensi n, r est r i cci n,
modi f i caci n;
. . .
Mi Coche : = Coche new: ABC- 1234
17/07/2005 27
Herencia
Posibilidad de reutilizar cdigo
Algo ms que incluir ficheros o importar
mdulos
Distintos tipos de herencia:
simple / mltiple
de implementacin/de interfaz
Limitaciones
Problemas
Figura
Polgono Elipse
Crculo Irregular Regular
Detalles
17/07/2005 28
Herencia
J AVA
cl ass El i pse ext ends Fi gur a {
/ / ext ensi n, r est r i cci n, modi f i caci n
}
C++
cl ass El i pse : publ i c Fi gur a {
/ / ext ensi n, r est r i cci n, modi f i caci n
}
Smal l t al k
Fi gur a subcl ass: #El i pse
ext ensi n, r est r i cci n, modi f i caci n
Pyt hon
cl ass El i pse ( Fi gur a)
ext ensi n, r est r i cci n, modi f i caci n
17/07/2005 29
Herencia
Extensin y Reutilizacin de cdigo
Una clase derivada hereda el
comportamiento de su clase padre
Redefinicin de mtodos
Clases abstractas
Herencia mltiple / Herencia repetida
17/07/2005 30
Polimorfismo
Una variable puede referirse a objetos de una
clase distinta de la que se ha declarado
Tipo Dinmico vs. Tipo Esttico
Polimorfismo de objetos / de mensajes
Restriccin en base a la herencia
puntero a objeto en C++
17/07/2005 31
Encapsulacin
Las clases ocultan los detalles de
realizacin de los mtodos.
Los usuarios (los objetos que invocan
esos mtodos) conocen el interfaz y la
semntica. No tienen que preocuparse de
los detalles.
El concepto de interfaz puede ampliarse.
Contribuye a la reusabilidad del cdigo.
17/07/2005 32
Al fin del tema debemos tener claro ...
Cmo surge y evoluciona el concepto OO.
Cules son los elementos y caractersticas
bsicas de este enfoque.
Cmo se plasma el enfoque OO en los
lenguajes de programacin.
Las particularidades que se introducen sobre
los conceptos bsicos al aplicarlos en sistemas
reales