Sie sind auf Seite 1von 66

Programacio n

Orientada a
Objetos
UML-Algoritmos-Smalltalk
Lev Astul Castro Ordez
Junio de 2013
ndice
Introduccin .................................................................................... 1
Lenguaje unificado de modelaje (UML)......................................... 1
Elementos grficos ................................................................................ 2
Programacin orientada a objetos ......................................................... 3
Diagramas ............................................................................................. 5
Flujograma: Lenguaje algortmico .................................................. 1
El ejecutor de algoritmos en flujograma ............................................... 2
El lenguaje flujograma .......................................................................... 3
Smbolos grficos ............................................................................. 3
Reglas para construir algoritmos ...................................................... 4
Sintaxis de las sentencias .................................................................. 6
Ejemplos ........................................................................................... 8
La ejecucin de un algoritmo .......................................................... 11
Una distribucin de Smalltalk: Squeak ........................................... 0
Squeak ................................................................................................... 1
Instalacin ......................................................................................... 1
Ejecutar y trabajar con Squeak ......................................................... 2
El mundo Squeak .............................................................................. 4
Modo experto y modo inicial .......... Error! Marcador no definido.
Herramientas de programacin ......................................................... 5
El lenguaje Smalltalk ...................................................................... 0
Conceptos.............................................................................................. 2
1. Objeto........................................................................................ 2
2. Mensajes ................................................................................... 2
3. Interfaz ...................................................................................... 3
4. Encapsulacin ........................................................................... 3
5. Herencia .................................................................................... 3
Programando con Smalltalk .................................................................. 3
Clases ................................................................................................ 3
Diseando una clase nueva ........................................................... 4

Protocolo de la clase y protocolo de la instancia .......................... 4
La descripcin de una clase .......................................................... 4
Objetos Literales ............................................................................... 5
Nmeros ........................................................................................ 5
1. Nmeros enteros ............................................................... 5
2. Coma flotante .................................................................... 5
3. Fracciones ......................................................................... 5
4. Decimales .......................................................................... 5
Smbolos ....................................................................................... 6
Caracteres ...................................................................................... 6
Cadenas ......................................................................................... 6
Arreglos ........................................................................................ 6
Mensaje ............................................................................................. 7
Unarios .......................................................................................... 7
Binarios ......................................................................................... 8
Keyword (clave)............................................................................ 8
Mensajes en cascada ..................................................................... 9
Seudo variables ............................................................................... 10
self ............................................................................................... 10
nil ................................................................................................ 10
Expresiones ..................................................................................... 10
Operadores Numricos................................................................ 10
Operadores Lgicos .................................................................... 11
Operadores Relacionales ............................................................. 12
Operador de Asignacin ............................................................. 12
Sentencias ....................................................................................... 13
Sentencia de asignacin .............................................................. 13
Sentencias de decisin ................................................................ 13
Sentencias repetitivas .................................................................. 14
Relacin diseodesarrollo (algoritmoprograma) ........................ 0
Bibliografa ..................................................................................... 0
Sitios web ........................................................................................ 0

ntroduccio n


OBJETIVOS DE APRENDIZAJE
1. Conocer los conceptos de
programa y programacin.
2. Conocer el proceso general de
programacin.
CONTENIDOS
1. Concepto de programacin

Debido a que la palabra programar es de uso frecuente tanto en la vida
comn y corriente como en la vida acadmica y profesional, es muy
probable que el lector haya utilizado esta palabra. En la siguiente
actividad se le pide que mencione algunos contextos en que ha utilizado
esta palabra:
Actividad 1 La palabra programar
Escriba tres situaciones en las que ha utilizado la palabra programar a lo largo de su
vida.
1.

2.

3.


Tambin, es muy probable que, por el uso, el lector tenga una idea de lo
que es programar, por ello se le solicita escribir un concepto
Actividad 2 Programar significa:
Para cada una de las situaciones que list en la actividad anterior, escriba el significado
con que utiliz la palabra programacin:
1.


2.


3.



El diccionario de la Real Academia Espaola presenta varias acepciones
para la palabra programar, entre ellas:
Formar programas, previa declaracin de lo que se piensa
hacer y anuncio de las partes de que se ha de componer un acto
o espectculo o una serie de ellos
Preparar ciertas mquinas por anticipado para que empiecen a
funcionar en el momento previsto
Elaborar programas para la resolucin de problemas mediante
ordenadores
Y la palabra programacin la define como accin y efecto de
programar. Esta breve referencia al significado de estas palabras nos da
una idea de lo que trata este material; sin embargo, como suele suceder
con muchos trminos tomados del ambiente cotidiano, es necesario
precisarlo ms.



Actividad 3
Busque en Internet o en algn libro la definicin de programacin en el contexto
de la Ciencias de la Computacin. Se parece su concepto con el que acaba de
encontrar? Comente.











Ahora se presenta una definicin tomada de un libro sobre lenguajes de
programacin y una derivacin hecha por el autor
Definicin 1 Programa y programar
Programa Es la especificacin de una tarea de computadora (Sethi, 1991)
Programar es escribir la especificacin de la tarea de computadora.

Segn lo anterior, para entender qu es un programa y qu es programar
es necesario entender que es especificacin y que es una computadora.
En primer lugar especificar es describir algo con detalle y sin
ambigedades. En segundo lugar una computadora es un objeto (fsico o
ideal) que es capaz de realizar tareas que le han sido especificadas en un
lenguaje apropiado.
Una computadora puede ser un objeto fsico o ideal (imaginario), pero en
ambos casos estn compuestos por los mismos elementos fundamentales:
Procesador
Dispositivo de entrada
Dispositivo de salida
Unidad de almacenamiento
Tambin, la computadora se conoce como el ejecutor del programa,
porque es ella quien realiza o ejecuta lo que se especifica en el programa.
De hecho, cada cosa que se especifica en el programa afecta al menos a
uno de los elementos de la computadora.
Ahora bien quin crea el programa o especificacin? Cmo lo crea?
Para qu lo crea? Por qu lo crea? Estas y otras preguntas sern
contestadas pronto, sin embargo se pide al lector que trate de contestarlas
ya sea a partir de sus conocimientos o investigando con otras personas,
en internet o libros.
Suele suceder que
algunas palabras tienen
significado similar en su
uso cotidiano con su uso
a nivel acadmico o
profesional, pero en
estos dos ltimos
aparece de forma ms
refinada y casi siempre
sin ambigedades; la
palabra programacin
Suele suceder que
algunas palabras tienen
significado similar en su
uso cotidiano con su uso
a nivel acadmico o
profesional, pero en
estos dos ltimos
aparece de forma ms
refinada y casi siempre
sin ambigedades; la
palabra programacin
es una de ellas

Actividad 3
Conteste las siguientes preguntas:
1. Quin crea el programa o especificacin?

2. Cmo lo crea?

3. Para qu lo crearlo?

4. Por qu lo crea?


Para comprender mejor la tarea que llamamos programar se presenta la
siguiente situacin general acompaada
de la figura de la derecha en la cual se
han enumerado algunos elementos, los
cuales sern citados en la descripcin
siguiente.
Considere un ambiente, al cual
llamaremos mundo real (por ejemplo:
nuestro mundo, nuestra escuela, nuestro
trabajo, nuestra casa, nuestra
universidad, nuestra oficina, etc.). En
este ambiente (8) existen objetos,
ocurren hechos, se establecen relaciones,
se ejecutan procesos, se presentan
obstculos, distinguimos caractersticas
constantes o variables, etc.
Suponga ahora que reconocemos cuatro
tipos de situaciones (1): problemas,
tareas rutinarias, tareas peligrosas, tareas
laboriosas. De hecho, el ser humano se
ha enfrentado a este tipo de situaciones
desde los comienzos de su existencia, y
uno de sus anhelos ha sido liberarse de
ellos. En ocasiones lo ha logrado
teniendo a alguien o algo que lo haga
por l (desafortunadamente esto ha
implicado la esclavitud en algunas ocasiones). A este alguien o algo que
recin mencionamos podramos darles un nombre: ejecutores (6); pero
debe existir alguien o algo que indique a los ejecutores qu hacer;
podramos llamar a estos programadores (2) y a la lista de cosas que
debe hacer el ejecutor podramos llamarle instrucciones (4). En
ocasiones algunos conjuntos de instrucciones tienen ciertas
caractersticas que las diferencian de otros conjuntos de instrucciones y

las llamamos algoritmos o programas (4). Estos algoritmos o programas
son creados en un ambiente artificial (9) tambin llamado mundo
abstracto. Todo lo que all se especifica debe hacerse en un lenguaje de
especificacin llamado lenguaje algortmico o lenguaje de
programacin. Entonces, la tarea del programador es, mediante un
proceso de abstraccin (3), construir un modelo en el mundo abstracto
que realice la tarea, simule una situacin o resuelva un problema
identificado en un mundo real. Este modelo debe ser llevado a un sistema
(6), el cual consta de ejecutor y algoritmo (hardware y software). Una
vez implantado este sistema en el mundo real (5), el usuario (7) puede
utilizarlo para realizar la tarea o resolver el problema.
Este esquema general recin explicado servir de base para orientar los
conocimientos y habilidades que el lector desarrollar a lo largo de este
material. Es de suma importancia que el lector identifique en que mundo
est en cada momento: real o abstracto; pues esto implicar una mejor
comprensin de su tarea como programador.
En este escrito se tratarn tres lenguajes: Lenguaje Unificado de
Modelado (UML), Lenguaje Algortmico de Flujograma (LAF) y el
Lenguaje de Programacin Smalltalk (LAS). Tambin se abordarn un
paradigma de programacin principal: Programacin Orientada a
Objetos; y tres paradigmas secundarios: Programacin Imperativa,
Programacin Modular y Programacin Estructurada.

