Hola Pedro,

Las subclases de Moviclip son muy interesantes a la hora de aplicar los
principios OOP a clases graficas. Las basicas: Herencia, encapsulacion y
polimorfismo.

Siguiendo tu ejemplo del matamarcianos:

Me imagino que un matamarcianos basico va a contar con una serie de
marcianos diferentes, una nave "de los buenos" que se va cepillando
marcianos y una serie de disparos que lanzan unos y otros.

Herencia:
Yo definiria, asi ,a bote pronto. Una subclase de MovieClip abstracta, vamos
a llamarla NaveBase que tubiera los metodos b�sicos de movimiento,
colocacion y destruccion del objeto. De esta extenderia (subclasearia) una
clase tambi�n abstracta, MarcianoBase, con comportamientos comunes a todos
los marcianos, como la IA, y de esta, ya por ultimo, sacaria las clases
necesarias para los distintos enemigos: MarcianoPeon, MarcianoChungo y
MarcianoJefe, estas si que podrian estar vinculadas con elementos de la
biblioteca. Estas 3 compartirian mucha funcionalidad que viene dada por las
clases base (NaveBase y MarcianoBase) con lo que ya estarias ganando en
cuanto a reutilizacion de codigo. En el caso de escribir las funciones
directamente sobre la linea de tiempo probablemente tendrias que duplicar
gran parte del codigo de una a otra. Un cambio en una supondria la
modificacion del resto. Si necesitas nuevos tipos de marcianos ya no
comienzas de 0 sino que tienes una base de codigo sobre la que partir
(extender). Sin contar que podrias utilizar el NaveBase tambi�n para
extender la clase NaveHeroe.

Encapsulacion:
Se define como encapsulacion la capacidad de una clase de abstraer el uso de
la implementacion. Es decir, las demas clases u objetos que utilizan otras
clases u objetos solo conocen el funcionamiento de este a trav�s de una
serie de metodos/propiedades publicos. Esto permite poder reescribir la
clase entera (la implementacion) que si no rompe la norma de la
encapsulacion (mantiene su interface con las demas clases) el resto del
codigo no necesitar�a modificarse. Si tienes que cambiar ya sea por
optimizacion, por encontrar algun bug, o porque el cliente simplemente te lo
pide la forma en la que se mueven las naves, una refactorizacion (cambio del
codigo interno sin cambiar el interface) de la clase NaveBase valdr�a.

Polimorfismo:
Polimorfismo se puede definir como la capacidad de diferentes clases de
responder a un mismo mensaje. Pongamos que estas programando la clase
EjercitoMarcianos que se encarga de colocar marcianos de diferentes tipos en
diferentes lugares dependiendo del nivel en el que se encuentre el juego.
Esta clase podria utilizar un metodo de la clase NaveBase (o MarcianoBase)
para llamar al metodo colocarEn() o aumentarIA() independientemente de si es
un MarcianoPeon, MarcianoChungo o MarcianoJefe ya que utilizan una interface
compartida gracias a la herencia y todos ellos en ciertos casos pueden ser
intercambiables. Por ejemplo en el nivel 1 colocar 10 MarcianoPeon y 1
MarcianoChungo. Pero en el nivel 10 coloar 10 MarcianoChungo y 1
MarcianoPeon.

Basicamente el POO es superior a la programacion procedural que tu comentas
en que la complejidad que puede alcanzar un programa procedural puede hacer
casi imposible su mantenimiento o actualizacion. Basicamente porque crea
varias unidades datos/gestion de datos que tienen poco acoplamiento entre
si. Es decir, el funcinamiento de uno depende muy poco del funcionamiento
del otro.

Espero haberte iluminado en este momento de oscuridad y perdida de f�,
hermano mio xDD

un saludo

P.D: El hacer subclases de MC no implica tener que usar attachMovie, puedes
tenerlos colocados directamente sobre el escenario como los mc normales.

Joseba Alonso
www.sidedev.net
www.5dms.com



----- Original Message ----- 
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, September 08, 2004 1:13 PM
Subject: [ASNativos] movieclips subclases


> mi duda existencial del dia... realmente sirve para algo hacer subclases
de
> movieclips? lo he estado mirando y realmente no le acabo de  pillar la
gracia.
> Supongamos que estamos haciendo el clasico matamarcianos... y decido que
los
> marcianos sean una clase... si hago una subclase de movieclip, tengo que
hacer
> toda la pelotera esta de crear el simbolo, atachar el la clase etc, etc...
y
> luego de cualquier modo tendre que usar attachmovie o similar... por
> composicion paso por que necesito que tenga todo lo que tiene un movieclip
;P
> total que mirandolo pienso... no sera mejor meterle el codigo dentro del
> movieclip y dejarme de tonterias (mas intuitivo) o ya puestos hacer una
clase
> que sea el maestro de marionetas de los marcianos y se encargue de
dirigirlos
> a todos extrayendo los mc que necesite de la libreria.
>
> Pues ya esta, toma paranoia ma�anera! xD
>
> pd: a veces esto del poo me parece una pijada sin sentido xDD otras no
>
>
> ----------------------------------
> Lista ASNativos:[EMAIL PROTECTED]
> http://www.5dms.com/listas
> ----------------------------------

----------------------------------
Lista ASNativos:[EMAIL PROTECTED]
http://www.5dms.com/listas
----------------------------------

Responder a