Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Motivacin
Definiciones bsicas
Objetos
Mensajes y mtodos
Clases, subclases y objetos
Herencia
Conceptos claves
Encapsulamiento
Abstraccin
Polimorfismo
Persistencia
Introduccin
Qu vimos hasta ahora?
Programacin Estructurada
Introduccin
Problemas de la Programacin Estructurada
Varios programadores
aplicacin grande.
trabajan
en
equipo
desarrollando
una
Introduccin - POO
Qu es lo que ves?
Introduccin - POO
Qu es lo que ves?
Introduccin - POO
Qu es lo que ves?
Introduccin - POO
Qu es lo que tienen en comn?
Modelo
Marca
Color
Velocidad
Acelerar
Desacelerar
Apagar
Arrancar
Introduccin - POO
Qu es una clase?
Es un modelo o prototipo que define las variables y mtodos
comunes a todos los objetos de ciertas caractersticas
comunes.
Es una plantilla genrica para un conjunto de objetos de
similares caractersticas.
Contiene:
Conjunto de atributos comunes
Estructura de datos
Comportamiento por medio de mtodos
Cmo lo
relacionamos con
nuestro ejemplo
de los autos?
caractersticas
comportamiento
Auto
marca
modelo
color
velocidad
capacidad bal
acelerar()
desacelerar()
arrancar()
apagar()
es un
OBJETO
Programacin
Estructurada
Programacin
Orientada a Objetos
Objeto
Programa
Datos
Mtodos
Objeto
Datos
Datos
Mtodos
Mdulo 2
Mdulo 1
Datos
Mtodos
Objeto
Programa
CLASE
AUTO
Atributos:
marca, modelo, color, velocidad mxima, velocidad actual,
tamao tanque de combustible, cantidad actual de
combustible en el tanque.
Mtodos:
frenar, acelerar, llenar tanque de combustible, etc
POO - Clases
Sintaxis:
Clase nombreClase;
Atributos (caractersticas)
Mtodos (comportamiento)
End;
POO - Clases
Clase Auto;
Atributos
Mtodos
End;
POO - Clases
Clase Auto;
marca: string
modelo: string
color: string
velocidad: integer;
capacidad bal: real
arrancar;
acelerar (vel:integer);
desacelerar (vel:integer);
apagar;
verColor ( ); {todos los otros!!!!}
Se deben implementar cada uno
pintar (nuevoColor: string);
POO - Clases
Clase Auto;
marca: string; modelo: string
color: string; velocidad: integer;
capacidad bal: real;
constructor crear (unaMarca, unModelo, unColor:string; unaCapacidad:real)
Begin
marca:= unaMarca; modelo:= unModelo; color:= unColor; capacidad:= unaCapacidad;
End;
procedure arrancar;
Begin
velocidad:= 0;
End;
procedure acelerar (vel:integer)
Begin
velocidad:= velocidad + vel;
End;
POO - Clases
procedure arrancar;
Begin
velocidad:= 0;
End;
procedure acelerar (vel:integer)
Begin
velocidad:= velocidad + vel;
End;
Procedure verColor (var unColor: string)
Begin
unColor:=color;
End;
procedure pintar (nuevoColor: string);
Begin
color:= nuevoColor;
End;
POO - Clases
Program uno;
Var
a1,a2: Auto;
Notar
que
a
diferencia de los
TADs,
las
operaciones
se
identifican como
varObjeto.mtodo
(salvo
el
constructor)
Begin
a1:= Auto.crear (Citroen,3CV,amarillo, 50);
a1.arrancar;
Forma de invocar
a1.acelerar (100);
los mtodos
a1.desacelerar(30);
a2:= Auto.crear (Ferrari,2007,roja, 100);
a2.arrancar;
End.
Existen objetos que utilicen objetos?
POO - Clases
Considerando la clase auto descripta anteriormente. Adems podemos
suponer que el auto est compuesto por un motor, el cual podra estar
representado por otra clase motor
auto
marca
modelo
color
velocidad
capacidad bal
motor
arrancar
acelerar()
desacelerar()
apagar
pintar ()
verColor()
motor
marca
vlvulas
prendido
Arrancar
Apagar
Cmo redefinimos
el auto?
POO - Clases
Clase auto;
marca: string; modelo: string
color: string; velocidad: integer;
capacidad bal: real;
miMotor:motor;
constructor crear (unaMarca,unModelo,unColor:string; unaVelocidad,
unaCapacidad:real; marcaMotor:string; valvulasMotor:integer)
Begin
marca:= unaMarca; modelo:= unModelo;
color:= unColor; capacidad:= unaCapacidad;
miMotor:= Motor.crear(marcaMotor, valvulasMotor);
End;
procedure arrancar(vel:integer)
Begin
velocidad:= 0;
miMotor.arrancar;
End;
POO - Clases
procedure apagar;
Begin
velocidad:= 0;
miMotor.apagar;
End;
procedure acelerar (vel:integer)
Begin
velocidad:= velocidad + vel;
End;
procedure pintar (unColor:string)
Begin
color:= unColor;
End;
POO - Clases
Clase motor;
marca: string; valvulas:integer; prendido:boolean;
constructor crear (unaMarca:string; unaValvula:integer)
Begin
marca:= unaMarca;
valvulas:= unaValvula;
prendido:= false;
End;
procedure arrancar
Begin
prendido:= true;
End;
procedure apagar
Begin
prendido:= false;
End;
Cmo escribimos el
programa que lo usa?
Algoritmos, Datos y Programas
2010
POO - Clases
Program dos;
Var
a1,a2: Auto;
Begin
a1:= Auto.crear(Citroen, 3CV, amarillo, 50, citroen, 4);
a1.arrancar;
a1.acelerar(30);
a1.apagar;
End.
Cmo funciona?
POO - Conceptos
atributos
Clases Caractersticas
Marca
Modelo
Color
Velocidad
Marca
Modelo
Color
Velocidad
Marca
Modelo
Color
Velocidad
Motor
Motor
PosicinAncla
Potencia de las turbinas
Eslora
Motor
trenAterrizaje
Potencia de las turbinas
Altura mxima de vuelo
Tamao de las alas
Qu se puede notar?
Clases Caractersticas
Cuando se da esta situacin aparece el concepto de HERENCIA
Transporte
es un
Barco
Auto
Capacidad
bal
Crear
Marca
Modelo
Color
Velocidad
Motor
del
Potencia
de
turbinas
Eslora
posicinAncla
Arrancar
Apagar
Crear
Arrancar
Acelerar
Desacelerar
Apagar
Crear
Avin
las
Potencia
de
turbinas
Altura
mxima
vuelo
trenAterrizaje
Arrancar
Apagar
Crear
las
de
Para definir una clase que hereda de otra clase se debe incluir el nombre de
la clase padre entre parntesis.
Transporte
Martimo
Aire
DentroAtmosfera
Nieve
FueraAtmosfera
Tierra
1-Persona
N-Personas
Dnde definimos
atributo?
Dnde definimos
mtodo?
cada
cada
Dnde
implementamos
cada mtodo?
Cmo
implementamos
la clase auto?
potenciaTurbinas: real;
eslora:real;
posicionAncla:string;
reimplementaron los
mtodos arrancar y
apagar ya que se les
quiere dar un
comportamiento
diferente
potenciaTurbinas: real;
alturaMaxVuelo:real;
trenAterrizaje:string;
Procedure apagar
Procedure arrancar
Begin
Begin
trenAterrizaje:=desplegado;
trenAterrizaje:= no desplegado;
super.apagar;
super.arrancar;
Algoritmos,
End; Datos y Programas
End;
2010
Begin
read (mo, ma, co, maMotor);
read(val);
a:= Auto.crear (ma, mo, co, 150.23, maMotor, val);
a.arrancar;
a.acelerar (30);
b:= Barco.crear (Royal, Nautilus, verde, 200.90, 7.80, Honda, 5);
b.arrancar;
b.acelerar(50);
b.pintar(rojo);
a.apagar;
End.
POO Encapsulamiento
Es el trmino formal que describe al conjunto de
mtodos y datos dentro de un objeto de forma que el
acceso a los datos se permite solamente a travs de
los propios mtodos del objeto.
POO Abstraccin
La orientacin a objetos fomenta que los programadores y
usuarios piensen sobre las aplicaciones en trminos abstractos.
POO Abstraccin
Cada nivel de abstraccin facilita el trabajo de
programacin porque hay disponible ms cantidad de
cdigo reutilizable.
POO Polimorfismo
POO Polimorfismo