Lenguaje
unificado de
modelaje (UML)


OBJETIVOS DE APRENDIZAJE
1. Conocer los conceptos
elementales del UML.
2. Comprender la funcin del
UML en la programacin.
3. Conocer los conceptos
fundamentales de la
programacin orientada a
objetos.
CONTENIDOS
1. El UML.
2. La programacin orientada a
objetos.

Un sistema complejo toma forma cuando alguien tiene la visin de cmo
la tecnologa puede mejorar las cosas. Los desarrolladores tienen que
entender la idea y mantenerla en mente mientras crean el sistema que le
d forma. El xito de un proyecto se debe al enlace entre la idea y el
desarrollador; esta funcin de enlace se puede alcanzar con el UML.
El UML (Lenguaje Unificado de Modelado) permite a los creadores de
sistemas generar diseos que capturen sus ideas de una forma
convencional y fcil de comprender para comunicarlas a otras personas
(por ejemplo: cliente y desarrollador).
El desarrollo de sistemas es una actividad compleja y sujeta a errores
en cualquier etapa del proceso. Por ello, es necesario contar con un plan
bien analizado; es necesario que el cliente comprenda lo que harn los
desarrolladores de manera que pueda proponer cambios para ajustar el
producto a sus necesidades. Asimismo, en la actualidad el desarrollo se
realiza en equipos y por tanto cada miembro debe saber como
contribuye a la solucin final. El UML proporciona los recursos para
lograr un producto de calidad.
El UML fue creado por Grady Booch, James Rumbaugh e Ivar
Jacobcon pero actualmente un consorcio formado por grandes empresas
y organizaciones se han encargado de emitir las diferentes versiones. El
UML ha llegado a ser el estndar de facto en la industria del software.
El UML es un lenguaje y por tanto cuenta con reglas para combinar sus
elementos; estos elementos son principalmente grficos y son utilizados
para crear diagramas. El objetivo de stos es presentar perspectivas de un
sistema a las cuales se les conoce como modelo, el cual describe lo que
supuestamente har el sistema, pero no dice cmo implementar dicho
sistema.

Elementos grficos
El UML consta de una serie de smbolos grficos que permiten la
construccin de diagramas para la especificacin del sistema que se
desea construir:
Smbolo Significado

Clase
Se divide en tres reas: la superior contiene el
nombre, la central contiene los atributos y la
inferior las acciones.
Se entiende por
sistema una
combinacin de
software y
hardware que da
solucin aun
problema. El
desarrollo de
sistemas es la
creacin de un
programa para un
cliente. Un analista
es el que documenta
el problema del
cliente y lo
comunica a los
desarrolladores o
programadores

Objeto
En la parte superior se escribe el nombre de la
clase, luego dos punto (:) y luego el nombre del
objeto.

Caso de uso
Indica la accin de un sistema desde el punto de
vista del usuario. Se escribe la accin

Paquete
Sirve para mostrar que ciertas clases son parte de
un subsistema particular.

Comentario
Se utiliza para explicar algn elemento en un
diagrama. Se conecta al elemento mediante una
lnea punteada.

Actor
Representa a una persona.

Estereotipo
Sirve para crear elementos hechos a la medida
ya que el UML no cuenta con un conjunto
exhaustivo de smbolos.

Existe una relacin bastante fuerte entre el UML y la Programacin
orientada a Objetos (POO). A continuacin se presentan algunos
elementos de este paradigma de programacin.
Programacin orientada a objetos
El paradigma de POO es uno de los ms pujantes en la industria de
produccin de software, sin embargo, algunos de los conceptos
fundamentales de este paradigma son heredados de otros paradigmas. A
continuacin se listan algunos conceptos de sus conceptos:
1. Herencia. Cuando se crea un objeto a partir de una clase, este
hereda todas las caractersticas y acciones de la clase. Asimismo,
su una clase es instancia de una superclase, tambin heredar las
propiedades y acciones de la superclase.
2. Polimorfismo. Ocurre cuando ms de una operacin tiene el
mismo nombre en diferentes clases, por ejemplo la operacin
abrir podra referirse a abrir una puerta, una caja, una ventana
corrediza, etc.

3. Encapsulamiento. Consiste en ocultar la funcionalidad de un
objeto, es decir cuando se disea un objeto con sus propiedades y
operaciones lo nico que es visible son las propiedades y
acciones pero no qu cmo se define internamente la operacin o
las propiedades. Esto ayuda a reducir el potencial de errores y
facilita dotar de independencia un objeto de otro en cuanto a su
estructura (aunque no necesariamente en cuando a las
interrelaciones).
4. Envo de mensajes. Para que los objetos trabajen en conjunto se
requiere que se comuniquen entre s, esto se logra por medio del
envo de mensajes. Un objeto enva un mensaje a otro, el cual lo
recibe y realiza las acciones asociadas al mensaje.
5. Asociacin. Es la relacin entre objetos. Existen diferentes tipos
de asociaciones: de un objeto A a otro B, de A a B y viceversa,
de A a B1, B2, B3,, Bn, etc.
6. Agregacin. Un objeto es la agregacin o suma de otros si est
compuesto por ellos; este es otro tipo de asociacin.
7. Composicin. Un objeto se considera como tal solo si es parte de
la agregacin de otro; si no existe el objeto el componente es
intil.
La POO fomenta la metodologa basada en componentes para el
desarrollo de software: primero se genera un sistema mediante un
conjunto de objetos, luego se ampla agregando funcionalidad a los
componentes o agregando nuevos componentes. Los objetos aqu
creados pueden ser utilizados en otros sistemas. El UML permite generar
modelos de objetos fciles de usar y comprender por los desarrolladores,
quienes lo convierten en software.
Los objetos en el mundo real estn por todas partes y pueden ser
concretos o ideales. En el software los objetos pueden ser visuales o no
visuales. En la POO un concepto fundamental es el de clase; la cual se
refiere a un conjunto de objetos que tienen algo en comn; por ejemplo
la clase Persona incluye a todas las personas, la clase Animal incluye a
todos los animales. De esta forma, un objeto es un elemento de una clase
o una instancia de la clase.
En POO la clase no solo sirve para categorizar objetos sino para crear
objetos, ya que funciona como una especie de plantilla. Vale la pena
aclarar que al definir una clase se incluyen las caractersticas y
comportamientos generales, pero los objetos como instancias heredan
esas caractersticas y las agregan a sus caractersticas particulares.
Abstraccin. Se refiere a eliminar del objeto del mundo real las
propiedades y acciones que no son necesarias para la solucin y dejar
aquellas que son importantes para el problema en particular. De esta
forma, ante dos problemas diferentes un mismo objeto podra tener
caractersticas y acciones diferentes.

Diagramas
El UML utiliza una variedad de diagramas con diferentes funciones para
modelar diferentes aspectos de un sistema en las diferentes fases del
proceso de anlisis y diseo. Estos diagramas presentan varias
perspectivas del sistema.
1. Diagrama de clases. El mundo que nos rodea est compuesto por
objetos los cuales tienen atributos o propiedades y algunos son
capaces de realizar acciones o tareas. Todos estos objetos pueden ser
agrupados en categoras o clases a partir de ciertas caractersticas;
por ejemplo una lavadora, una licuadora, una estufa y una tostadora
pueden ubicarse en una clase llamada electrodomstico.
Un diagrama de clases tiene como elemento ms importanta a las
clases y establece la forma como estas se relacionan. Estos
diagramas representan informacin esttica.
2. Diagrama de objetos. Un objeto es una instancia de una clase y por
tanto tiene valores especficos en sus atributos y acciones. El
diagrama de objetos establece las relaciones entre ellos. Estos
diagramas representan informacin esttica.
3. Diagrama de caso de uso. Es una descripcin de acciones de un
sistema desde el punto de vista del usuario, lo cual es importante
porque al fin de cuentas la razn de ser de los sistemas son los
usuarios y deben responder a sus requerimientos.
4. Diagramas de estados. En el tiempo un objeto puede cambiar en sus
atributos y acciones el diagrama, el diagrama de estados representa
los diferentes estados de un objeto desde el inical hasta el final.
5. Diagrama de secuencias. Muestran la dinmica de la interaccin de
los objetos en el tiempo.
6. Diagrama de actividades. Muestra las actividades que ocurren en
caso de uso o dentro del comportamiento de un objeto.
7. Diagrama de colaboraciones. Los elementos de un sistema trabajan
entre si para cumplir con el objetivo, esto se refleja en los diagramas
de colaboraciones.
8. Diagrama de componentes. Representan componentes de software,
este tipo de diagrama est ms relacionado con el sistema
informtico que con el mundo de objetos propiamente dicho.
9. Diagrama de distribucin. Tambin tiene ms relacin con el sistema
informtico. Sirve para mostrar la arquitectura fsica del sistema.
La relevancia de
la UML estriba
en utilizar sus
conceptos para
lograr una
buena
comunicacin
bidireccional
entre el cliente y
analista a fin de
obtener una
buena solucin.

En secciones posteriores se ver la especificacin y aplicacin de estos
diagramas. Por el momento pasaremos a ver algunos elementos del LAF.



Flujograma:
Lenguaje
algortmico


