Professional Documents
Culture Documents
Programacin Orientada
a Objetos
Contenidos
1. Objetivos
2. Evolucin del Software
a)
b)
c)
Programacin No Estructurada
Programacin Estructurada
Programacin Orientada a Objetos
3. Modularidad
4. Problemas de la Programacin Estructurada
5. La POO como solucin
6. Modularidad en Java
Referencias
http://www.javaworld.com
http://java.sun.com
http://www.gamelan.com
http://www.mindview.net/Books/TIJ/index_html
http://ootips.org
http://www.objectmentor.com/resources/publishe
dArticles.html
Objetivos
Se presentar el concepto de Modularidad,
imprescindible para desarrollar proyectos grandes.
Se expondr la evolucin de los paradigmas de
programacin, desde la Programacin No Estructurada
hasta la Programacin Orientada a Objetos.
Se realizar una comparativa entre los distintos
paradigmas, destacando las mejoras introducidas por
la POO.
A modo de ejemplo revisaremos los recursos que
proporciona el lenguaje de programacin Java para
cumplir con los principios de diseo.
Programacin
NO estructurada
Programacin
estructurada
(o Procedimental)
Programacin
Orientada a Objetos
MODULARIDAD
Programacin No Estructurada
Programacin no Estructurada
Problemas:
Programa Principal
datos
Programacin no estructurada
Funcin noEstructurada1
escribir(Teclea dos nmeros: );
leer(a, b);
si (b = 0) entonces saltarA(eti3)
c2 1
da
eti2: si (c2 < b) entonces c1 0
sino saltarA(eti4)
fd
d0
eti1: d d + f
c1 c1 + 1
si (c1 < a) entonces saltarA(eti1)
c2 c2 + 1
saltarA(eti2)
eti3: d 1
eti4: escribir(d)
Programacin no estructurada
Funcin noEstructurada2
escribir(Teclea dos nmeros: );
leer(base, exp);
si (exp = 0) entonces saltarA(eti3)
cont2 1
resul base
eti2: si (cont2 < exp) entonces cont1 0
sino saltarA(eti4)
factor resul
resul 0
eti1: resul resul + factor
cont1 cont1 + 1
si (cont1 < base) entonces saltarA(eti1)
cont2 cont2 + 1
saltarA(eti2)
eti3: resul 1
eti4: escribir(resul)
Hay indentacin y se
evitan las etiquetas,
pero me sigue
pareciendo poco legible
Programacin Estructurada
Programa
Principal
Programa Principal
datos
Procedimiento1
Procedimiento1
Procedimiento2
Procedimiento3
Procedimiento2
Procedimiento3
Programacin Estructurada
Parte
M2
M5
M3
M6
TOP-DOWN
abstraccin
M1
M4
M7
M8
M9
Programacin estructurada
Programa principal
entero a, b, d;
pedir_numero(a);
pedir_numero(b);
d=potencia(a, b);
escribir(d);
tipo parmetro
tipo resultado
tipo variable
local
Programacin estructurada
Funcin pedir_numero(): entero
escribir(Teclea un nmero: );
leer(a);
devolver(a);
Funcin multiplicar(a: entero, b: entero): entero
c: entero;
c0
mientras(b>0) hacer
principio
cc + a;
bb-1;
fin
devolver(c);
Modularidad
Programa Principal
datos
Mdulo1
Datos + Datos1
Proced1
Mdulo2
Datos + Datos2
Proced2
Proced3
Modularidad
Modulo: unidad elemental para desarrollar
aplicaciones
Funcionales: subprogramas
Declarativos (datos + funcionalidad): TAD
Si se produce un error
en un mdulo, ste slo
afecta a dicho mdulo
Proteccin Modular
Clase
Generalizacin de un objeto particular. Una clase representa
una familia de objetos concretos.
Programa
Conjunto de objetos que colaboran entre ellos para realizar
tareas
OBJETOS
objeto2
color azul
tipo policiaco
matricula 0000 PM
velocidadMax 250
objeto1
color rojo
tipo deportivo
matricula 1234 ABC
velocidadMax 300
objeto4
color rojo
tipo utilitario
matricula 9235 FCB
velocidadMax 200
objeto3
color amarillo
tipo elegante
matricula 9876 DEF
velocidadMax 150
CLASE
Tipo de retorno
real frenar()
adelantar(pOtro Coche)
Encapsula en objetos
el Qu Datos
Objeto1
Datos1
Objeto4
Datos4
Objeto3
Datos3
Objeto2
Datos2
OBJETO
Salida
Construccin de Clases
Una clase describe un grupo de objetos con similares:
Propiedades (atributos)
Comportamientos (operaciones o mtodos)
Relaciones con otros objetos
Cada objeto conoce cul es su clase.
La mayora de los lenguajes Orientados a Objetos pueden
determinar a qu clase pertenece un objeto durante la
ejecucin del programa
Construccin de Clases
Pasos para definir una clase:
1. Identificar los objetos
Cuadrado
Crculo
rotar(){
Tringulo
// cdigo para rotar C
rotar(){
}
// cdigo para rotar C
rotar(){
}
tocarSonido(){
// cdigo para
// cdigo para tocar
tocarSonido(){// rotar el tringulo
// sonido del Cuadr
} tocar
// cdigo para
}
// sonido del Circulo
tocarSonido(){
}
// cdigo para tocar
// sonido del Tring
}
Aitor
Amoeba
rotar(){
//cdigopara
//rotaramoeba
}
tocarSonido(){
//cdigopara
//tocarsonido
//.hifenamoeba
}
lo que al
cliente
se
le olvid
citar...
Aitor
Amoeba
intpuntoX
intpuntoY
rotar(){
//cdigopararotaramoeba
//usandopuntoX,puntoY
}
tocarSonido(){
//cdigoparatocar
//sonido.hifenamoeba
qu
tienen las
4 clases
en
comn?
1
Cuadrado
rotar()
Crculo
Tringulo
rotar()
tocarSonido() tocarSonido()
Amoeba
rotar()
rotar()
tocarSonido()
tocarSonido()
Forma
rotar()
tocarSonido()
abstraccin y
generalizaci
n
Forma
rotar()
tocarSonido()
Unimos las 4
clases a la nueva
clase Forma,
formando una
relacin de
HERENCIA
subclases
Cuadrado
Crculo
Tringulo
rotar()
rotar()
rotar()
tocarSonido()
tocarSonido() tocarSonido()
Amoeba
rotar()
tocarSonido()
Conclusiones
Programacin estructurada:
Los datos y los procedimientos estn separados y sin
relacin.
Presta atencin al conjunto de acciones que
manipulan el flujo de datos desde la situacin inicial
a la final.
Anima al programador a pensar sobre todo en
trminos de procedimientos y funciones, y en
segundo lugar en las estructuras de datos que esos
procedimientos manejan.
Programacin Orientada a Objetos
Presta atencin a la interrelacin que existe entre los
datos y las acciones a realizar con ellos.
entero consultarOcupacin
CLIENTE
Iaki
entero asignarMesa()
Bautista
(1)
Tomar crema de
verduras y besugo
anotarPedido(listaPlatos)
Una crema de
verduras y besugo
(3)
CAMARERO
RECEPCIONISTA
(2)
atenderCliente(Iaki)
cocinarPedido(listaPlatos)
Antonio, acompaa
al caballero a la
mesa 2
cocinar (plato)
COCINERO
(4)
Antonio
servir(unPlato)
Arzak
(5)
Marchando una
crema de verduras
Tipos de Mdulos
a) Mdulos de definicin
b) Mdulos de servicio
c) Tipos Abstractos de Datos
d) Mquinas Abstractas de Estado
Tipos de Mdulos
a) Mdulos de Definicin
b) Mdulos de Servicio
Ofrecen un servicio
Agrupan un conjunto de operaciones
Las operaciones de la interfaz se declaran
sobre clases no instanciables
Las operaciones son declaradas estticas
Tipos de Mdulos
c) Mdulos de Abstraccin de Datos
Representan TADs
Se definen el tipo de datos y sus
operaciones
La implementacin se realiza como una
clase