Il y a une fois, j'ai posé une question sur Stack Overflow sur l'héritage.
J'ai dit que je conçois un moteur d'échecs de façon OOP. J'hérite donc tous mes morceaux de la classe abstraite Piece mais l'héritage continue. Permettez-moi de montrer par code
public abstract class Piece
{
public void MakeMove();
public void TakeBackMove();
}
public abstract class Pawn: Piece {}
public class WhitePawn :Pawn {}
public class BlackPawn:Pawn {}
Les programmeurs ont trouvé ma conception un peu trop technique et ont suggéré de supprimer les classes de pièces colorées et de conserver la couleur des pièces en tant que membre de la propriété, comme ci-dessous.
public abstract class Piece
{
public Color Color { get; set; }
public abstract void MakeMove();
public abstract void TakeBackMove();
}
Ainsi, Piece peut connaître sa couleur. Après la mise en œuvre, j'ai vu ma mise en œuvre comme ci-dessous.
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
{
}
}
}
Maintenant, je vois que la propriété keep color provoque des instructions if dans les implémentations. Cela me fait sentir que nous avons besoin de pièces de couleur spécifiques dans la hiérarchie d'héritage.
Dans un tel cas, auriez-vous des classes comme WhitePawn, BlackPawn ou iriez-vous à la conception en conservant la propriété Color?
Sans avoir vu un tel problème, comment voudriez-vous commencer la conception? Conserver la propriété Couleur ou avoir une solution d'héritage?
Edit: je veux spécifier que mon exemple peut ne pas correspondre complètement à l'exemple de la vie réelle. Donc, avant d'essayer de deviner les détails de la mise en œuvre, concentrez-vous simplement sur la question.
En fait, je demande simplement si l'utilisation de la propriété Color entraînera une meilleure utilisation de l'héritage par les instructions?