OBJETIVOS DE APRENDIZAJE
1. Conocer el ejecutor para
algoritmos en flujograma.
2. Conocer el lenguaje de
flujograma.
3. Comprender cmo se
expresan elementos del
mundo real en el mundo
abstracto mediante
flujograma.
CONTENIDOS
1. El ejecutor de algoritmos en
flujograma
2. El alfabeto.
3. Tipos de datos
4. Valores literales
5. Identificadores
6. Operadores
7. Expresiones
8. Sentencias
9. Algoritmos


Para construir algoritmos existen varios lenguajes; estos pueden ser
formales o no formales. El lenguaje algortmico flujograma es un
lenguaje no formal diseado para ejecutores imaginarios. El propsito de
este lenguaje es especificar cmo funciona un algoritmo sin hacer
referencia a un ejecutor especfico o a algn lenguaje de programacin
en particular.
Actividad
Investigar qu es un lenguaje formal y no formal.

El ejecutor de algoritmos en flujograma
Antes de definir el lenguaje en cuestin se presentan las caractersticas
del ejecutor:
1. Es imaginario.
2. Tiene mecanismos para:
a. capturar datos del entorno.
b. devolver datos al entorno.
c. Procesar datos
3. Admite datos de tipo:
a. Numrico (nmeros reales)
b. Cadena (texto o combinaciones de texto y nmeros)
c. Carcter (cada smbolo del alfabeto, cada dgito y
algunos smbolos especiales como {, }, [, ], (, ), +, ,
etc.)
d. Lgico (verdadero o falso, los cuales se pueden
representar como V y F respectivamente)
4. Se pueden definir variables, las cuales almacenan datos de los
tipos listados en 2. Estas variables tienen una memoria asociada
a la cual se hace referencia por medio del identificador de
variable.
5. Admite operaciones entre identificadores de variables o literales
a. Operaciones aritmticas, las cuales actan sobre
nmeros:
i. Adicin: +
ii. Sustraccin:
iii. Multiplicacin: *
iv. Divisin: /
b. Operaciones relacionales, las cuales actan sobre
nmeros, o sobre caracteres, o sobre cadenas, o sobre
valores lgicos; pero no se pueden mezclar los tipos de
valor:
i. Igual que: =
ii. Menor que: <
iii. Mayor qu: >
iv. Menor o igual que:
v. Mayor o igual qu:
vi. Diferente de:
c. Operaciones lgicas:
i. Negacin: No
ii. Disyuncin: O
iii. Conjuncin: Y
d. Operaciones de cadena:
i. Longitud: Long(e), donde e es una expresin de
cadena.
ii. Concatenacin: +
Se aceptan las siguientes afirmaciones:
1. El vaco o ausencia de smbolo o dato es un carcter de longitud
cero.
2. Todo carcter es cadena. Su longitud es 1, excepto para el vaco.
3. Toda operacin aritmtica produce valores numricos.
4. Toda operacin relacional produce valores lgicos.
5. Toda operacin lgica produce valores lgicos.

El lenguaje flujograma
Este es un lenguaje no formal que utiliza, principalmente, smbolos
grficos para especificar un algoritmo.
Smbolos grficos
La siguiente lista de smbolos es una adaptacin de algunos estndares
internacionales:
Smbolo Significado

Inicio o Fin
Se utiliza para indicar al ejecutor el inicio o el
fin de un algoritmo.

Asignacin
Se utiliza para indicar que el ejecutor debe
realizar una asignacin.

Entrada
Se utiliza para indicar al algoritmo que debe
capturar una entrada o valor desde el entorno

Salida
Se utiliza para indicar al ejecutor que debe
mostrar un valor al entorno.

Smbolo Significado

Decisin
Indica al ejecutor que inicia un proceso de
decisin.

Subproceso o mdulo
Indica una llamada o invocacin a otro
algoritmo.

Lneas de flujo
Indican al ejecutor cul sentencia se debe
ejecutar.

Conector en la pgina
Se utiliza para conectar fragmentos de un
algoritmo en una misma pgina.

Conector entre pginas
Se utiliza para conectar fragmentos de
algoritmos entre pginas.

A parte de los smbolos grficos se cuanta con otros smbolos; juntos
forman el alfabeto del lenguaje:
1. El abecedario en mayscula y en minscula.
2. Los dgitos
3. Smbolos especiales: +, /, *, , ^, (, ), {, }, entre otros.
Reglas para construir algoritmos
Los smbolos que se listaron en la seccin anterior se deben utilizar
adecuadamente para construir flujogramas. A continuacin se presentan
las reglas para la construccin de los diferentes elementos que podran
componen un flujograma:
1. Los valores numricos se construyen a partir de los dgitos, tal
como ocurre en matemtica.
2. Los valores de cadena se construyen concatenando smbolos del
abecedario, dgitos o smbolos especiales.
3. Valores literales. Un valor literal es aquel cuyo valor se obtiene
a simple vista pues el valor es representado directamente; por
ejemplo: 12, 56.09, V, Hola. Estos valores suelen llamarse
constantes.
4. Los identificadores de variables se construyen utilizando
smbolos del abecedario o dgitos, pero deben empezar con una
letra. Todo identificador de variable tiene una memoria asociada
en donde se guardan los valores (uno a la vez); estos valores
pueden cambiar. El identificador de variable debera representar
un atributo o hecho en el dominio del problema.
5. Un identificador de constante cumple las mismas caractersticas
de un identificador de variable, excepto que el contenido de su
memoria no cambia.
6. Una expresin se forma mediante alguno de los siguientes casos
a. Un valor literal
b. Un identificador de variable.
c. Un identificador de constante.
d. Una operacin vlida entre valores literales,
identificadores de constante y/o identificadores de
variables.
7. Una sentencia es una orden. Existen sentencias simples:
a. entrada
b. asignacin
c. salida
d. inicio
e. fin
y existen sentencias compuestas:
a. decisin
b. repeticin
c. llamada
8. Un algoritmo es un conjunto de sentencias debidamente
enlazadas. Este conjunto debe cumplir con la definicin vista al
inicio. Adems:
a. Todo algoritmo tiene un inicio
b. Todo algoritmo tiene un fin.
c. Su estructura es:
i. Encabezado. Tambin llamado nombre, debe ser
un identificador con o sin parmetros.
ii. Descripcin. Se escribe entre llaves y explica el
propsito del algoritmo, describe de manera
general su funcionamiento, lista los
identificadores que utiliza, indica la fecha en que
fue construido y el autor.
iii. Cuerpo (al cuerpo es a lo que usualmente se le
llama flujograma, abusando de la notacin); es
el conjunto de sentencias.
d. Del smbolo de inicio debe salir una lnea de flujo.
e. Al smbolo de fin debe llegar una lnea de flujo.
f. De los smbolos de entrada, asignacin y salida debe
salir una lnea de flujo y debe llegar una lnea de flujo.
g. Del smbolo de decisin deben salir dos lneas de flujo y
debe llegar una lnea de flujo.

h. Las lneas de flujo pueden parecer en forma horizontal,
vertical o quebrada.

Sintaxis de las sentencias
Suponga que:
1. iv, con o sin subndices significa identificador de variable.
2. e, con o sin subndices significa expresin.
3. s, con o sin subndices significa una sentencia cualquiera.
4. el, con o sin subndices significa expresin lgica.
5. iP, con o sin subndices significa identificador de proceso.
6. p, con o sin subndices significa identificador de parmetro.
A continuacin se presenta la sintaxis y la interpretacin de las
sentencias en flujograma
Sentencia Explicacin
Inicio

Sentencia de Inicio
El algoritmo indica al ejecutor el inicio. Se
puede interpretar como Encender el
ejecutor
iv
1
, iv
2
, , iv
n

Sentencia de Entrada
El algoritmo le indica al ejecutor que
capture o reciba datos del entorno y los
guarde, uno en cada identificador de
variable.
Mientras los datos no sean ingresados
desde el entorno, el algoritmo estar a la
espera.
iv
1
=e
1
iv
2
=e
2

iv
n
=e
n

Sentencia de Asignacin
El algoritmo indica al ejecutor que
resuelva la expresin y almacene el
resultado en el identificador.
Sentencia Explicacin
el
Si
No

Sentencia de Decisin
El algoritmo indica al ejecutor que evale
la expresin lgica (el), si sta resulta
verdadera entonces el algoritmo pide al
ejecutor que ejecute todas las sentencias
en la ruta Si, de lo contrario pide al
ejecutor que ejecute todas las sentencias
de la ruta No.
el
Si
No

Sentencia de Decisin
El algoritmo indica al ejecutor que evale
la expresin lgica (el), si sta resulta
verdadera entonces el algoritmo pide al
ejecutor que ejecute todas las sentencias
en la ruta Si.
el Si
No

Sentencia de Repeticin (de una o ms
iteraciones)
El algoritmo indica al ejecutor que ejecute
un conjunto de sentencias, luego le pide
que evale la expresin lgica (el). Si sta
resulta verdadera entonces el algoritmo
pide al ejecutor que vuelva a ejecutar las
sentencias. Esto se repite hasta que la
evaluacin de la expresin lgica resuelta
Falso

Sentencia Explicacin
el
Si
No

Sentencia de Repeticin (de cero o ms
iteraciones)
El algoritmo le indica al ejecutor que
evale la expresin lgica (el). Si esta
resulta verdadera el algoritmo pide al
ejecutor que ejecute las sentencias en la
ruta Si. Luego le pide que vuelva a evaluar
le expresin lgica (el). Este proceso se
repite mientras la expresin lgica resulta
Verdadero.
iP(p1, p2 ,, pn)

Sentencia de Llamada o Invocacin
El algoritmo pide al ejecutor que ejecute
un proceso (funcin, procedimiento,
mtodo, mdulo, entre otros) pasando
valores para los parmetros.
e1, , en

