UNIDAD 2:
PARADIGMA
ORIENTADO A
OBJETOS
Contenido
2
Introducción
¿Qué es la Programación Orientada a Objetos?
Conceptos básicos
Abstracción
Jerarquía
Encapsulación
Objeto
Clase
Herencia
Programación no-estructurada
3
La forma de resolver problemas es
escribiendo pequeños programas que
consisten de un solo programa principal.
// programa principal
main( )
{
//datos
}
Programación procedural
4
Conforme los problemas son mas complejos y los
programas mas grandes, se guía a la idea de dividir el
problema e identificar sub-problemas o sub-tareas,
creando con ellos: procedimientos o funciones; de tal
forma, que estos bloques de código puedan ser
llamados varias veces en un solo programa. Esta
técnica es la programación procedural.
Programa
Programa principal
p1 p2
Programación modular
5
Cuando los programas alcanzaron una extensión de miles de
líneas de código, con cientos de funciones, se requirió otra forma de organización.
La programación modular permite organizar el código en
diferentes módulos (que pueden contener una o más
funciones) cada uno dedicado a un fin específico, por ejemplo: Modulo de archivos.
Eso permite que cada módulo se programe de forma independiente
al resto facilitando el mantenimiento y funcionamiento del código
Programación Orientada a Objetos
6
En la programación orientada a objetos (OOP –
Object Oriented Programming), se tiene un
conjunto o red de objetos que interactúan entre
sí a través de mensajes y en donde cada uno de
los objetos es responsable de su propio estado.
Programa
Objeto 1
(datos)
Objeto 2
(datos)
Objeto 3
(datos)
Paradigma orientado a
objetos
Mucho del comportamiento y
pensamiento humano esta
caracterizado por secuencias
lógicas de acciones que
involucran
objetos
.
Desde la infancia hemos
aprendido a través de
nuestros sentidos a identificar
objetos:
¿Cuáles son sus características? ¿De qué están formados?
Cómo actúan o qué
comportamiento esperar de cualquier cosa en el mundo
Por ejemplo?
Paradigma orientado a
objetos
El paradigma orientado a objetos
nació en 1969, de la mano del Dr.
Kristin Nygaard.
Intentaba un programa que describiera
el movimiento de los barcos.
Se dió cuenta que era muy complejo
simular el mundo real con los métodos de programación existentes en el
momento; por ejemplo: simular las
mareas, los movimientos de los barcos y las formas de las líneas de las
costas.
Descubrió que era más fácil tratar de
adecuar el mundo real a la computadora, que al revés.
Primer lenguaje SIMULA 67
Paradigma orientado a objetos
9
Se organiza el software como una colección de
objetos discretos que
encapsulan estructuras de
datos y comportamiento.
Un sistema OO funciona mediante la colaboración
entre los objetos que se comunican entre sí.
El concepto se extiende a los métodos de análisis
y diseño
Se utilizan los
objetos del mundo real como base para
construir modelos
Los elementos que forman los sistemas del mundo
Paradigma orientado a objetos
10
Grady Booch define a la programación orientada a objetos
como:
Un método de implementación en el que los programas se
organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son todas miembros de una jerarquía de clases unidas mediante relaciones.
Wikipedia dice:
La programación orientada a objetos es un paradigma de
programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas de computadora. Está
Pensando en objetos: Los
legos
Cada pieza de lego (cubo,
llanta, motor, etc.) es un objeto pequeño que se une con otros objetos, con los
cuales encaja perfectamente, para crear objetos más
grandes (castillos,
automóviles, robots, aviones, ciudades...)
Así funciona
aproximadamente la POO: Uniendo elementos pequeños para construir otros más
Otro Ejemplo
Diferentes componentes se
utilizan para ensamblar una
computadora. El objetivo es
que todas las piezas trabajen
en forma conjunta
Internamente cada
componente puede ser muy
complicado y diseñado por
diferentes compañías. Pero lo
que nos interesa es como
interactúan entre sí.
¿Encajará la tarjeta de video
en la tarjeta madre?, tiene
entrada USB para el mouse?
Es decir, su interface.
¿Y qué con la POO?
13
La Programación Orientada a Objetos
funciona de la misma forma:
Utilizando técnicas de POO
El programa estarán formados por muchos
componentes independientes y diferentes
Componentes tienen una funcionalidad específica
y pueden comunicarse o dar respuesta a
Ejemplo Algoritmo en POO
14
Escribe un algoritmo para
encender un auto
(supón que te encuentras sentado en el asiento
del conductor)
Identificar los objetos
Llaves, switch, clutch, palanca de velocidades
Relacionarlos de acuerdo a su funcionalidad (algoritmo)
Paso 1: Poner la palanca de velocidades en neutral (punto muerto)
Paso 2: Colocar la llave dentro del switch Paso 3: Presionar el clutch al fondo
Paso 4: Girar la llave a la derecha hasta topar y soltar suavemente
Paso 5: Si el auto encendió. Fin del algoritmo
Actividad colaborativa
15
En equipos de 4, seleccionen alguno de los
siguientes problemas:
Preparar una hamburguesa
Pintar la fachada de una casa
Analicen el problema seleccionado e identifiquen
todos los objetos involucrados
Hagan una lista de estos objetos
Usando estos objetos y relacionándolos de
acuerdo a su funcionalidad, escriban paso a paso
un algoritmo para resolver el problema.
Contenido
16
Introducción
¿Qué es la Programación Orientada a Objetos?
Conceptos básicos
Abstracción
Jerarquía
Encapsulación
Objeto
Clase
Herencia
Programación OO
La programación
orientada a objetos
está basada en los
siguientes conceptos:
Abstracción
Encapsulación
Jerarquía
Clase
Objeto
Modularidad
Herencia
Polimorfismo
Se dice que si alguno
de estos elementos no
existe, entonces el
modelo no es orientado
a objetos.
Abstracción
18
Aún cuando existe una multitud de aves
diferentes, podemos reconocer
un AVE
en
cuanto la vemos, incluso aún cuando esa ave
en particular, no lo hayamos visto nunca.
¿Son todas aves?
19Definición
20
Yalú Galicia /Miguel Rodríguez (FCC/BUAP)
21
La abstracción se centra en las características
esenciales
de algún objeto, en relación a la perspectiva del observador
Ejercicio
22
En equipos de 4 realicen abstracción
para describir un objeto que traigan
con ustedes:
Celular, reloj, pluma, cuaderno, lap,
ect..
Escriban en una hoja lo siguiente:
Nombre del objeto
Jerarquía
23
La abstracción es algo bueno, pero
excepto en las aplicaciones más triviales,
puede haber muchas más
abstracciones
diferentes
de las que se pueden
comprender
simultáneamente
.
Frecuentemente
un
conjunto
de
Jerarquía
24
AVE
Voladora
No Voladora
Doméstica
Salvaje
Doméstica
Salvaje
Perico
Águila
Gallo
Pingüino
Generalización,
+abstracción
Especialización,
Encapsulación
25
Un principio fundamental de la POO es la
ocultación de la información
, que es el
proceso de ocultar dentro de sí mismo,
todos los “secretos” de un objeto, que no
contribuyen a sus características
esenciales.
Al encapsular los datos del objeto, se
maximiza la
reusabilidad
, se reduce la
Características:
26
Combina los datos y las operaciones.
Agrupa a variables y funciones
Mantiene detalles de los datos y
operaciones de los usuarios del
TDA(clase).
Permite Modularidad
Acceso controlado a los datos
Separa la implementación de la interface
27
La encapsulación esconde la complejidad
Por ejemplo, si aprendemos a manejar en un automóvil con motor diesel, podremos sin ningún problema manejar uno que funcione con
nafta. Es decir, los dos objetos se nos presentan de igual forma (interfaz), pero es indiscutible que los motores son muy distintos. •El objetivo es esconder los detalles de como funciona algo.
Ejemplo
Yalú Galicia /Miguel Rodríguez (FCC/BUAP)
28
El automóvil utilizará
otros mecanismos
para llevar a cabo su
interfaz, como, por
ejemplo, abrir
válvulas, mover
Las clases y los objetos están en todas
partes
29
Vehículo
Punto
Figura
Animal
(1,3) (2,2)
(2,1)
(5,2.5)
Objeto
30
Un objeto representa un elemento,
unidad o entidad individual e
identificable, ya sea
real o abstracta
,
con un papel bien definido en el
dominio del problema.
En términos generales, se define un
¿Qué es un objeto?
31
Informalmente, un objeto representa a
una entidad, ya sea física, conceptual o
software
•
Entidad física
•
Entidad conceptual
•
Entidad de Software
Lista Enlazada
Objeto
32
Un objeto es algo que tiene:
Estado
Un objeto tiene un estado
Yalú Galicia /Miguel Rodríguez (FCC/BUAP)
33
El estado de un objeto es una de las posibles condiciones
en que un objeto puede existir
El estado de un objeto normalmente cambia con el tiempo El estado de un objeto es usualmente implementado por un
conjunto de propiedades llamadas atributos, mas los enlaces que el objeto pueda tener con otros objetos
El estado lo establecen los valores de los atributos y
Un objeto tiene comportamiento
Yalú Galicia /Miguel Rodríguez (FCC/BUAP)
34
El comportamiento determina como un objeto actúa y
reacciona
El comportamiento define la manera en la que un objeto
responde a las peticiones de otros objetos
El comportamiento visible de un objeto se modela con un
conjunto de mensajes a los que el puede responder
Los mensajes se implementan como las operaciones del
objeto
Profesora Jazmin Secretaria Admo. Jimenez
Asignar a Profesora Jazmin
a dar Calculo Integral 332
Un objeto tiene identidad
35
Cada objeto tiene una identidad única, aún si
su estado en un momento dado, es idéntico al
de otros objetos
Profesora “Miriam
Pérez”
Enseña Matemáticas
Profesor “Josue
Mendoza”
Enseña Matemáticas
¿Qué son las clases?
36
Cuando se han identificado muchos
objetos en un dominio, decimos que una
clase es una abstracción que describe un
grupo de objetos que tienen:
propiedades en común (atributos)
comportamiento en común (operaciones)
relaciones comunes con otros objetos
(asociaciones)
Clases
37
En los lenguajes Orientados a Objetos, las clases
están compuestas por dos características básicas:
Atributos
Comportamientos.
Los atributos son las características individuales
que diferencian un objeto de otro y determinan su
apariencia
(ej. color, estilo, marca,etc.), su
estado
(ej. encendido o pagado) y otras
cualidades
.
El comportamiento de una clase determina la
manera en que un objeto de esa clase
opera o
reacciona
, esto es, su funcionabilidad (por
Ejemplo: la clase Auto
La clase AUTO es el modelo
abstracto del concepto de un Auto.
La descripción de la clase
Auto podría ser:
Tiene Puertas Tiene Llantas Tiene Motor Tiene Ventanas Tiene modelo Arranca
Frena
Se desplaza Usa gasolina Etc.
38
La clase AUTO
A partir de la clase AUTO se
pueden crear muchos objetos, o sea muchos autos, con
características diferentes (color, tamaño, diseño, material, etc.), pero que
pueden ser reconocidos como autos.
Por ejemplo: un Bochito, un
Audi, un BMW, un Chevy, el auto del vecino, tu auto, mi auto, etc.
Todos estos pueden ser
representadas como objetos diferentes y únicos de la clase AUTO.
39
Clase Auto Objeto
Clases v.s. Objetos
Yalú Galicia /Miguel Rodríguez (FCC/BUAP)
40
Una clase en una definición abstracta de un objeto
Define la estructura y comportamiento de cada objeto
en la clase
Sirve como una plantilla para crear objetos
Un objeto es una instancia concreta de una clase
(un ejemplar)
Los objetos pueden agruparse en clases
Estudiante
Clase
Ejemplo de una clase
41
Modelar la clase lavadora
LAVADORA
marca
modelo
capacidad
Programar
Poner ropa
Cerrar puerta
lavar
Atributos/caracteristicas
Visibilidad de atributos y operadores
43
El principio de ocultación sirve para
Ejercicio (pares)
44
Modelen las clases del ejemplo anterior
(aparato electrónico, Animal)
Nombre de la clase
Atributos
Herencia
La herencia representa una jerarquía
de abstracciones (clases).
Define una
relación entre clases
,
el la que una clase
comparte la
estructura de comportamiento
definida en una o más clases.
De forma simple, la herencia es el
proceso mediante el cual un objeto
adquiere las propiedades de
otro.
Herencia
46
Si alguien nos habla de un objeto en particular cuyo
nombre no conoce, instantáneamente empezará
diciendo
“es como...”
para describirlo y luego deberá
agregar las características particulares del objeto que
desea que identifiquemos.
Semánticamente, la herencia denota una relación “es
un”.
Por ejemplo, un oso
es un
tipo de mamífero, una casa
es un
tipo de bien inmueble.
Así la herencia implica una
jerarquía de
generalización/especialización
, en la que una
En el ejemplo del automóvil, podría decir “es
como un taxi, pero más chico”, o “es como una
moto, pero tiene cuatro ruedas”... Es decir que
define al automóvil a través de
objetos de
similares características
. Sin darnos cuenta
hacemos
clasificaciones;
ahora, generalizando,
nos damos cuenta de que todos son transportes.
En el paradigma de objetos esto se conoce como
herencia, y sirve para no tener que definir
comportamientos de forma repetitiva.
Herencia
M.C. Yalu Galicia (FCC/BUAP)
Herencia
Yalú Galicia /Miguel Rodríguez (FCC/BUAP)
49
Cada vez que se especializa una clase, esta
clase
hereda atributos y comportamientos
de su
superclase; pero además se añaden
nuevos comportamientos
o se
modifican
alguno de los ya heredados
Veamos que hereda la clase leo de sus clases
padre.
CLASE
QUE HEREDA
Vertebrados
Espina dorsal
Mamíferos
Se alimenta con leche materna
Carnívoros
Al ser adulto se alimenta de carne
Actividad colaborativa
50
En equipos de 3, identifiquen una clase que agrupe
todos estos objetos
Agrupen diversos objetos en distintas clases
Pensando en el concepto de herencia, construyan una
Polimorfismo
51
Polimorfismo es la habilidad que
adquieren los objetos de responder en
forma diferente
al
mismo mensaje.
Es decir, el mismo mensaje que se envía
Polimorfismo
52
Polimorfismo es la habilidad de esconder
Ejemplo de Polimorfismo
53
Pensemos en las FigurasGeometricas. Todas las
FigurasGeometricas tienen como característica el
poder calcular su área. Sin embargo, cada figura
puede realizar esta operación de forma distinta.
Area = l*l Area= pi*r2 Area=
b*a 2
Calcula
Area
Sobrecarga de métodos: area(a,b)
Otro ejemplo,
54
Tomemos Medios de Transportes:
barco, avión y auto. Si les enviamos
el mensaje
Desplázate
, cada uno de
estos objetos los hará a su manera
(comportamiento).
Vuele
Naveque
Ejercicio
55
¿Dar 3 ejemplos del mundo real, en
que veamos polimorfismo?