Como parte del trabjo de este año, comenzaremos un pequeño proyecto.
Lo denominaremos PrimerEjercicioParaIndividuosTodoObjeto o Pepito.
Asuimiremos conocimientos mínimos de Smalltalk/Squeak.y un pensamiento mas "estructurado" que "objeto".
Tambien haber leído el tutorial de IBM o poseer una leve experiencia,
Utilización del Workspace, Browser y Transcript
Queremos realizar un "data entry" sencillo, que nos permita utilizar el Squeak para mantener las fichas de nuestro miembros.
La información que nos interesa es el nombre, dirección, teléfono, fecha de nacimiento, intereses.
Crear una categoría Ejercicicios2002, como se ve anteriormente.
Object subclass: #Ficha
instanceVariableNames: 'nombre direccion telefono fecha intereses '
classVariableNames: ''
poolDictionaries: ''
category: 'Ejercicios2002'
Dentro de esta categoría, crear una clase denominada ficha.
Conviene utilizar algún esquema organizado de categorías de métodos, como se vio en el juego de los animales.
Si nos inspiramos en la categoría morph del Squeak 3.2 vemos lo siguiente:
No
siempre podremos utilizar estas categorías y podemos crear las nuestras,
pero tratemos de ajustarnos a este tipo de vocabulario común.
Podemos utilizar access para el ingreso y recuperación de los valores de las variables de instancia
Utilizando el mismo código del juego de los animales
nombre:unaCadena
Inicializa el nombre del receptor a unaCadena
nombre := unaCadena

Aqui vemos la ejecución de este método..
Pero si remarcamos nombre y lo reemplazamos por email, al ejecutar aparece
Aquí
hacemos una pausa.
Nos ponemos de pie y repetimos cinco veces.
"he conocido a mi mejor amigo, el debugger".
Vemos de la primera línea que nuestro objeto Ficha no comprende el mensaje email.
En este momento nos hemos dado cuenta que no tenemos como guardar email.
Si vamos a la definicion de clase y agregamos email, al aceptar nos sale un mensaje informando que el sistema recompila Ficha.
También debemos agregar jun metodo similar al anterior, en realidad podemos copiar y pegar reemplazando nombre por la variable deeada, en nuestro caso email.
Pero para empezar a entender porqué nuestro "enamoramiento" con Squeak, mejoremos el código para validar que el texto ingresado contenga una arroba @
verificaMail: aString
self halt. "Magia, acá aparecerá nuesto amigo el debugger"
email: aString
self verificaMail: aString. "self significa que el mensaje será
interpretado por la misma clase "
email _ aString
Luego de ejecutar lo que se ve en el workspace, al aparecer nuestro amigo pulsar debug y marcar como se ve en el dibujo

Si todo ha ido bien , el sistema queda en el halt del método verificaMail: aquí podemos ver los contenidos de las variables, como se ve para la cadena ingresada.
Pulsamos Step y se remarcará findString: '@'
Pulsamos Send y podremos seguir el envío del mansaje findString: '@' al objeto aString.
findString: subString
"Answer the index of subString within the receiver, starting at start.
If
the receiver does not contain subString, answer 0."
^ self findString: subString startingAt: 1
Sucesivos Step y Send e ir mirando que valores se van guardando en los distintos objetos
En nuestro caso en error se guardará 7.
Si prosiguieramos con Proceed, haría todos los pasos y no veríamos nada que nos indique si hubo o no error.
Como cuando no encuentra la arroba en error queda un cero, podemos hacer que salga un cartel que diga que no econtró la arroba.
Si cuiando entra al debug, dentro del mismo agregamos el siguiente cócigo y aceptamos,
error = 0
ifTrue: [PopUpMenu inform: 'No encontré una arroba ']
Además le podemos cambiar el contenido al objeto, haciendo lo que no se debe de manera que en el panel quede
aString 'pepitosqueakros.org'
Dentro del debug hacemos Restart. Naturalmente si el texto tiene arroba no sale ningún cartel.
Y vemos como nuestro pobre pepito sobrevive a estas herejías, mostrando correctamente el carterl