Sentencia de salida
El algoritmo le indica al ejecutor que
muestre al entorno los valores de las
expresiones e1, , en.
Fin

Sentencia de Finalizacin
El algoritmo indica al ejecutor que los
procesos han finalizado. Se puede
interpretar como Apagar el ejecutor


Ejemplos
A continuacin se presenta una serie de ejemplos. Es conveniente que el
lector repase todo lo anterior acerca de flujogramas para identificarlo en
los ejemplos
Ejemplo 1
Suponga que se tiene una clase llamada Alumno como se muestra en la figura:

Alumno
aNombre : Cadena
aID : Cadena
aExa1 : Numrico
aExa2 : Numrico
aExa3 : Numrico
aExa4: Numrico
aFinal : Numrico
mPromedio()

Donde:
aNombre es el nombre del alumno
aID es el nmero de identificacin del alumno, es decir una cadena de
13 dgitos.
aExa1 hasta aExa4 son los puntajes entre 0 y 100 por cada examen.
aFinal es el promedio de los cuatro exmenes.
Promedio es un mtodo para calcular el promedio y asignarlo a aFinal.

Escriba el algoritmo del mtodo mPromedio.

Solucin

mPromedio (pExa1, pExa2, pExa3, pExa4, pFinal)
{Este algoritmo calcula el promedio de cuatro nmeros.
Recibe cuatro valores (pExa1, pExa2, pExa3, pExa4), calcula su promedio y lo
guarda en pFinal}
Inicio
pFinal=(pExa1+pExa2+pExa3+pExa4)/4
Fin


Ejemplo 2
Suponga que se tiene una clase llamada TrinomioCuadrado:

TrinomioCuadrado
aA1 : Numrico
aA2 : Numrico
aA3 : Numrico
aRaiz1 : Numrico
aRaiz2 : Numrico
mRaices()

Donde:
aA1 aA2, y aA3 son los coeficientes principal, medio e independiente
respectivamente.
mRaiz1 y mRaiz2 son las races reales.
mRaices es un mtodo para calcular las races reales.

Escriba el algoritmo del mtodo mRaices.

Solucin

mRaices (pA1, pA2, pA3, pRaiz1, pRaiz2l)
{Este algoritmo calcula las races reales de un trinomio cuadrado a partir del valor de los
coeficientes
Recibe tres valores (pA1, pA2, pA3), calcula las races reales las guarda pRaiz1 y
pRaiz2
D es una variable que toma el valor del discriminante del trinomio cuadrado}

D<0
No hay races reales
Inicio
D=pA2
2
-4*pA1*pA3
Si
pRaiz1=-pA2/(2*pA1)
pRaiz2=pRaiz1
D=0
pRaiz1=(-pA2+sqrt(D))/(2*pA1)
pRaiz2=(-pA2-sqrt(D))/(2*pA1)
Si
No
Fin
No



La ejecucin de un algoritmo
A continuacin se presenta un ejemplo detallado de lo que ocurre cuando un algoritmo se ejecuta. Para ello se considerar en un entorno al
algoritmo, al ejecutor y al usuario. Para efectos de este ejercicios se supone que mRaices se invoca con los argumentos aA1=1, aA2=1 y aA3 =-2
Algoritmo Explicacin Memoria Salida
Inicio

El algoritmo indica al ejecutor que inicie.
Se crea la memoria del algoritmo
(parmetros y variables locales).
Los valores de los argumentos son
transferidos a los parmetro
Luego la lnea de flujo lleva el control de
ejecucin a la siguiente sentencia.

pA1 pA2 pA3 pRaiz1 pRaiz2 D
1 1 -2



D=pA2
2
-4*pA1*pA3

El algoritmo indica al ejecutor que
resuelva la expresin pA2
2
-4pA1*pA3 y
que almacene el resultado en el
identificador D. Luego la lnea de flujo
lleva el control de ejecucin a la
siguiente sentencia.

pA1 pA2 pA3 pRaiz1 pRaiz2 D
1 1 -2 9




Algoritmo Explicacin Memoria Salida
D<0
No hay races reales
Si
pRaiz1=-pA2/(2*pA1)
pRaiz2=pRaiz1
D=0
pRaiz1=(-pA2+sqrt(D))/(2*pA1)
pRaiz2=(-pA2-sqrt(D))/(2*pA1)
Si
No No

En la sentencia de decisin, el algoritmo
pide al ejecutor que evale la expresin
D<0. Dado que en la memoria de D est
almacenado el valor 9, D<0 es Falso.
Entonces se ejecuta el bloque de
sentencias en la ruta No. La lnea de
flujo pasa el control de ejecucin hacia
ese bloque.


pA1 pA2 pA3 pRaiz1 pRaiz2 D
1 1 -2 9



pRaiz1=-pA2/(2*pA1)
pRaiz2=pRaiz1
D=0
pRaiz1=(-pA2+sqrt(D))/(2*pA1)
pRaiz2=(-pA2-sqrt(D))/(2*pA1)
Si
No

El algoritmo pide al ejecutor que evale
la expresin lgica D=0. Dado que en la
memoria de D est almacenado el valor
9, D<0 es Falso. Entonces se ejecuta el
bloque de sentencias en la ruta No. La
lnea de flujo pasa el control de
ejecucin hacia ese bloque.


pA1 pA2 pA3 pRaiz1 pRaiz2 D
1 1 -2 9



pRaiz1=(-pA2+sqrt(D))/(2*pA1)
pRaiz2=(-pA2-sqrt(D))/(2*pA1)

El algoritmo pide al ejecutor que evale
la expresin (-pA2+sqrt(D))/(2*pA1) y
que almacene el resultado en la memoria
del identificador pRaiz1. Luego
algoritmo pide al ejecutor que evale la
expresin (-pA2-sqrt(D))/(2*pA1) y que
almacene el resultado en la memoria del


pA1 pA2 pA3 pRaiz1 pRaiz2 D
1 1 -2 1 -2 9



Algoritmo Explicacin Memoria Salida
identificador pRaiz2.
Luego el control de ejecucin cierra la
sentencia de decisin.
Luego el control de ejecucin cierra la
sentencia de decisin.
Luego el control de ejecucin pasa a la
siguiente sentencia.
Fin

El algoritmo pide al ejecutor que se
apague y se destruye la memoria del
algoritmo.


Al finalizar el algoritmo mRaices, los parmetros pRaiz1 y pRaiz2 modifican la memoria de los argumentos aRaiz1 y aRaiz2 de manera que 1
queda en aRaiz1 y -2 queda en aRaiz2.
Una distribucio n
de Smalltalk:
Squeak

OBJETIVOS DE APRENDIZAJE
1.
2. .
CONTENIDOS
1. .
En esta seccin se explicar brevemente el ambiente o mundo de una
distribucin de Smalltalk: Squeak; el lector puede buscar en Internet
acerca de las diversas posibilidades que existen para este lenguaje, tanto
a nivel de distribuciones como de bibliografa.
Squeak
En la pgina Web oficial de Squeak se afirma que:
Squeak es una moderna implementacin de cdigo abierto del
poderoso lenguaje de programacin Smalltalk y su entorno.
Squeak es altamente portable, incluso su mquina virtual est
completamente escrita en Smalltalk haciendo que sea fcil de
depurar, analizar y cambiar. Squeak es un medio para un amplio
rango de proyectos para aplicaciones multimedia, desde
plataformas educativas hasta desarrollo de aplicaciones
comerciales Web.
1


Instalacin
Existe una variedad de versiones de Squeak que pueden ser
descargadas gratuitamente de Internet. La versin que aqu se utiliza es
que se puede descargar desde:
http://www.squeak.org/
Al momento de escribir este documento la pgina luca as:

Para descargar la versin para Windows de pulsar clic en Allinone,
que se encuentra en la parte superior derecha de la pgina web. Con esto
se descargar un archivo comprimido: Squeak-4.4-All-in-One.zip en su
computadora (o en el dispositivo que usted seleccione). Luego debe
descomprimir el archivo en un lugar conveniente; tome en cuenta que la

1
Squeak is a modern, open source, full-featured implementation of the powerful
Smalltalk programming language and environment. Squeak is highly-portable -
even its virtual machine is written entirely in Smalltalk making it easy to debug,
analyze, and change. Squeak is the vehicle for a wide range of projects from
multimedia applications, educational platforms to commercial web application
development.

carpeta descomprimida ocupa alrededor de 488 Mb de memoria
secundaria.
La siguiente es la forma como se ve el contenido de la carpeta ya
descomprimida y guardado en la carpeta Descargas.

Cuando se instala Squeak en la computadora se almacenan varios
archivos, entre otros:
1. La mquina virtual (virtual machine, VN). Este archivo es
diferente para cada sistema operativo y procesador.
2. El archivo fuentes (sources file). Contiene el cdigo fuente de las
partes de Squeak que no cambian muy frecuentemente.
3. Imagen del sistema (system image). Puede entenderse como una
foto instantanea del sistema Squeak. Consiste de dos archivos:
uno de extensin .image (el cual contiene el estado de todos los
objetos en el sistema) y otro, changes (el cual contiene un
registro de todos los cambios al cdigo fuente del sistema).

Ejecutar y trabajar con Squeak
Para ejecutar Squeak solo tiene que pulsar doble clic en el archivo
Squeak:

Entonces se ejecutar el programa y aparecer una ventana como la
siguiente (el mundo Squeak):

