Академический Документы
Профессиональный Документы
Культура Документы
Capitulo 1
Este problema fue detectado alrededor de 1970 por David L. Parnas, quien
propuso la norma de ocultar información como solución. Su idea era encapsular cada
una de las variables globales del programa en un módulo junto con sus operaciones
asociadas, sólo mediante las cuales se podía tener acceso a estas variables. El resto
de los módulos podrían acceder a las variables sólo de forma indirecta mediante las
operaciones diseñadas a tal efecto. En la actualidad denominamos objetos a este tipo
de módulos.
El lenguaje fue utilizado sobre todo en Europa y no tuvo mucho impacto comercial,
sin embargo los conceptos que se definieron en él, se volvieron sumamente
importantes para el futuro del desarrollo de software.
Wirth, creador del Pascal, nunca quedó satisfecho con este lenguaje. En su
constante análisis de los hábitos de programación encontraba que todavía había
muchas cosas que mejorar. Una década después del Pascal publicó otro lenguaje
llamado Modula2 en el que presentaban algunas de sus ideas más recientes. Los
módulos de Modula2 pretendían representar objetos o clases. Dentro de un módulo se
definían variables que representaban el estado del objeto y se definían procedimientos
que describían su comportamiento. Las variables y los procedimientos de un módulo
podían ser de uso público o privado, exclusivos de la clase, según lo decidiera el
creador del módulo. Con todo esto se mejoraba notoriamente lo instituido por el Pascal
donde el concepto de procedimientos o funciones privadas no existía y se daba un
paso importante hacia la programación de clases o programación orientada a objetos.
Los puntos importantes de este lenguaje fueron, por un lado, adoptar el concepto
de objeto y clase como núcleo del lenguaje y la programación interactiva, incorporando
las ideas ya conocidas de lenguajes funcionales. Es decir que se tuviese un lenguaje
interpretado y no compilado.
Ambos lenguajes tuvieron importancia entre 1985 y hasta la primera mitad de los
90’s.
En 1995 apareció JAVA, el más reciente lenguaje OO, desarrollado por la empresa
SUN Microsystems, que hereda conceptos de C++, pero los simplifica y evita la
herencia múltiple. En su lugar se introduce el término de interfaz, y la herencia múltiple
de interfases. Obtiene una rápida aceptación gracias a los applets, que son programas
en JAVA insertados en páginas WEB dentro del código HTML.
Hay que ser muy cuidadosos en la creación de los objetos, ya que de ello
dependerá el éxito de nuestro proyecto. Un error en estas primeras definiciones
podría resultar catastrófico. Precisamente el secreto de esta técnica está en la
correcta definición inicial de los objetos.
El modelo OO
objeto
clase
herencia
envío de mensajes
Los primeros tres conceptos se refieren a la parte estructural o estática del modelo
y el cuarto, que corresponde a mensajes, se refiere a la parte del comportamiento
dinámico.
Programas ejemplo. Ligaduras Dinámicas.
Definiciones básicas
Por otro lado también se puede ver una clase como un molde, esquema o un
patrón que define la forma de sus objetos. O bien, como la estructura estática que
define:
a) el esquema de estados, y
b) el comportamiento que van a tener los objetos
Una subclase puede a su vez comportarse como una superclase y heredar a otras
clases, creando de esta manera la jerarquía de herencia. Cuando una clase hereda de
más de una superclase se conoce como herencia múltiple.
freír bifes
preparar salsa con cebolla, perejil y pimientos verdes
juntar bifes con la salsa
Freír bifes y juntar bifes con la salsa son actividades que ya se saben realizar
(atómicas).
Sin embargo, el caso de preparar salsa con pimientos verdes aún podemos
aclararlo más:
Si se deseara ahora preparar bife criollo con salsa de pimiento rojo, se tendría que
buscar cuales actividades hay que modificar. En este caso sería la parte de los datos y
preparar salsa verde, rehogar cebolla pimiento verde y perejil, en el caso de nuestro
ejemplo.
Descomposición OO
Todos estos van a ser nuestros objetos que internamente van a integrar datos y
operaciones, que podemos asociarlos de manera lógica a cada uno de sus conceptos.
Es importante notar que los datos se encuentran implícitos formando parte de los
objetos.
Si en este modelo se desea hacer el Bife Criollo con Salsa de Pimientos Rojos,
solo bastaría sustituir el objeto Salsa de Pimientos Verdes por el objeto Salsa de
Pimientos Rojos, que se preparará, enviando mensajes a Ingredientes, Licuadora y
Sartén, sin modificar nada más.