[Php-objetos] Sobre atributo y arrays
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Jue Mar 5 02:27:01 ARST 2009
Hola Gerardo,
El mié, 04-03-2009 a las 21:42 -0300, Gerardo Valiani escribió:
> El mar, 03-03-2009 a las 21:23 -0300, Gerardo Valiani
> escribió:
>
> > Leo, estoy empezando a diseñas el sistema. Y obviamente, ya
> tengo
> > dudas.
> >
> > Estoy perdido. Cuando un atributo puede tener varios
> valores,
> > supongamos 10, que hacemos? Hacemos un array? o que?
>
>
> Cómo que un atributo 10 valores?
> Dame un ejemplo (o directamente el caso) porque así, en
> el aire, suena
> a que eso es otro objeto... o una jerarquía de clases.
>
> Si ves "arrays" no estás pensando en objetos...
>
> Un personaje tiene una clase (como el oficio del personaje), como en
> el otro mail, supongamos: Guerrero. La clase determina el valor que
> posee el personaje para atacar.
> Por ejemplo:
> nivel 1, el ataque es de 1
> nivel 2, ataque 2
> nivel 10, ataque 10 y 5 (porque ataca dos veces por turno)
> nivel 16, ataque 16, 11, 6, 1 (porque ataca 4 veces por turno)
>
> Pero estos valores de ataque no son iguales en todas las clases (mago,
> monje, etc). Entonces estos valores cambian segun la clase y segun
> otro atributo que es el nivel.
>
> Como se diseñaria esto? Se me complico.
Como no conozco el requerimiento entero, no puedo opinar con autoridad,
pero a priori parece un típico caso de una jerarquía de clases de
personajes, que por composición tiene jerarquías de clases que conforman
sus atributos, y que un Builder se encarga de la complejidad de
construir el personaje según su clase.
Yo creo que el comportamiento "Ataque" se modela en una clase y todos
los que pueden atacar lo usan por composición. el Builder sabrá que
valores ponerles dependiendo del tipo de personaje.
Tal vez tu enfoque se complica porque estás pensando que "atacar" es un
método de "Personaje", y no sabés de dónde sacar los valores. Pero que
tal si "atacar" es realmente un método de Guerrero que _es_un_
Personaje, y delega la responsabilidad de resolver el ataque en un
objeto más complejo que es el Ataque?
Y qué pasa si un personaje no puede "atacar"? Lo resolvés con
polimorifismo haciendo que exista un tipo de Ataque que no haga nada.
Entonces cuando enviás el mensaje "atacar", se lo podés enviar a todos
los Personajes, pero solo harán algo los que sí tengan que hacer algo.
> Saludos!
=mente!
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Pegasus Tech Supply
Tel: (+54)(+223) 471-2880
La Salle 1131 - Mar del Plata - Argentina
http://www.pegasusnet.com.ar / http://blog.pegasusnet.com.ar
http://www.prometeustech.com.ar / http://www.grupopegasus.com
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-objetos