Práctica de Objetos
Con el método
del objeto Blinker no hay razón actual para hacerlo privado fuera de examinar
Blink
que sucede cuando un objeto padre intenta llamar otro método privado de objeto.
Cambie el método
Intente correr la copia modificada de CogObjectExample y observe los mensajes de error.
Esto demuestra que el método
Corra la copia no modificada (la cual solo llama al método publico
privado
) y verifique que aun trabaja apropiadamente. Esto demuestra como el método
Blink
privado
aun puede ser accesado del mismo objeto (Blinker) por su método
Blink
Ejemplo de Múltiples Objetos
Los objetos Spin que inician y administran uno o más cogs para un proceso dado son escritos
típicamente para una sola copia del proceso. Si la aplicación necesita más de una copia de los
procesos corriendo actualmente simplemente se puede declarar más de una copia del objeto. Por
ejemplo el chip Propeller puede controlar una pantalla de TV con un cog, pero cada objeto TV solo
controla una pantalla de TV. Si la aplicación necesita controlar más de una TV entonces se declaran
más de una copia del objeto TV.
¿Copias múltiples de Objetos? No hay Problema!
No hay penalizaciones para el espacio de código por declarar múltiples objetos. El compilador de la
herramienta Propeller los optimiza así que solo se ejecuta el código una vez por todas las copias de los
objetos. La única penalización para declarar más de una copia del mismo objeto es que habrá más de una
copia de variables globales que declara el objeto, un paquete por cada objeto. Como más o menos se
necesitan el mismo número de variables extras por una aplicación dada para hacer el mismo trabajo sin
objetos, realmente no es una penalización.
El objeto MultiCogObjectExample demuestra cómo se pueden iniciar múltiples copias de un objeto
que administra un proceso con un arreglo de objeto. Al igual que las variables, los objetos pueden
declararse como arreglos. En este ejemplo seis copias del objeto Bliker se declaran en el bloque
con
Blinker[6] : Blinker
que los arreglos de variables con
MultiCogObjectExample un ciclo
... llama sucesivamente cada método
Blinker[index].Start
El objeto MultiCogObjectExample es funcionalmente equivalente al objeto CogStartStopWithButton
de la practica Métodos y Cogs. Cuando el programa corre cada vez que se presiona/suelta el boton en
P23 inicia un nuevo Cog que hace parpadear sucesivamente los LEDs (conectados de P4 a P9) a
rangos determinados por la duración del tiempo que se presiona el botón. De la primera a la sexta vez
que se presiona el botón inicia el proceso de parpadeo de LED en nuevos cogs, de la séptima a la
decimo segunda detiene cada cog en sentido contrario al que se arrancaron.
Cargue el objeto MultiCogObjectExample.spin en el chip Propeller
Presione y suelte el botón P23 seis veces sucesivas (cada una con diferente duración) y
verifique que los seis cogs se iniciaron correctamente.
Presione y suelte el botón en P23 seis veces más y verifique que cada proceso de parpadeo se
detiene en orden inverso.
Pagina 96 · Kit Educativo de Prácticas Propeller: Fundamentos
del objeto Blinker de
Blink
no puede accesarse por otro objeto ya que es privado.
Blink
. Las seis copias de Blinker pueden indexarse también de la misma forma
Blinker[0], Blinker[1]
incrementa una variable
repeat
a
.
PUB
PRI
, y así sucesivamente hasta
del objeto.
Start
, no al método
Start
.
Start
OBJ
. En
Blinker[5]
, por lo que
index