Introducción a la programación orientada a objetos
Transcript of Introducción a la programación orientada a objetos
EJEMPLO PARA COMPRENDER LOS OBJETOS
Piensa en los objetos que te rodean, ¿de qué están
hechos? ¿qué forma tienen? ¿para qué sirven?
Veamos un ejemplo de la vida cotidiana.
2
Mtl. L
ou
rdes C
ah
uic
h -P
OO
EJEMPLO PARA COMPRENDER LOS OBJETOS
Imagina que quieres ver una película o evento
deportivo y quieres prepararte una botana.
Se te antojan unos nachos, nada complicado, sólo
tienes que poner totopos en un plato, algunos
frijoles, queso y jalapeños, y ponerlo en el
microondas a que se cocine unos cinco minutos.
3
Mtl. L
ou
rdes C
ah
uic
h -P
OO
EJEMPLO PARA COMPRENDER LOS OBJETOS
Para usar el horno: abres la puerta, pones el plato
de nachos adentro, y oprimes algunos botones al
frente y oprimes el botón de inicio. Después de
unos minutos, suena el "pitido" que te dice que
están listos.
Si haces algo mal, el horno dará pitidos y no
comenzará. A veces puede mostrar un mensaje de
error en su pequeño display.
4
Mtl. L
ou
rdes C
ah
uic
h -P
OO
EJEMPLO PARA COMPRENDER LOS OBJETOS
Esto no suena muy sofisticado, a menos que nos
pongamos a pensar todas las cosas que no
sabemos sobre el funcionamiento de un horno de
microondas
5
Mtl. L
ou
rdes C
ah
uic
h -P
OO
NOTEMOS QUE:
1. Sólo nos limitamos a usar el panel frontal del
horno.
2. No reescribimos o cambiamos nada dentro del
microondas para que funcione.
3. No pensamos en qué podría estar sucediendo
dentro del horno para usarlo.
6
Mtl. L
ou
rdes C
ah
uic
h -P
OO
Esto no es nada extraño, los seres humanos
tendemos a pensar en sólo unas pocas cosas a la
vez.
Tendemos a reducir el número de cosas con las
que tenemos que lidiar al abstraernos de los
pequeños detalles.
Esto nos permite trabajar al nivel de detalle
apropiado para que problema que tenemos que
resolver.
7
Mtl. L
ou
rdes C
ah
uic
h -P
OO
Cuando preparamos nuestros nachos, vemos a
nuestro horno como una caja negra.
No nos preocupamos por lo que sucede dentro de
la caja, a menos que ésta se rompa.
Pero siempre que funcione el horno, nos limitamos
a interactuar con lo que éste expone al mundo.
8
Mtl. L
ou
rdes C
ah
uic
h -P
OO
No hay nada que yo pueda hacer (siguiendo las
instrucciones) que cause que el horno entre en un
estado de inconsistencia y deje de funcionar,
vuelva a mis nachos una bola negra en llamas, o
peor, que se queme e incendie la casa.
9
Mtl. L
ou
rdes C
ah
uic
h -P
OO
ALGORITMO DE LOS NACHOS
Si hiciéramos un seudocódigo para preparar
nachos usando la programación funcional /
estructurada ¿qué tendríamos que hacer?
"Abrir una lata de frijoles, rayar un poco de queso,
cortar los jalapeños", etc.
Para la parte en la que calentamos los nachos,
escribiremos algo similar a "cocinar en horno hasta
que el queso se derrita".
10
Mtl. L
ou
rdes C
ah
uic
h -P
OO
NACHOS ESTRUCTURADOS
El seudocódigo incluiría la construcción de un
horno específico para cocinar nachos.
Parecería más fácil diseñar y construir un horno de
microondas especialmente para este problema de
preparar nachos, en lugar de construir un objeto
horno más genérico, por separado.
11
Mtl. L
ou
rdes C
ah
uic
h -P
OO
DESVENTAJAS
Sin embargo, esta aproximación funcional tiene
varios problemas:
Demasiado complejo. No quieres mezclar los detalles
de la construcción del horno con los detalles de la
construcción de los nachos.
12
Mtl. L
ou
rdes C
ah
uic
h -P
OO
DESVENTAJAS
No es flexible. Si necesitas reemplazar el horno de
microondas con algún otro tipo de horno, deberías
poder hacerlo siempre y cuando la interfaz del nuevo
horno sea igual a la del horno anterior
No es reutilizable. Los hornos se usan para realizar
diferentes platillos. No queremos crear un nuevo horno
cada vez que nos encontremos con una nueva receta
13
Mtl. L
ou
rdes C
ah
uic
h -P
OO
NACHOS ORIENTADOS A OBJETOS
En cambio, si hiciéramos un seudocódigo usando
la programación orientada a objetos, primero
tendríamos que identificar los objetos que
interactúan y cómo interactúan entre sí.
Después de que codifiquemos y probemos
exitosamente los objetos que necesitamos
podemos ir al siguiente nivel de abstracción.
14
Mtl. L
ou
rdes C
ah
uic
h -P
OO
NACHOS ORIENTADOS A OBJETOS
Ahora podemos comenzar a pensar en el nivel para
preparar nachos, en lugar del nivel de hacer un
microondas.
En este punto ya podemos usar el algoritmo que
hicimos al principio, directamente en el código del
programa
15
Mtl. L
ou
rdes C
ah
uic
h -P
OO
EN UNA APROXIMACIÓN PARA PROGRAMACIÓN
ORIENTADA A OBJETOS:
El programador identifica las clases necesarias
para resolver el problema.
El programador crea clases auto-contenidas que
cubran los requerimientos del problema y no se
preocupe de los detalles de toda la aplicación.
El programador escribe la aplicación usando las
clases que creó sin pensar en cómo funcionan
éstas internamente.
16
Mtl. L
ou
rdes C
ah
uic
h -P
OO
TERMINOLOGÍA POO
Un objeto es una simplificación de algo que
queremos usar en nuestro programa
Una clase es una plantilla que se usa para
describir un objeto que observamos en el mundo
real.
17
Mtl. L
ou
rdes C
ah
uic
h -P
OO
TERMINOLOGÍA POO
Las clases tienen 2 componentes básicos:
1. Propiedades – que describen al objeto
2. Métodos – acciones que deseamos asociar con el
objeto
18
Mtl. L
ou
rdes C
ah
uic
h -P
OO
PROPIEDADES
La información que queremos guardar y asociar
con el objeto. Al cambiar los valores de las
propiedades se cambia el estado del objeto.
Las propiedades se identifican como sustantivos
19
Mtl. L
ou
rdes C
ah
uic
h -P
OO
MÉTODOS
Determinan el comportamiento de un objeto;
normalmente los métodos de una clase actúan
sobre las propiedades.
Se identifican con verbos, denotando algún tipo de
acción.
20
Mtl. L
ou
rdes C
ah
uic
h -P
OO