Professional Documents
Culture Documents
Programación Orientada a
Objetos
Contenidos
1. Evolución del Software
a) Programación No Estructurada
b) Programación Estructurada
c) Programación Orientada a Objetos
3. Modularidad
4. Problemas de la Programación Estructurada
5. La POO como solución
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/publishedArt
icles.html
Evolución del Software
Programación
Programación estructurada Programación
NO estructurada (o Procedimental) Orientada a Objetos
4
MODULARIDAD
Evolución del software
• Programación No Estructurada
• Programación Estructurada (Procedimental)
PROGRAMA
Programa Principal
datos
Programación no estructurada
Función noEstructurada1
escribir(“Teclea dos números: “);
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: dd+f
c1 c1 + 1
si (c1 < a) entonces saltarA(eti1)
¿Alguna duda sobre
c2 c2 + 1 por qué se le llama
saltarA(eti2) spaghetti code?
eti3: d 1
eti4: escribir(d)
Programación no estructurada
Función noEstructurada2
escribir(“Teclea dos números: “);
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)
Evolución de los lenguajes de programación
Función factorial
escribir(“Teclea dos números: “); leer(base, exp);
si (exp = 0) entonces
resul1;
sino
principio
resulbase; cont21;
mientras (cont2 < exp) hacer
principio Hay indentación y se
factorresul; resul0; cont10; evitan las etiquetas,
pero me sigue
mientras (cont1 < base) hacer pareciendo poco
principio legible
resulresul + factor;
cont1cont1 + 1;
fin
cont2cont2 + 1;
fin
escribir(resul);
fin
Programación Estructurada
• También llamada procedimental
• Variables globales, variables locales y parámetros
PROGRAMA
Procedimiento2
Procedimiento1 Procedimiento2 Procedimiento3
Procedimiento3
Programación Estructurada
• Parte
del diseño top-down: descomponer los
requerimientos del programa paso a paso, hasta llegar
aun nivel que permite expresarlos mediante
procedimientos y funciones.
M1
abstracción
TOP-DOW
M2 M3 M4
M5 M6 M7 M8 M9
PROGRAMA
Programa Principal
datos
Módulo1 Módulo2
Datos + Datos1 Datos + Datos2
Si se produce un error
en un módulo, éste sólo
afecta a dicho módulo
Protección Modular
Programación Orientada a Objetos
• El término de Programación Orientada a Objetos
indica más una forma de diseño y una metodología de
desarrollo de software que un lenguaje de
programación, ya que en realidad se puede aplicar el
Diseño Orientado a Objetos a cualquier tipo de
lenguaje de programación.
objeto2 objeto4
color azul color rojo
tipo policiaco tipo utilitario
matricula 0000 PM matricula 9235 FCB
velocidadMax 250 velocidadMax 200
objeto1 objeto3
color rojo color amarillo
tipo deportivo tipo elegante
matricula 1234 ABC matricula 9876 DEF
velocidadMax 300 velocidadMax 150
Programación Orientada a Objetos
CLASE
CLASE Coche
Agrupación de las características (atributos) y
funcionalidad (métodos) de todos los coches
color String
tipo String
matricula String
velocidadMax real Tipo de retorno
PROGRAMA
Objeto1
Datos1 Objeto3
Datos3
Objeto2
Datos2
Objeto4
Datos4
Características de los Objetos
• Identidad del Objeto
Aunque dos objetos sean exactamente iguales en sus
atributos, son distintos entre si.
• Clasificación
Abstracción del concepto de objeto llamada clase
• Mantenibilidad
Un programa o sistema debe ser fácilmente
modificable
• Reusabilidad
Los objetos definidos en un programa pueden ser
extraídos e implantados en otro sin tener que realizar
modificaciones importantes en su código
Características de los Objetos
• Encapsulación y ocultación de datos
La información dentro de un objeto puede ser:
٧ privada: información que necesita el objeto para
operar. Es innecesaria para el resto de objetos
٧ pública: la necesitan el resto de objetos para
interactuar con él
La encapsulación es la capacidad de los objetos de
construir una capsula a su alrededor ocultando la
información que contienen, necesaria para su
funcionamiento interno pero innecesaria para los
demás objetos.
CLASE Fraccion
Atributos
numerador: entero
entero denominador: entero
Métodos
-constructor-
escribir()
multiplicarPorEntero(pNum: entero): Fraccion
sumar(pFracc: Fraccion): Fraccion
2
Comparación de la versión estructurada
con la Orientada a Objetos para resolver un
problema
Especificación
Tendremos varias formas en una ventana
gráfica: un cuadrado, un círculo y un
triángulo. Cuando el usuario pinche en
una de las formas, ésta rotará 360º en el
sentido de las agujas del reloj (es decir,
hará una rotación completa) y tocará
un sonido en formato AIF, específico para
esa forma.
Programación Estructurada vs. Orientada a Objetos
Aitor
Jon Cuadrado
Aitor
Jon
Amoeba
rotar (numForma) {
// rotar la forma 360º
} rotar(){
// código para
tocarSonido(numForma) { // rotar amoeba
// si la forma no es amoeba
}
// usar numForma para
// buscar el fichero AIF
// a tocar y hacerlo sonar tocarSonido(){
// si no // código para
// tocar .hif de la amoeba // tocar sonido
} //.hif en amoeba
}
Programación Estructurada vs. Orientada a Objetos
Forma
rotar() 2
abstracción y
generalización
tocarSonido()
Cómo diseña Aitor...
Unimos las 4 clases
a la nueva clase
superclase Forma 3
Forma, formando
rotar() una relación de
HERENCIA
tocarSonido()
subclases
Programación estructurada:
• Los datos y los procedimientos están separados y sin
relación.
• Presta atención al conjunto de acciones que
manipulan el flujo de datos desde la situación inicial
a la final.
• Anima al programador a pensar sobre todo en
términos de procedimientos y funciones, y en
segundo lugar en las estructuras de datos que esos
procedimientos manejan.
Programación Orientada a Objetos
Buenas noches!
entero consultarOcupación
Una mesa por
favor CLIENTE RECEPCIONISTA
entero asignarMesa()
Iñaki (1) Bautista
Tomaré crema de
verduras y besugo Antonio, acompaña
(2) al caballero a la
(3) mesa 2
anotarPedido(listaPlatos) atenderCliente(Iñaki)
cocinar (plato)
CAMARERO cocinarPedido(listaPlatos) COCINERO
Una crema de
(4)
verduras y besugo
Antonio Arzak
servir(unPlato)
(5)
Marchando una
crema de verduras
Tipos de Módulos
a) Módulos de definición
b) Módulos de servicio
b) Módulos 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 estáticas
Tipos de Módulos
c) Módulos de Abstracción de Datos
• Representan TADs
• Se definen el tipo de datos y sus operaciones
• La implementación se realiza como una clase