Cuando se trabaja con Squeak los archivos imagen y cambios son
modificados (por lo tanto debe asegurarse que al instalarlos estos estn
con la propiedad modificable). Por lo anterior, es recomendable
mantener una copia de seguridad de estos dos archivos. Para efectos de
seguridad usted crear una copia de trabajo de la imagen la cual
nombrar con el siguiente formato:
Letra de primer nombre+Primer apellido+Squeak
Por ejemplo, para el usuario Lev Castro la imagen de trabajo se llamar:
LCastroSqueak
Cualquier cambio que realice en Squeak quedar registrado en la imagen
si los guarda; en este sentido, usted personalizar la imagen quedando a
la disposicin todos los recursos creados para ser utilizados en otras
aplicaciones.
Actividad
Para crear la copia de la imagen Squeak haga los siguiente:
1. Ejecute Squeak
2. Pulse clic en el men Squeak (el ratn)

Se desplegar una ventana o men

Seleccione guardar como, y se desplegar una ventana:


3. Escriba el nombre segn se indic anteriormente (por ejemplo:
LCastro.image, si el usuario es Lev Castro)
4. Pulse clic en Aceptar(s)

Al realizar la actividad anterior en la ruta donde se instal Squeak
aparecer la imagen con el nombre que usted acaba de guardar. A partir
de ahora trabajar con esa imagen.

El mundo Squeak
Es importante entender a Squeak como un mundo o universo el cual est
constituido por objetos que se relacionan entre s; adems, el
programador puede crear nuevos objetos para ese mundo. La Figura 1
muestra el mundo Squeak.

Figura 1. El mundo Squeak
En la figura anterior se pueden distinguir diferentes partes, las cuales se
explican a continuacin:
(1) La barra de ttulo tiene las funciones tpicas de este tipo de barra:
maximizar ( ), minimizar ( ), cerrar ( )
(2) La barra de mens contiene varios mens que permiten acceso a
diferentes operaciones o recursos del mundo Squeak:
(a) El men Squeak contiene las opciones guardar, guardar como,
guardar y salir, y salir.
Barra de ttulo
Barra de mens
rea de trabajo


(b) El men proyecto


(c) El men Tools

Herramientas de programacin
Squeak tiene algunas herramientas de programacin:
(1) El espacio de trabajo (Workspace)
En este espacio se puede escribir programas totalmente funcionales.
Se puede abrir de dos formas:
(a) Tools, Workspace (k)
(b) Alt+k
Cualquiera de las dos formas mostrar la siguiente ventana:



(2) La ventana transcripcin (Transcript)
Una de las funciones de esta ventana es mostrar salidas producidas
por los programas escritos en el Workspace. Se puede abrir de dos
formas:
(a) Proyecto, abrir, transcript (t)
(b) Alt+t

(3) El explorador de clases.
Esta ventana cumple varias funciones, las cuales se puede resumir
con el trmino administrar clases; lo cual implica que se pueden
crear clases, eliminarlas, buscar, modificar, etc.Para abrir la ventana
utilice una de las siguientes secuencias:
(a) Proyecto, abrir, explorador (b)
(b) Alt+b


(4) El depurador
Aparece cuando se ejecuta una accin y existe un error,
principalmente de sintaxis o de ejecucin:

Es til para buscar la causa de errores y as depurar el programa.


El lenguaje
Smalltalk

OBJETIVOS DE APRENDIZAJE
1.
2. .
CONTENIDOS
1.
Es un lenguaje de programacin orientado a objetos que tiene la
caracterstica de ser puro; es decir que implementa este paradigma en
forma pura. Smalltalk est pensado como un mundo en el cual
interactan objetos virtuales mediante mensajes; de hecho, el propio
mundo es un objeto.
Smalltalk est compuesto por:
1. Una mquina virtual
2. Una imagen virtual
3. El lenguaje de programacin
4. Una biblioteca de objetos
5. Un entorno de desarrollo
Fue desarrollado en la dcada del setenta (del siglo pasado) en Palo Alto
Research Institute de Xerox por Alan Kay, Dan Ingalls, Ted Kaehler,
Adele Goldberg y otros.
Un programa en Smalltalk est compuesto nicamente por objetos que
presentan caractersticas comunes:
1. Tienen una memoria propia
2. Pueden comunicarse con otros objetos
3. Heredan caractersticas de sus ancestros
4. Tienen la capacidad de procesamiento
Los objetos se comunican mediante el envo de mensajes y puede
realizar muchas operaciones a las cuales se les llama mtodos. El
conjunto de mtodos de un objeto se conoce como protocolo de mensajes
o interfaz de mensajes.
Una clase recoge las caractersticas comunes de un conjunto de objetos y
los objetos que se agrupan en esa clase se llaman instancias de la clase.
Como lenguaje, Smalltalk tiene las siguientes caractersticas:
1. Orientado a objetos
2. Definicin dinmica de tipos de datos.
3. Interaccin entre objetos por medio de mensajes
4. Herencia simple con raz comn
5. Reflexin computaciones completa
6. Recoleccin de basura
7. Compilacin en tiempo de ejecucin o interpretado
8. Mltiples implementaciones.

Conceptos
Segn Gmez (2006) Smalltak cuenta con un conjunto muy pequeo de
conceptos con significado bien especfico:
1. Objeto
Es una parte perfectamente diferenciada del ambiente con caractersticas
y responsabilidades bien definidas.
Un objeto se puede ver desde dos puntos de vista: interno y externo. El
primero se refiere a la representacin del objeto y los algoritmos que
implementan los mtodos, para un usuario lo interno de un objeto es
privado; mientras que el segundo se refiere al objeto visto por otros
objetos (qu puede hacer un objeto con otro objeto) y es descrito por el
protocolo de mensajes (o conjunto de mensajes a los cuales el objeto
responde). Lo privado de un objeto no puede ser manipulado por otro
objeto a menos que este provea de un protocolo para hacerlo.
Por ejemplo, suponga que un objeto trinomioCuadrado est definido
internamente segn la siguiente clase
2
:
TrinomioCuadrado
aA1
aA2
aA3
aDis
aRaiz1
aRaiz2
mDisc
mRaiz1
mRaiz2

Entonces, no se puede tener acceso a los atributos aA1, aA2, aA3 de
dicho objeto porque no tiene mtodos que lo permitan, sin embargo, si se
puede tener acceso aRaiz1 y aRaiz2 pero nicamente para almacenar sus
valores pero no para ver sus valores.
2. Mensajes
Es un requerimiento que se le hace a un objeto determinado para que ste
lleve a cabo algunas de sus responsabilidades. Por tanto, un mensaje
especifica qu es lo que se espera del receptor (el objeto que recibe el

2
aA1 es el coeficiente principal, aA2 es el coeficiente del trmino medio, aA3 es
el coeficiente del trmino independiente, aDis es el discriminante, aRaz1 es la
primera raz, aRaiz2 es la segunda raz, mDisc es un mtodo para calcular el
discriminante y guardarlo en aDis, mRaiz1 es un mtodo para calcular la
primera raz y guardarla en aRaiz1, mRaiz2 es un mtodo para calcular la
primera raz y guardarla en aRaiz2.
mensaje) pero no obliga a responder de una determinada manera. Esto es,
el receptor es el responsable de decidir cmo se lleva a cabo la operacin
para contestar al mensaje.
3. Interfaz
El juego de mensajes que un determinado objeto puede entender se
denomina su interfaz. Por tanto, la nica forma de interactuar con un
objeto es a travs de su interfaz.
4. Encapsulacin
Se llama encapsulacin al hecho de que ningn objeto puede acceder a la
estructura interna de otro objeto. As pues, slo el objeto conoce, y puede
manipular, su propia estructura interna. Todos los objetos de Smalltalk
son instancia de alguna clase. La programacin en Smalltalk, por tanto,
consiste en crear clases, crear instancias de esas clases y especificar la
secuencia de envo de mensajes entre esos objetos.
5. Herencia
Las clases, en Smalltalk, estn organizadas jerrquicamente. Una clase
refina el concepto de otra clase ms abstracta. La clase ms abstracta es
Object. Todas las clases son herencias de Object (porque todo es un
objeto) o herencia de alguna clase que hereda de Object. La relacin que
existe entre la clase ms abstracta (la superclase) y la clase ms concreta
(la subclase) permite clasificar el conocimiento que tengamos del
dominio diseado.

Programando con Smalltalk
Un programa en Smalltalk est compuesto por objetos, todo es objeto, y
de la interaccin entre ellos. Antes de escribir programas se definirn los
elementos que lo componen.

Clases
En Smalltalk una clase es el principal mecanismo para hacer operativa la
abstraccin. Se puede entender como un grupo de objetos con
caractersticas comunes (atributos y mtodos). Desde el punto de vista de
la programacin, describe un protocolo comn para cada objeto en el
grupo. Una instancia de la clase, es decir un objeto, hereda los atributos y
mtodos de la clase.
Clase es una
descripcin de un
conjunto de
objetos con
caractersticas y
atributos similares
(es decir atributos
y mtodos
comunes).
Instancia es un
objeto individual
para una clase
particular.

Diseando una clase nueva
Para disear una nueva clase primero se crea la especificacin de la
clase; es decir se define el protocolo de la clase. La especificacin debe
proveer toda la informacin requerida por usuarios de la clase:
1. Lista de nombres de las operaciones requeridas.
2. Concretar las operaciones mediante la descripcin de los
parmetros en detalle.
3. Especificar la semntica para cada operacin de manera
informal.
Protocolo de la clase y protocolo de la instancia
El protocolo de la clase es descrito en dos partes:
1. De la clase; es una descripcin del protocolo comprendido por
una clase. Estos mensajes son enviados a una clase ms que a
instancias. Usualmente contiene protocolos para crear e
inicializar nuevas instancias; en este sentido las clases pueden
ser vistas como fbricas de objetos.
2. De la instancia; es una descripcin del protocolo comprendido
por instancias de la clase.
Ejemplo
La expresin
Complex newWithReal: 1.0 andImaginary:3.5
enva el mensaje newWithReal: 1.0 andImaginary:3.5 a la clase Complex a
fin de retornar una instancia de la clase Complex con 1.0 para la parte
real y 3.5 para la imaginaria.
Este protocolo puede ser especificado como sigue:

