Hola, voy a tratar de ser lo mas general posible.
Supongamos que tengo un objeto #Humano el cual tendrá sus estados de "hambre" y "cansancio" que se ven afectados cuando llamo a los métodos "Correr", "Comer" y "Dormir". Las preguntas son, como declaro estas variables para que afecten a la misma instancia ?
Object subclass: #Humano
instanceVariableNames: ' '
classVariableNames: 'hambre' 'cansancio'
package: '1234'
Si pongo uno solo no tengo problema, pero al poner mas el editor me recomienda juntarlos para que queden asi ' hambrecansancio' y no reconoce nada.
La otra pregunta es: como puedo inicializar estas variables por primera y única vez?
Initialize
hambre := 50.
cansancio = 10.
De esta forma cuando las llamo están como "nil".
Para que esas variables afecten a la instancia deben ser, justamente, variables de instancia y no de clase. Es decir, deben estar en la parte que dice instanceVariableNames. Deben estar separadas por un espacio y solamente debe haber dos apóstrofes: uno al principio y otro después de la última variable:
Object subclass: #Humano
instanceVariableNames: 'hambre cansancio'
classVariableNames: ''
package: '1234'
La parte de variables de clases por ahora no lo necesitamos y ya lo veremos la próxima semana.
Por otro lado, para poder instanciar tus atributos al principio necesitan estar en un método que se llame initialize escrito así tal cual, todo en minúsculas y no te olvides de que la inicialización de variables es con :=
y no con =
.
Por último, te recomiendo que los nombres de los métodos comiencen con letra minúscula. Los nombres que comienzan con mayúscula los solemos dejar para los nombres de clases únicamente.
Saludos,
Tomás