[C con Clase] Buenos días a tod en s........ Alguien controla algo de java ???

Miguel Ángel Torres Fernández-Píñar miguelangeltorresfp en gmail.com
Dom Abr 27 18:55:14 CEST 2014


Gracias a los tres por vuestras aportaciones.

Sí, al final estoy usando "programación pato" mezclado con algo de
herencia. Qué fácil es hacer todo esto cuando usas un motor como Unity y
trabajas con componentes.
Trabajando por componentes sí puedes por ejemplo tener una celda que sea de
tipo tipo Dungeon y a la vez por ejemplo de tipo Triangular.
Pero veo que eso no puedo o no sé conseguirlo tal cual en java. Realmente
todo esto tan solo para una práctica de clase, pero creo que es importante
aprovechar estas ocasiones para aprender a estructura código en condiciones.

Lo que al final tengo es una clase padre Map de la que heredan los dos
tipos de mapa, Dungeon y CellularAutomaton. En los diferentes métodos se
diferencia cuando las celdas son triangulares, cuadradas o hexagonales.
Y luego tengo una clase padre Cell, de la que heredan DungeonCell y
CAutomatonCell. Y también en los diferentes métodos de estas clases se va
diferenciando cuando las celdas son triangulares, cuadradas o hexagonales.

Bueno, eso, muchas gracias a todos y a seguir aprendiendo.

Saludos !!!!


El 27 de abril de 2014, 16:27, Davidson, Steven <srd4121 en njit.edu> escribió:

> Hola Miguel Ángel,
>
> 2014-04-27 6:18 GMT-04:00 Miguel Ángel Torres Fernández-Píñar <
> miguelangeltorresfp en gmail.com>:
>
> Buenos días.
>>
>> Es que tengo un problema de herencia en java.
>> Algo relativo a herencia múltiple.
>>
>> Tengo una clase padre que es Map.
>>
>> De ella heredan tanto Dungeon como CellularAutomaton.
>>
>> Pero a su vez me gustaría que cada mapa pudiera tener diferentes tipos de
>> celdas, triangulares, cuadradas y hexagonales.
>>
>> ¿ Cómo podría organizar esto para no tener que implementar varias veces
>> por ejemplo la clase TriangularCell ???
>>
>> Supongo que en C++ es relativamente fácil porque existe herencia múltiple
>> con lo que un mapa podría heredar por ejemplo de Dungeon y a su vez de
>> TriangularCell.
>>
>
> Bueno, Francisco se me ha adelantado con el tema de las interfaces en
> Java. Sin embargo, quiero agregar al tema del diseño de clases.
>
> Por lo que tengo entendido, tienes diferentes tipos de mapas que a su vez
> describen diferentes tipos de celdas. Si es así, creo que deberías usar
> herencia y composición. Por ejemplo,
>
> public class Cell
> {
>   ...
> }
>
> public class Map
> {
>   private Cell cell;
>   ...
> }
>
> Y luego, puedes definir los diferentes "tipos" de cada concepto:
>
> public class TriangularCell extends Cell
> {
>   ...
> }
>
> public class RectangularCell extends Cell
> {
>   ...
> }
>
> public class HexagonalCell extends Cell
> {
>   ...
> }
>
> public class Dungeon extends Map
> {
>   ...
> }
>
> public class CellularAutomaton extends Map
> {
>   ...
> }
>
>
> La otra forma es usando genéricos (plantillas en C++). Por ejemplo,
>
> public class Map<T>
> {
>   private T cell;
>   ...
> }
>
> Y así podemos crear varias jerarquías de clases relacionadas por un tipo
> de celda. Por ejemplo,
>
> Map<RectangularCell> rectMap;
> Map<HexagonalCell> hexMap;
> ...
>
>
> Por último, quizá te sea útil usar "programación pato" en la que cada
> clase define el "tipo". Por ejemplo,
>
> public class Map
> {
>   private Dungeon dungeon;
>   private CellularAutomaton ca;
>
>   public Dungeon getDungeon()  { ... }
>   public CellularAutomaton getCellularAutomaton()  { ... }
>   ...
> }
>
> Si internamente el objeto 'Map' es una mazmorra, entonces 'getDungeon()'
> retornará un objeto 'Dungeon' mientras que 'getCellularAutomaton()'
> retornaría 'null'. Asimismo, si el objeto representa un autómata celular,
> entonces 'getCellularAutomaton()' retornaría tal objeto mientras
> que 'getDungeon()' retornaría 'null'.
>
>
> Espero que todo esto te sirva.
>
> Steven
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140427/5f706e8c/attachment.html>


Más información sobre la lista de distribución Cconclase