newWithReal: realPart andlmaginery: imaginaryPart
Devuelve una instancia de la clase Complex con parte real
realPart y parte imaginaria imaginaryPart.

La descripcin de una clase
En Smalltalk la descripcin de una clase consiste de siete componentes:
1. Nombre de la clase.
2. Nombre de la superclase.
3. Variables de la clase. Variables compartidas por todas las
instancias de la clase.
4. Variables de instancia. Variables que se encuentran en todas las
instancias de la clase.
5. Diccionarios comunes. Los nombres de listas de variables
compartidas que son accesibles a las clases e instancias.
Diferente a las variables de clase, estas pueden ser referenciadas
por otras clases no relacionadas.
6. Mtodos de la clase. Operaciones que pueden ser entendidas por
la clase.
7. Mtodos de la instancia. Operaciones que no son entendidas por
las instancias de clase
La siguiente es la plantilla para creacin de clases en el navegador de
sistema:
Object subclass: #NameOfSubclass
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: ''

Posteriormente se ver como utilizar este formato para crear clases.

Objetos Literales
El valor de una expresin literal es el mismo objeto y es constante:
Nmeros
En Smalltalk se tienen varias clases de objetos numricos:
1. Para nmeros enteros
Integer
SmallInteger
LargePositiveInteger
LargeNegativeInteger
2. Para coma flotante
Float
3. Para fracciones
Fraction
4. Para decimales
ScaleDecimal
La figura siguiente muestra algunos de ellos:

Object
Magnitude
Number
Integer Fraction Float
SmallInteger LargePositiveInteger LargeNegativeInteger
Stream
Random
Date Time Arithmetic Value Character

Smbolos
Los smbolos son cadenas de caracteres utilizadas como nombre de clase,
mtodos, entre otros. No pueden existir en el sistema dos smbolos
idnticos. Se representan como una secuencia de caracteres precedidos
por #; por ejemplo:
#sBandera.
#barrio La Granja.
#(2 4 6)
Caracteres
Un carcter es cualquiera de los caracteres ASCII. Para escribirlo en
forma literal debe iniciar con $; por ejemplo:
$a
$3
Cadenas
Es cualquier secuencia de caracteres escrita entre apstrofos; por
ejemplo:
Tercera calle
Ana Mendoza
3456
Arreglos
Un array es una estructura indexada de datos cuyos elementos pueden ser
cualquier objeto vlido. Indexado significa que cada element del array
est identificado por un nmero que indica su posicin. Para escribir un
array literal se inicia con # y entre parntesis se escriba la lista de
elementos separados por un espacio entre ellos. Los siguientes son
ejemplos de array literales:
#(21 45 56 78)
#(Ada 345 23000)
#($Salarios Marco 23210)

Mensaje
Representan la interaccin entre los objetos de Samlltalk. Es una
solicitud que un objeto hace a otro objeto. En este sentido un mensaje
est constituido por:
a. un receptor, el objeto al que se le da el mensaje
b. el selector, el nombre del mensaje
c. argumentos
Cuando un objeto recibe un mensaje primero decide si puede responder,
en este caso un mtodo es seleccionado y evaluado. El resultado de la
evaluacin es enviada al emisor del mensaje como el resultado.
La siguiente es la plantilla para crear mtodos desde el navegador de
sistema:
message selector and argument names
"comment stating purpose of message"
| temporary variable names |
Statements
Posteriormente se ver como utilizar esta plantilla, por el momento se
explicar el funcionamiento de los mensajes.Existen tres tipos de
mensajes:
Unarios
Son mensajes sin argumentos. Por ejemplo, en la expresin -11 abs, el
objeto -11 recibe el mensaje y abs es el selector.
-11 abs
Receptor
Selector


En este caso abs es el mensaje enviado al receptor -11 y el resultado es el
objeto 11.
abs -11 11
Mensaje Receptor Resultado


Binarios
Son mensajes con un argumento. Por ejemplo, en la expresin 6+13, el
objeto 6 recibe el mensaje, + es el selector y 13 es el argumento.

6 + 13
Receptor Argumento
Selector

En este caso +13 es el mensaje enviado al receptor 6 y el resultado es el
objeto 19
+ 13 6 19
Mensaje Receptor Resultado

Keyword (clave)
Son mensajes con una o ms palabras clave (los cuales son a la vez
selectores). Por ejemplo, en la expresin 10 gcd:15, el objeto 10 recibe el
mensaje, gcd es la palabra clave y 15 es el argumento.
10 gcd: 15
Receptor Argumento
Selector

En este caso gcd:15 es el mensaje enviado al receptor 10 y el resultado es
el objeto 5.
gcd: 15 10 5
Mensaje Receptor Resultado

Otro ejemplo, en la expresin 10 between:15 and:20, el objeto 10 recibe
el mensaje, between: y and: son las claves, y 15 y 20 son argumentos
10 between: 20
Receptor Argumentos
Palabras clave
15 and:

En este caso between:15 and:20 es el mensaje enviado al receptor 10 y el
resultado es el objeto false.
10 false
Mensaje Receptor Resultado
between: 20 15 and:

Los mensajes se evalan de izquierda a derecha y la mayor precedencia
para la evaluacin la tienen los mensajes unarios. Por ejemplo la
expresin -3 abs +4*5 toma el valor 35:
-3 abs + 4 * 5
3 + 4 * 5
7*5
35
No obstante, esta precedencia se puede modificar utilizando parntesis;
por ejemplo la expresin aritmtica |-3|+4*5 tiene el valor 23, para
obtener este mismo resultado en Smalltalk se debe escribir -3 abs +(4*5).
La evaluacin de expresiones se realiza conforme al siguiente orden:
1. Expresiones en parntesis
2. Expresiones unarias
3. Expresiones binarias
4. Expresiones clave
Mensajes en cascada
Es la forma para especificar que mltiples mensajes son enviados al
mismo objeto. Se escribe indicando en primer lugar el objeto receptor, a
continuacin el primer mensaje y a partir de all todos los mensajes se
separan con un punto y como (;); por ejemplo, suponga que unArreglo es
un objeto de tipo array y se desea colocar los nmeros 4, 8 y 16 en la
primera, segunda y tercera posicin respectivamente, entonces la
siguiente es una alternativa:
unArreglo at:1 put:4.
unArreglo at:2 put:8.
unArreglo at:3 put:16.

Una forma alternativa es:
unArreglo at:1 put:4. unArreglo at:2 put:8. unArreglo at:3 put:16.
La forma alternativa en cascada es:
unArreglo at:1 put:4; at:2 put:8; at:3 put:16.
Para que el objeto receptor sea retornado es necesario agregar yourself:
unArreglo at:1 put:4; at:2 put:8; at:3 put:16; yourself

Seudo variables
Son identificadores que hacen referencia a un objeto y cuyo valor no se
puede modificar mediante una asignacin, por lo que siempre apuntan al
mismo objeto. A continuacin se describen dos de ellas.
self
Permite hacer referencia a un receptor particular cuando un mtodo es
evaluado. Esta seudo variable no puede cambiar por asignaciones dentro
de un mtodo y est ligada al receptor cuando un mtodo comienza.
nil
Se utiliza para representar el concepto nada o vaco. Las variables a las
cuales no se les asigna valor hacen referencia a nil.

Expresiones
Es una secuencia de caracteres que puede ser evaluada, es decir toma un
valor. Puede ser una de cuatro tipos:
1. literal
2. variable
3. de mensajes
4. de bloque.
Las expresiones se construyen a partir de instancias y operadores. Los
operadores se pueden clasificar segn el tipo de objeto sobre el que
actan:
Operadores Numricos
Actan sobre objetos numricos y devuelven nmeros. Pueden verse
como equivalentes a las operaciones sobre nmeros reales de las
matemticas, aunque presentan algunas diferencias:

Operacin Smbolo Ejemplo
Adicin + 23+45 Devuelve 68
Sustraccin - 23-45 Devuelve -22
Multiplicacin * 23*45 Devuelve 1035
Divisin / 23/45 Devuelve 0.511111111
Cociente // 23//45 Devuelve 0
Residuo \\ 23\\45 Devuelve 23
Mximo max: 109 max: 500 devuelve 500
Mnimo min: 109 min: 500 devuelve 109

Operadores Lgicos
Permiten comparar objetos de tipo lgico y devuelven valores lgicos.
Operacin Smbolo Ejemplo
Conjuncin & true & false devuelve false
Conjuncin and: true and: false devuelve false
Disyuncin | true | false devuelve true
Disyuncin or: true or: false devuelve true
Negacin not true not devuelve false

Los primeros operadores son binarios mientras que not es unario, es decir
acta nicamente sobre un objeto.
Para conocer los valores que devuelven los operadores se puede utilizar
la siguiente tabla de verdad. Para el operador &
Operacin Valor
true & true true
true & false false
false & false false
false & true false

El operador and: acta de forma similar a &
Pata el operador | se tiene la siguiente tabla de verdad
Operacin Valor
true | true true
true | false True
false | false false
false | true true

