manual de smalltalk

Click here to load reader

Post on 22-Jun-2015

5.950 views

Category:

Documents

16 download

Embed Size (px)

TRANSCRIPT

Manual de SmalltalkDesarrollo y ejemplificacin de los conceptos del Paradigma de Objetos

Paradigmas de Programacin Facultad Regional Buenos Aires Universidad Tecnolgica Nacional

Ing. Lucas Spigariol

Manual de Smalltalk - Ing. Lucas Spigariol

ContenidoCaptulo 1: Un Vistazo al Paradigma de ObjetosQu es la Programacin Orientada a Objetos? Conceptos centrales del Paradigma de Objetos Smalltalk

Captulo 2: Objetos, Mensajes y ClasesObjetos y Clases Envo de Mensajes Mtodos de clase Self

Captulo 3: Instrucciones SmalltalkInstrucciones Asignacin Devolucin de Valores Comentarios Variables Temporales Estructura Bsica de un Mtodo Bloques Mensajes en Cascada

Captulo 4: Operaciones con DatosLiterales Operaciones Aritmticas Nil True y False Comparaciones Lgicas Lgica Condicional Iteraciones

Captulo 5: HerenciaQu es la herencia? Herencia de Mtodos Herencia de Variables Variables de Clase Clases Abstractas Super vs. Self

Captulo 6: ColeccionesQu es una Coleccin? Colecciones Comunes Mensajes a las Colecciones Colecciones Especiales

Glosario

Pgina 2

Manual de Smalltalk - Ing. Lucas Spigariol

Captulo 1: Un Vistazo al Paradigma de ObjetosQu es la Programacin Orientada a Objetos?La Programacin Orientada a Objetos (POO) es diferente de los lenguajes de programacin procedurales (C, Cobol, Pascal, etc.). Todo en POO est conceptualizado como "objetos" (ver Abstraccin de datos). La POO, definida en su ms puro sentido, es implementada por el envo de mensajes a los objetos. Para entender este concepto, primero debemos conocer qu es un objeto.

Qu es un Objeto?Un objeto puede ser considerado una "cosa" que puede realizar un conjunto de actividades. El conjunto de actividades que un objeto puede realizar define el comportamiento del objeto. Por ejemplo, un objeto "EstadoAlumno" puede informarle su promedio, ao de escuela, etc.; o puede agregar una lista de las materias cursadas. Un objeto "Alumno" puede informarle su nombre o su direccin. La interfase del objeto consiste en un conjunto de comandos, cada comando desarrolla una accin especfica. Un objeto puede pedirle a otro objeto que realice una accin, envindole un mensaje. El objeto que enva el mensaje es designado emisor y el objeto que recibe el mensaje es designado receptor.

Pgina 3

Manual de Smalltalk - Ing. Lucas Spigariol

El control le es dado al objeto receptor hasta que complete la accin; luego el control regresa al objeto emisor. Por Ejemplo, un objeto Escuela le pide al objeto Alumno su nombre envindole un mensaje preguntndole por su nombre. El objeto receptor Alumno devuelve su nombre al objeto emisor.

Un mensaje tambin puede contener informacin que los objetos emisores necesitan pasar al objeto receptor, a esta informacin se la llama argumento de un mensaje. Un objeto receptor siempre devuelve un valor al objeto emisor. Este valor devuelto puede ser, o no, til al objeto emisor. Por ejemplo, el objeto Escuela ahora desea cambiar el nombre del alumno. Esto lo hace enviando al objeto Alumno un mensaje para cambiar su nombre a uno nuevo. El nuevo nombre es pasado como un argumento en el mensaje. En este caso, al objeto Escuela no le interesa el valor que devuelva el mensaje.

Pgina 4

Manual de Smalltalk - Ing. Lucas Spigariol

Operacin SecuencialEs muy comn que un mensaje provoque el envo de otros mensajes, ya sea al mismo u otros objetos, para completar su tarea. A esto se lo llama operacin secuencial. El control no le ser devuelto al objeto emisor original hasta que todos los otros mensajes hayan sido completados. Por ejemplo, el siguiente diagrama, el Objeto A enva un mensaje al Objeto B. Para que el Objeto B procese este mensaje, enva otro mensaje al Objeto C. Asimismo el Objeto C enva otro mensaje al Objeto D. El Objeto D devuelve el control al Objeto C, asimismo el Objeto C devuelve el control al Objeto B que, a su vez, lo devuelve al Objeto A. El control no es devuelto al Objeto A hasta que todos los otros mensajes se han completado.

MtodoCmo los objetos receptores interpretan los mensajes de los objetos emisores? Cmo se procesan los mensajes? Cada mensaje posee un cdigo asociado a l. Cuando un objeto recibe un mensaje, su cdigo es ejecutado. En otras palabras, estos mensajes determinan el comportamiento de un objeto y el cdigo determina cmo, el objeto, lleva a cabo cada mensaje. El cdigo que est asociado a cada mensaje se llama mtodo. El nombre del mensaje, tambin suele llamarse el nombre del mtodo debido a su asociacin con el mtodo. Cuando un objeto recibe un mensaje, determina qu mtodo es el solicitado y pasa el control al mtodo. Un objeto tiene tantos mtodos como acciones se desea que tenga. Observe el siguiente diagrama, nombre, nombre:, direccion y nombre:direccion: son nombres de mtodos para el objeto Alumno. Cuando el objeto Alumno recibe el mensaje nombre, el mensaje nombre pasa el control al mtodo nombre definido en Alumno.

