다른 패러다임 에 찬성하여 OOP의 단점에 대한 scathing 기사를 읽으면서 너무 많은 결함을 찾을 수없는 예를 들었습니다.
저자의 주장에 개방적이기를 원하지만 이론적으로 그 요점을 이해할 수 있지만, 한 가지 예는 특히 FP 언어에서 어떻게 더 잘 구현되는지 상상하기가 어렵습니다.
// Consider the case where “SimpleProductManager” is a child of
// “ProductManager”:
public class SimpleProductManager implements ProductManager {
private List products;
public List getProducts() {
return products;
}
public void increasePrice(int percentage) {
if (products != null) {
for (Product product : products) {
double newPrice = product.getPrice().doubleValue() *
(100 + percentage)/100;
product.setPrice(newPrice);
}
}
}
public void setProducts(List products) {
this.products = products;
}
}
// There are 3 behaviors here:
getProducts()
increasePrice()
setProducts()
// Is there any rational reason why these 3 behaviors should be linked to
// the fact that in my data hierarchy I want “SimpleProductManager” to be
// a child of “ProductManager”? I can not think of any. I do not want the
// behavior of my code linked together with my definition of my data-type
// hierarchy, and yet in OOP I have no choice: all methods must go inside
// of a class, and the class declaration is also where I declare my
// data-type hierarchy:
public class SimpleProductManager implements ProductManager
// This is a disaster.
필자는 "이 3 가지 행동이 데이터 계층에 연결되어야하는 합리적인 이유가 있는가?"에 대한 필자의 주장에 대한 반박을 찾고 있지 않다.
내가 구체적으로 묻는 것은이 예제가 FP 언어 (이론적으로 실제 코드가 아닌)로 모델링 / 프로그래밍되는 방법입니다.