Está en la página 1de 32

El paradigma Orientado a Objetos.

Facultad Nacional de Ingenieria


Ingeniera de Sistemas e Informtica
17/07/2005 2
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 3
Evolucin Histrica
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
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

También podría gustarte