El operador or: acta de forma similar a |.

Para el operador not: se tiene la siguiente tabla de verdad
Operacin Valor
true not false
false not true

Operadores Relacionales
Sirven para comparar objetos de un mismo tipo y devuelven valores
lgicos
Operacin Smbolo Ejemplo
Menor < 23<11 devuelve false
Mayor > 23>11 devuelve true
Menor o igual <= 23<=11 devuelve false
Mayor o igual >= 23>=11 devuelve true
Igual = 23=11 devuelve false
Distinto ~= 23~=11 devuelve true
Equivalente == 23==23.0 deveulve true
No equivalente ~~ 23~~11 devuelve true

Para comparar existen otros dos operadores pero no devuelven valores
lgicos sino de la clase Magnitude:
1. El operador max:, devuelve el mximo de dos nmeros.
2. El operador min:, devuelve el mnimo de dos nmeros.
Operador de Asignacin
Se puede realizar una asignacin de varias formas; una de ellas es
mediante el operador :=. Por ejemplo, si x es una variable numrica
(instancia de alguna clase numrica) entonces la siguiente es una
asignacin:
x:=34.
Con los elementos vistos hasta el momento estamos casi listos para
escribir nuestros primeros programas a partir de una situacin dada en el
mundo real.


Sentencias
Las sentencias son rdenes; en este caso rdenes del programa al
ejecutor. Las sentencias en flujograma se implementan en Smalltalk
mediante mensajes a objetos.
Sentencia de asignacin
Tiene la siguiente sintaxis
Objeto := expresin.
Al ejecutar una sentencia de asignacin primero se evala la expresin y
luego el resultado se asigna al Objeto.
Tanto el objeto como la expresin deben ser de tipos de datos
compatibles; por ejemplo, si Objeto es de tipo String entonces expresin
puede ser String o Character. A pesar de lo anterior el lector debe
recordar que Smalltalk tiene asignacin de tipo de dato dinmico, lo
cual significa que la regla anterior podra violarse y producir errores
lgicos pero no de sintaxis.
Sentencias de decisin
La sentencia de decisin permite modelar los procesos que en la vida real
requieren de seleccin de alternativas para la realizacin de tareas. Por
ejemplo, en una fbrica se puede tener la siguiente situacin:
Si el motor alcanza una temperatura de riesgo, entonces se debe
detener el proceso y darle mantenimiento al motor, de lo
contrario se contina con la produccin.
A propsito se resaltaron algunos elementos de la situacin anterior. Las
que estn en negrita son las que vinculan las que estn en cursiva.
En la situacin anterior
el motor alcanza una temperatura de riesgo
es una condicin; en lenguaje algortmico o de programacin esto es una
expresin lgica, por tanto puede tomar valor verdadero o falso (o true o
false).
se debe detener el proceso y darle mantenimiento al motor
son dos acciones que se deben realizar si la condicin es verdadera; en
lenguaje algortmico o de programacin estas seran sentencias.
se contina con la produccin
es una accin que se debe realizar si la condicin es falsa; en lenguaje
algortmico esta sera una sentencia.

En Smalltalk las condiciones se traducen mediante sentencias de
decisin. Para ello tenemos tres opciones:
Smalltalk Flujograma
Expresin lgica
ifTrue:[
sentencias
]
ifFalse:[
sentencias
]

el
Si
No

Expresin lgica
ifTrue:[
sentencias
]

el
Si
No

La tercera forma no tiene un equivalente en flujograma y su sintaxis es:
Expresin lgica
ifFalse:[
sentencias
]
Pero se obtiene de la negacin de la anterior.
Sentencias repetitivas
En la vida real algunas tareas requieren la ejecucin repetida de ciertos
pasos; a esto llamamos repeticiones o ciclos. Para implementar esto en
un lenguaje algortmico o de programacin existen las sentencias
repetitivas.
Los ciclos que ocurren en la vida real no son todos de la misma
naturaleza interno o estructura. Por ejemplo:
1. Si una persona tiene una venta de garaje, cuando llegue un
cliente a comprar un artculo debe: decirle el precio, si el cliente
lo desea comprar entonces entrega el dinero, si esta cantidad
excede al precio le dar cambio, le entregar el artculo. Esto lo
debe realizar por cada persona que compre algn artculo.
2. Cuando una persona lleva los productos que desea comparar al
cajero del supermercado la persona que est en caja debe: tomar
un producto, marcar la cantidad de unidades (si es necesario),
pasarlo por el lector, verificar que los datos coincidan con el
producto. Pero si hay ms productos debe repetir estos pasos
para cada uno de los productos restantes.
3. Si un profesor desea calcular la nota final de sus alumnos
despues de aplicar cuatro exmenes deber: sumar las notas de
los exmenes, dividir el resultado entre la cantidad de examenes,
registrar el resultado.
Si analizamos estos problemas, veremos que son de naturaleza diferente.
1. En el segundo caso, es posible que no se realice ninguna venta,
en cuyo caso no realizar los pasos; entonces los pasos se
realizan al menos cero veces.
2. En el primer caso, el cajero debe realizar los pasos al menos una
vez; ya que el cliente lleva al menos un producto.
3. En el tercer caso, el profesor realizar los clculos y
asignaciones un nmero conocido de veces; exactamente igual a
la cantidad de alumnos.
Si a una ejecucin de un conjunto de pasos le llamamos iteracin,
entonces, de lo anterior deducimos que los ciclos finitos pueden ser:
1. Cero o ms iteraciones.
2. Una o ms iteraciones:
1. Cantidad de iteraciones desconocida
2. Cantidad de iteraciones conocida
En Smalltalk se cuenta con varias sentencias repetitivas que permiten
modelar estos procesos de la vida real:
Para ciclos de cero o ms iteraciones en los que se realizan
iteraciones si alguna condicin (expresin lgica en Smalltalk) es
verdadera
[expresin lgica]
whileTrue:[
sentencias
]

Para ciclos de cero o ms iteraciones en los que se realizan
iteraciones si alguna condicin (expresin lgica en Smalltalk) es
falsa:
[expresin lgica]
whileFalse:[
sentencias
]
Para ciclos de una o ms iteraciones con la cantidad conocida:
valor integer
timesRepeat:[
sentencias
]
Para ciclos de una o ms iteraciones con la cantidad conocida, pero
con variable contador con incrementos fijos igual a uno:
valor inicial integer to: valor final integer do: [:indice|
sentencias
]
Para ciclos de una o ms iteraciones con la cantidad conocida, pero
con variable contador con incrementos fijos mayores que uno:
valor inicial integer to: valor final integer do: [:indice|
sentencias
]

Relacin
diseodesarrollo
(algoritmoprogra
ma)

OBJETIVOS DE APRENDIZAJE
3.
4. .
CONTENIDOS
2.
La etapa de desarrollo implica la escritura de programas a partir de los
algoritmos y de las interfaces diseados. Sin embargo, se debe enfatizar
que no existe una traduccin directa del diseo al desarrollo debido a las
caractersticas particulares de los lenguajes (algortmico y de alto nivel) y
a los requerimientos de hardware y software del programa.
No obstante lo anterior, es conveniente tener presente la equivalencia de
un lenguaje a otro y del algoritmo al programa. El propsito de esta
seccin es presentar tal equivalencia y sugerir algunas ideas para pasar
del diseo al desarrollo.
Diseo Desarrollo
Ejecutor
Es Imaginario o ideal Es real y consta de: computadora+Sistema
operativo+bibliotecas
El lenguaje
Flujograma

Smalltalk
El alfabeto
1. Abecedario
2. Dgitos
3. Smbolos especiales (no existe una lista
exhaustiva)
4. Smbolos grficos

1. Abecedario
Dgitos
2. Smbolos especiales (existe una lista
exhaustiva)
Tipos de datos
1. Nmero







2. Carcter
3. Cadena
4. Lgico
1. Complex
2. Number
a. Integer
b. SmallInteger
c. Float
d. Fraction
Entre otros.

3. Character
4. String
5. Boolean

Literales

Diseo Desarrollo
1. Numricos, por ejemplo:
17
89.14
4/3

2. Carcter, por ejemplo:
2
h



3. Cadena, por ejemplo:
Ana Sofa
67 + 11
1. Numricos, por ejemplo:
17
89.14
4/3

2. Character, por ejemplo:
$2
$h



3. String, por ejemplo:
Ana Sofa
67 + 11

4. Array, por ejemplo:
#(12 34 21 56)
#(q h m)

5. Symbol, por ejemplo:
#antecedente

Identificadores
1. Deben iniciar con una letra
2. Pueden contener letras, dgitos y _

1. Deben iniciar con una letra (mayscula si es
compartida, minscula si es local)
2. Pueden contener letras, dgitos, _ y otros
smbolos.

Operaciones y sus operadores
1. Numricos (producen valores numricos):
Adicin: +
Substraccin: -
Multiplicacin:
Divisin: /

1. Numrico (Integer, Float, Fraction y
Complex):
Adicin: +
Substraccin: -
Multiplicacin: *
Divisin: /
Cociente: //
Residuo: \\

2. Relacionales (producen valores lgicos):
Igual que: =
Menor que: <
Mayor que: >
Menor o igual que:
Mayor o igual que:
Distinto de:

2. Relacionales (producen valores Boolean):
Igual que: =
Menor que: <
Mayor que: >
Menor o igual que: <=
Mayor o igual que: >=
Distinto de: ~=

Diseo Desarrollo
3. Cadena
Concatenacin: +
Longitud: Lon

3. String
Concatenacin: ,

