Hace una vez hice una pregunta en Stack Overflow sobre la herencia.
He dicho que diseño el motor de ajedrez en la moda OOP. Así que heredo todas mis piezas de la clase abstracta Pieza, pero la herencia aún continúa. Déjame mostrarte por código
public abstract class Piece
{
public void MakeMove();
public void TakeBackMove();
}
public abstract class Pawn: Piece {}
public class WhitePawn :Pawn {}
public class BlackPawn:Pawn {}
A los programadores se les ha encontrado un poco mi diseño sobre ingeniería y me sugirieron eliminar las clases de piezas de color y mantener el color de la pieza como miembro de la propiedad como a continuación.
public abstract class Piece
{
public Color Color { get; set; }
public abstract void MakeMove();
public abstract void TakeBackMove();
}
De esta manera, Piece puede conocer su color. Después de la implementación, he visto que mi implementación es la siguiente.
public abstract class Pawn: Piece
{
public override void MakeMove()
{
if (this.Color == Color.White)
{
}
else
{
}
}
public override void TakeBackMove()
{
if (this.Color == Color.White)
{
}
else
{
}
}
}
Ahora veo que mantienen la propiedad de color causando sentencias if en implementaciones. Me hace sentir que necesitamos piezas de color específicas en la jerarquía de herencia.
En tal caso, ¿tendría clases como WhitePawn, BlackPawn o iría a diseñar manteniendo la propiedad Color?
Sin ver tal problema, ¿cómo le gustaría comenzar a diseñar? ¿Mantener la propiedad Color o tener una solución de herencia?
Editar: Quiero especificar que mi ejemplo puede no coincidir completamente con el ejemplo de la vida real. Entonces, antes de tratar de adivinar los detalles de implementación, solo concentre la pregunta.
¿Realmente solo pregunto si usar la propiedad Color causará si las declaraciones son mejores para usar la herencia?