Member-only story
Liskov Substitution Prensibi Nedir ? (Kod örneğiyle) — SOLID
Kodlarımızda herhangi bir değişiklik yapmaya gerek duymadan alt sınıfları, türedikleri(üst) sınıfların yerine kullanabilmeliyiz.
Türeyen sınıf yani alt sınıflar ana(üst) sınıfın tüm özelliklerini ve metotlarını aynı işlevi gösterecek şekilde kullanabilme ve kendine ait yeni özellikler barındırabilmelidir.
“Alt seviye sınıflardan oluşan nesnelerin/sınıfların, ana(üst) sınıfın nesneleri ile yer değiştirdikleri zaman, aynı davranışı sergilemesi gerekmektedir. Türetilen sınıflar, türeyen sınıfların tüm özelliklerini kullanabilmelidir.”
Varolan ve LSP’ye uymayan Kare ve dikdörtgen örneğiyle başlayalım.
LSP’ye uymayan yapı örneği;
public class Square extends Rectangle { @Override
public void setWidth(int width) {
super.setWidth(width);
super.setHeight(width);
} @Override
public void setHeight(int height) {
super.setHeight(height);
super.setWidth(height);
}
}
Matematiksel olarak bir kareyi de bir dikdörtgen olarak kabul edebiliriz. Ama yazılım dünyasında da böyle kabul etmeli miydik ?
@Test
public void testRectangleArea() throws Exception {
Rectangle rectangle = new Square()…