4. Lgicos (producen valores lgicos):
Negacin: No
Conjuncin: Y
Disyuncin: O
4. Boolean (producen valores Boolean)
Negacin: not
Conjuncin: &
Disyuncin: |
Otros

Expresiones
1. Numricas
Variables o literales de tipo numrico.
Resultan de operaciones entre
variables y/o literales numricos.
Para evaluar la expresin, son vlidas
las reglas de prioridad de las
operaciones aritmticas

1. Numrico (Integer, Float, SmallInteger,
Complex):
Variables o literales tipo Integer, Float,
SmallInteger o Complex.
Resultan de operaciones entre variables
y/o literales numricos.
Para evaluar la expresin, se inicia con
las operaciones que estn a la izquierda.
2. Cadena
Variables o literales de tipo cadena.
Resultan de operaciones entre
variables y/o literales de cadena.
Es vlido el orden ascendente del
alfabeto en el cual todas las
maysculas son menores que las
minsculas, a es menor que z y los
dgitos son menores que las letras.
2. String
Resultan de operaciones entre variables
y/o literales de String.
Es vlido el orden ascendente del
alfabeto en el cual todas las maysculas
son menores que las minsculas, a es
menor que z y los dgitos son menores
que las letras.
3. Lgicas
Variables o literales de tipo lgico.
Resultan de operaciones lgicas entre
variables y/o literales lgicos.
Resultan de operaciones relacionales
entre variables y/o literales de un
mismo tipo.
3. Boolean
Variables o identificadores de tipo
Boolean.
Resultan de operaciones boolean entre
variables y/o literales boolean.
Resultan de operaciones relacionales
entre variables y/o literales de un mismo
tipo.
4. Carcter
Variables o literales de tipo carcter.
Resultan de algunas operaciones sobre
cadenas.
4. Carcter
Variables o literales de tipo character.
Resultan de algunas operaciones sobre
string.

Sentencias
1. Entrada
iv
1
, iv
2
, , iv
n

1. Entrada
<iv>:=FillInTheBlankMorph request:
<texto>.


Diseo Desarrollo

2. Asignacin
iv
1
=e
1
iv
2
=e
2

iv
n
=e
n

2. Asignacin
<iv>:=e.

3. Decisin
el
Si
No

3. Decisin
<el>
ifTrue:[
<sentencias>
]
ifFalse:[
<sentencias>
].

el
Si
No

<el>
ifTrue:[
<sentencias>.
].

Diseo Desarrollo
4. Repeticin
n 0
el
Si
No


4. Repeticin
n 0

[<el>]
whileTrue:[
<sentencias>.
].

n 1, n conocido o desconocido
el Si
No

n 1, n desconocido
no tiene equivalente, se debe traducir
mediante whileTrue haciendo verdadera la
expresin lgica inicial

n 1, n conocido
<valor inicial> to: <valor final>
do:[:<contador>
<sentencias>.
].

<n> timesRepeat: [
<sentencias>.
].

5. Salida
e1, , en

5. Salida
Transcript show: <e>.

Algoritmo
<nombre>
{<descripcin>}
<flujograma>
<nombre>
<descripcin>

| v1, , vn |

v1:=<tipo de dato>.

vn:=<tipo de dato>.

<sentencias>.

RaicesEcuacionCuadratica
{Encontrar las races reales de una ecuacin de grado dos con coeficientes reales
El coeficiente principal: a
El coeficiente del trmino medio: b
El trmino independiente: c
El discriminante: d
Una raz: x1
Otra raz: x2
resp toma el valor S si se desea encontrar las races de una ecuacin cuadrtica o N en caso contrario}
Inicio
a, b, c
d=b*b-4*a*c
a<>0 Si
d<0
No tiene races
reales
Si
d=0 N0
x1=-b/2a
Si
Multiplicidad dos
x1
x1=(-b+sqrt(d))/2a
x2=(-b-sqrt(d))/2a
No
x1,x2
No es ecuacin de
grado dos
No
Fin
Resp
Resp=S
Si
Resp
No


"RaizEcuacinCuadrtica. Este programa recibe los coeficientes de una ecuacin de grado dos ordenada de mayor a menor
a es el coeficiente principal
b es el coeficiente del trmino medio
c es el coeficiente independiente
d es el discriminante
x1 es una raz
x2 es una raz
resp toma el valor 'S' si desea continuar"

|a b c d x1 x2 resp|
a := Float.
b := Float.
c := Float.
d := Float.
x1 := Float.
x2 := Float.
resp:=char.

Transcript open.

resp := (FillInTheBlankMorph request: 'Este programa encuentra las races reales de una ecuacin cuadrtica Desea continuar?
(S/N)').
[(resp='s') | (resp='S')]
whileTrue:[
Transcript clear.
a := (FillInTheBlankMorph request: 'Ingrese el coeficiente principal') asNumber.
b := (FillInTheBlankMorph request: 'Ingrese el coeficiente medio') asNumber.
c := (FillInTheBlankMorph request: 'Ingrese el coeficiente independiente') asNumber.
a~=0
ifTrue: [ d := b*b-(4*a*c).
d<0
ifTrue:[ Transcript show: 'La ecuacin no tiene races reales'. ]
ifFalse:[ d=0
ifTrue:[ x1:= (-1)*b/(2*a).
Transcript show: (x1 asString), ' es raz de multiplicidad dos'.
]
ifFalse:[ x1:= ((-1)*b+d sqrt)/(2*a).
x2:= ((-1)*b- d sqrt)/(2*a).
Transcript show: 'Las races son: ';
cr;
show: 'x1= ';
show: x1;
cr;
show: 'x2= ', (x2 asString).
]
]
]
ifFalse:[ Transcript show: 'No ingres una ecuacin cuadrtica. El coeficiente principal debe ser distinto de cero'.
].
resp := (FillInTheBlankMorph request: 'Desea resolver otra ecuacin de grado dos? (S/N)').
].


Bibliografa
Black, A., Ducasse, S., Nierstrasz, O., Pollet, D., Cassou, D., & Denker,
M. (2009). Squeak by Example. SquareBracketAssociates.org.
Cueto, J. J. (2005). Mtodo de las 6'D. UML-Pseudocdigo-Java. Un
enfque algortmico. Recuperado el 18 de Mayo de 2012, de
Scribe.com: http://es.scribd.com/doc/67379384/MODELO-DE-
LAS-6D%C2%B4S
Ramirez, A., Vanpeperstraete, P., Rueckert, A., Bennett, J., Tolke, L., &
van der Wulp, M. (2011). Tigris.org. Recuperado el 18 de Mayo
de 2012, de http://argouml.tigris.org/
Schmuller, J. (2001). Aprendiendo UML en 24 horas. Prentice Hall.
Sethi, R. (1991). Lenguajes de Programacin. Wilmington: Addison
Wesley.
Watt, D. A. (1990). Programming Language Concepts And Paradigms.
London: Prentice Hall.
Gmez, D. (2006). Smalltalk. Edit Lin Editorial S. L.


Sitios web
http://expo.itch.edu.mx/view.php?f=prog_22#page5
http://es.wikipedia.org/wiki/Smalltalk
http://www.inf.ufsc.br/poo/smalltalk/ibm/tutorial/chap4.html
Software en lnea para crear diagramas UML
http://www.gliffy.com/uses/uml-software/
http://creately.com/Draw-UML-and-Class-Diagrams-Online
Ejercicios resueltos
Diagrama de clases
http://es.scribd.com/doc/72454990/Ejercicios-Resueltos-de-
DIAGRAMAS-DE-CLASES-UML
Problema completo resuelto, pero complejo
http://msdn.microsoft.com/es-es/library/bb972214.aspx
me gusta, incluye software
http://www.enterpriseanalyst.net/download/EAn_Paso_a_paso.pdf
Ejercicios varios
http://www.lix.polytechnique.fr/~liberti/teaching/isic/inf561-
07/umlexsol.pdf
http://edn.embarcadero.com/article/31863
Ejercicios
http://www.drake.edu/mathcs/rieck/Spring2004/cs195/ch2sol.pdf
ATM completo
http://www.math-cs.gordon.edu/courses/cs211/ATMExample/
Algunos recursos
Presenta, Introduccin a la programacin orientada a objetos 1, la teora
resumida de el UML con tipos de diagramas y luego desarrolla una
solucin siguiendo el ciclo de vida, creo que no tiene un problema
totalmente resuelto.
http://profejc.wordpress.com/informatica/analisis-y-diseno-de-
aplicaciones/
Ejercicios de matemticas
http://es.scribd.com/doc/51260983/Cuaderno-de-Algoritmos
Operaciones con complejos (parcial)
http://www.paginasprodigy.com.mx/miranda333/POO/PDF/LPOO-
Ejer2.pdf
http://books.openlibra.com/pdf/Intro_UML.pdf
Sitios de inters:
Video introductorio a la POO
http://www.youtube.com/watch?v=WdayImP8vnY&feature=related
Ejercicios propuestos
http://www.infor.uva.es/~felix/datos/prii/ejercicios_oo.pdf
http://www.fdi.ucm.es/profesor/jpavon/poo/EjerciciosClasesYObjetos.pd
f
Manual en espaol de ArgoUML
http://argouml-stats.tigris.org/documentation-es/pdf-
0.28/manual/manual.pdf
Manual de UML
http://www.mundomanuales.com/manuales/Aprendiendo%20UML%20e
n%2024%20horas.zip

Squeak en el aula:
http://www.ite.educacion.es/formacion/materiales/81/cd/apendices/apend
ice_01/apendice_01.htm

Das könnte Ihnen auch gefallen