Sekali waktu yang lalu saya mengajukan pertanyaan tentang Stack Overflow tentang warisan.
Saya telah mengatakan saya merancang mesin catur dalam mode OOP. Jadi saya mewarisi semua karya saya dari kelas abstrak Piece tetapi warisan tetap berjalan. Biarkan saya tunjukkan dengan kode
public abstract class Piece
{
public void MakeMove();
public void TakeBackMove();
}
public abstract class Pawn: Piece {}
public class WhitePawn :Pawn {}
public class BlackPawn:Pawn {}
Programmer telah menemukan desain saya sedikit di atas teknik dan menyarankan untuk menghapus kelas potongan berwarna dan tahan warna sepotong sebagai anggota properti seperti di bawah ini.
public abstract class Piece
{
public Color Color { get; set; }
public abstract void MakeMove();
public abstract void TakeBackMove();
}
Dengan cara ini Piece bisa tahu warnanya. Setelah implementasi saya melihat implementasi saya berjalan seperti di bawah ini.
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
{
}
}
}
Sekarang saya melihat bahwa properti color keep menyebabkan pernyataan if dalam implementasi. Itu membuat saya merasa kami membutuhkan potongan warna khusus dalam hierarki warisan.
Dalam kasus seperti itu, apakah Anda memiliki kelas seperti WhitePawn, BlackPawn atau Anda akan mendesain dengan mempertahankan properti Color?
Tanpa melihat masalah seperti itu bagaimana Anda ingin memulai desain? Menyimpan properti Color atau memiliki solusi pewarisan?
Sunting: Saya ingin menentukan bahwa contoh saya mungkin tidak sepenuhnya cocok dengan contoh kehidupan nyata. Jadi sebelum mencoba menebak detail implementasi, konsentrasikan saja pertanyaannya.
Saya sebenarnya hanya bertanya apakah menggunakan properti Warna akan menyebabkan apakah pernyataan lebih baik untuk menggunakan warisan?