Open/Closed Prensibi Nedir ? (Kod örneğiyle) - SiberMega - Basit Yazılım ve Tasarım Eğitimleri

Popüler Yazılar

Post Top Ad

Responsive Ads Here

Post Top Ad

Responsive Ads Here

06/04/2023

Open/Closed Prensibi Nedir ? (Kod örneğiyle)

 Bir sınıf ya da fonksiyon var olan özellikleri korumalı yani davranışını değiştirmiyor olmalı ve yeni özellikler kazanabilmelidir.

Open/Closed Yazılım Prensibi
Open Sınıf için yeni davranışlar eklenebilmesini sağlar. Gereksinimler değiştiğinde, yeni gereksinimlerin karşılanabilmesi için bir sınıfa yeni veya farklı davranışlar eklenebilir olmasıdır.
Closed Bir sınıf temel özelliklerinin değişimi ise mümkün olmamalıdır.

public class Rectangle {
private double length;
private double height;
// getters/setters ...
}
public class AreaService {

public double calculateArea(List<Rectangle>... shapes) {
double area = 0;
for (Rectangle rect : shapes) {
area += (rect.getLength() * rect.getHeight());
}
return area;
}
}
public class Circle {
private double radius;
// getters/setters …
}
public class AreaService {
public double calculateArea(List<Object>... shapes) {
double area = 0;
for (Object shape : shapes) {
if (shape instanceof Rectangle) {
Rectangle rect = (Rectangle) shape;
area += (rect.getLength() * rect.getHeight());
} else if (shape instanceof Circle) {
Circle circle = (Circle) shape;
area += circle.getRadius() * cirlce.getRadius() * Math.PI;
} else {
throw new RuntimeException("Shape not supported");
}
} return area;
}
}
public interface Shape {
double getArea();
}
public class Rectangle implements Shape {
private double length;
private double height;

// getters/setters …
@Override
public double getArea() {
return (length * height);
}
}
public class Circle implements Shape {
private double radius;

// getters/setters …
@Override
public double getArea() {
return (radius * radius * Math.PI);
}
}
public class AreaManager {
public double calculateArea(List<Shape> shapes) {
double area = 0;
for (Shape shape : shapes) {
area += shape.getArea();
}
return area;
}
}

Hiç yorum yok:

Yorum Gönder

Görüş ve Düşüncelerinizi Bizimle Paylaşmayı Unutmayın.

Post Top Ad

Responsive Ads Here