Pgina 5

Manual de Smalltalk - Ing. Lucas Spigariol

Los mtodos que operan sobre objetos especficos son los mtodos de instancias, y los mensajes que invocan mtodos de instancia se llaman mensajes de instancia. Los mtodos son similares a las subrutinas, procedimientos o funciones que se encuentran en los lenguajes procedurales (C, Pascal). Por ejemplo, un nombre de mtodo equivale al nombre de una subrutina, y el cdigo del mtodo equivale al cdigo de la subrutina. El envo de mensajes a objetos es similar al llamado de subrutinas.

Datos de un ObjetoCada objeto necesita guardar la informacin sobre cmo realizar su comportamiento definido. Algunos objetos tambin contienen variables que soportan su comportamiento. Estas variables son llamadas variables de instancia. Slo el mtodo de instancia de un objeto puede referirse y modificar los valores guardados en las variables de instancia. Los mtodos de instancia de los objetos no pueden referirse a los datos de otros objetos. Un objeto slo puede acceder a los datos de otro objeto envindole mensajes. A esto se lo llama encapsulamiento y asegura que el proceso para obtener los datos de un objeto sea seguro. Observe el siguiente diagrama, las variables de instancia variableUno hasta variableX slo pueden ser accedidas por el emisor a travs de los mtodos de instancia mtodoUno hasta mtodoN. El emisor no puede referirse a las variables, directamente, por s mismo.

Pgina 6

Manual de Smalltalk - Ing. Lucas Spigariol

A diferencia de la programacin procedural, donde las reas de datos de uso comn son utilizadas para compartir informacin, la programacin orientada a objetos no aprueba el acceso directo a los datos de uso comn (exceptuando el uso de las variables globales) por otros programas. Slo el objeto que "posee" los datos puede cambiar su contenido. Otros objetos pueden ver o cambiar estos datos enviando mensajes al "dueo". Los nombres de variables de instancia pueden ser idnticos a los nombres de los mtodos que estn asociados a ellos. Por ejemplo, el objeto Alumno tiene los mtodos nombre, direccin, y carrera as como tambin las variables de instancia nombre, direccin, y carrera. Smalltalk distingue entre los identificadores de variables y los identificadores de mtodos a travs de la posicin que ocupan en la expresin.

Conceptos centrales del Paradigma de ObjetosUn lenguaje de computacin est orientado a los objetos si soporta las cuatro propiedades especficas de los objetos, llamadas abstraccin, polimorfismo, herencia, y encapsulamiento. La correcta aplicacin de estos conceptos permite obtener un alto nivel de reutilizacin de las soluciones. Una de las caractersticas ms importantes de la programacin orientada a objetos es la habilidad para modificar las soluciones existentes para resolver nuevos problemas. Si un tipo particular de problema ha sido resuelto utilizando la POO, un problema similar, aunque diferente, puede ser resuelto haciendo algunos cambios en el protocolo del objeto-mensaje ya existente. La mayora del tiempo, esto requiere agregar nuevos mensajes. En otros casos puede requerir agregar nuevos objetos y nuevos mensajes a los que responden los nuevos objetos.Pgina 7

Manual de Smalltalk - Ing. Lucas Spigariol

La reutilizacin es, probablemente, la ms importante caracterstica del paradigma orientado de Objetos. Si bien los lenguajes procedurales tambin pueden ser reutilizados, los lenguajes de Objetos hacen la reutilizacin no slo mucho ms fcil, sino que la consideran como intrnseca de la configuracin del lenguaje.

Abstraccin de DatosLa abstraccin de datos permite diferenciar entre el comportamiento de un objeto (la accin que es capaz de realizar) y cmo lleva a cabo este comportamiento. Esta abstraccin de datos se implementa a travs de una interfase de objeto. A travs de esta interfase un objeto emisor se comunica con otro objeto receptor, pero el objeto emisor desconoce la forma en que se lleva a cabo la accin solicitada (mensaje).

Encapsulamiento

En la programacin orientada a objeto, los objetos interactan entre ellos a travs de los mensajes. Lo nico que un objeto conoce de otro es su interfase. Los datos y lgica de un objeto estn ocultos a los otros objetos. O sea, la interfase encapsula los datos y cdigo de un objeto. Esto permite al programador separar la implementacin de un objeto, de su comportamiento. Esta separacin crea una "caja negra" en donde el usuario est alejado de los cambios de la implementacin. Mientras la interfase permanezca igual, cualquier cambio interno a la implementacin es transparente al usuario. Por ejemplo, si el mensaje nombre es enviado al objeto Alumno, al usuario no le importa cmo el programador implement el cdigo que maneja este mensaje. El programador puede cambiar la implementacin en cualquier momento, pero el mensaje nombre an debera trabajar ya que la interfase es la misma.Pgina 8

Manual de S