2. INTRODUCCION
• Hace como 50 años, solamente una
computadora IBM7094 daba servicio a toda
la Universidad de Chicago. Ahora cualquier
persona puede tener más poder de cómputo
en su laptop que ellos en ese momento.
• Allá por los 70´s era una noticia cuando
alguien conectaba una computadora con
otra, simplemente al otro lado de la calle.
Ahora es común usar emails
transcontinentales.
Mtra. Karla Silva R 2
3. • Al principio las capacidades de hardware fueron
aumentando muy rápido, abaratando los costos.
• Por el contrario, los desarrolladores de software
seguían haciendo las mismas cosas en los
mismos lenguajes.
• Esto hizo que los costos de HW estuvieran muy
por debajo de los costos de SW.
• Los ingenieros de HW habían encontrado cómo
reusar los esfuerzos de otras personas. Cosa que
no hacían los ingenieros de SW, pues sus
programas eran únicos. Lo que resultaba muy
caro y frecuentemente de poca calidad.
Mtra. Karla Silva R 3
4. • Antes de la revolución industrial, la industria de
las armas de fuego apenas era realmente una
industria; se trataba más bien de una coalición
dispersa de artesanos individuales. Cada arma
de fuego era construida por un armero
individual, que construía cada una de las
partes a partir de materias primas. Las armas
de fuego así producidas eran muy caras, y
casa una de ellas era el producto de la
inspiración personal de un cierto armero.
• La revolución se produjo cuano Eli Whitney
recibió un gran contrato de fabricación para
hacer mosquetes para el gobierno.
Mtra. Karla Silva R 4
5. • La importancia de la POO es comparable a la que
tuvo la innovación de las piezas intercambiables
producida por Whitney, y por razones que son, en
gran parte, las mismas.
• Las dos redefinen la unidad de modularidad, de tal
manera que los trabajadores producen
subcomponentes en lugar de soluciones
completas. Los subcomponentes están
controlados mediante estándares y se pueden
intercambiar entre productos distintos. Los
programadores ya no construyen programas
completos a partir de materias primas, que son las
sentencias y expresiones desnudas de un lenguaje
de programación en lugar de hacer esto, producen
componentes SW reutilizables, ensamblando los
componentes de otros programadores.
Mtra. Karla Silva R 5
6. POO VS LOO
• La programación orientada a objetos es una
“filosofía”, un modelo de programación, con su
teoría y su metodología, que conviene conocer y
estudiar antes de nada.
• Un lenguaje orientado a objetos es un lenguaje de
programación que permite el diseño de
aplicaciones orientadas a objetos. Dicho esto, lo
normal es que toda persona que vaya a desarrollar
aplicaciones orientadas a objetos aprenda primero
la “filosofía” (o adquiera la forma de pensar) y
después el lenguaje, porque “filosofía” sólo hay
una y lenguajes muchos.
Mtra. Karla Silva R 6
7. UNA FORMA NUEVA DE PENSAR
• Es muy importante destacar que cuando
hacemos referencia a la programación
orientada a objetos no estamos hablando de
unas cuantas características nuevas
añadidas a un lenguaje de programación.
• Estamos hablando de una nueva forma de
pensar acerca del proceso de
descomposición de problemas y de
desarrollo de soluciones de programación.
Mtra. Karla Silva R 7
8. • La programación orientada a objetos surge en la
historia como un intento para dominar la
complejidad que, de forma innata, posee el
software.
• Tradicionalmente, la forma de enfrentarse a esta
complejidad ha sido empleando lo que llamamos
programación estructurada, que consiste en
descomponer el problema objeto de resolución en
subproblemas y más subproblemas hasta llegar a
acciones muy simples y fáciles de codificar.
Mtra. Karla Silva R 8
9. • Se trata de descomponer el problema en
acciones, en verbos. En el ejemplo de un
programa que resuelva ecuaciones de
segundo grado, descomponíamos el
problema en las siguientes acciones:
primero, pedir el valor de los coeficientes
a, b y c; después, calcular el valor del
discriminante; y por último, en función del
signo del discriminante, calcular ninguna,
una o dos raíces.
Mtra. Karla Silva R 9
10. • La programación orientada a objetos es
otra forma de descomponer problemas.
Este nuevo método de descomposición es
la descomposición en objetos; vamos a
fijarnos no en lo que hay que hacer en el
problema, sino en cuál es el escenario
real del mismo, y vamos a intentar simular
ese escenario en nuestro programa.
Mtra. Karla Silva R 10
11. • En el caso de los lenguajes orientados a
objetos, como es el caso de C++ y Java,
el elemento básico no es la función, sino
un ente denominado precisamente objeto.
• Un objeto es la representación en un
programa de un concepto, y contiene toda
la información necesaria para abstraerlo:
datos que describen sus atributos y
operaciones que pueden realizarse sobre
los mismos.
Mtra. Karla Silva R 11
12. • La programación orientada a objetos es
una nueva forma de pensar, una manera
distinta de enfocar los problemas. Ahí
radica la dificultad de aprender un
lenguaje totalmente orientado a objetos,
como es Java, sin conocer previamente
los pilares de la programación orientada a
objetos.
Mtra. Karla Silva R 12
13. Si nos detenemos a pensar sobre cómo se
nos plantea un problema cualquiera en la
realidad podremos ver que lo que hay en la
realidad son entidades (otros nombres que
podríamos usar para describir lo que aquí
llamo entidades son “agentes” u “objetos”).
Mtra. Karla Silva R 13
14. Estas entidades poseen un conjunto de propiedades o
atributos, y un conjunto de métodos mediante los cuales
muestran su comportamiento. Y no sólo eso, también
podremos descubrir, a poco que nos fijemos, todo un
conjunto de interrelaciones entre las entidades, guiadas
por el intercambio de mensajes; las entidades del
problema responden a estos mensajes mediante la
ejecución de ciertas acciones.
Mtra. Karla Silva R 14