-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
4장 설계 품질과 트레이드오프 #17
Comments
캡슐화를 잘 해야지 객체지향을 잘 하는 것이다.
102p public class DiscountCondition {
private DiscountConditionType type;
private int sequence;
private DayOfWeek dayOfWeek;
private LocalTime startTime;
private LocalTime endTime;
public DiscountConditionType getType() {
return type;
}
}
// 캡슐화의 원칙에 따라서 클래스 외부에 노출하면 안된다.
// get 메서드를 추가한다.
public class DiscountCondition {
public DiscountConditionType getType() {
return type;
}
}
kotlin에서 이렇게 주로 만드는데 얘네는 캡슐화가 안된 것들이라고 봐야하나?class DiscountCondition(
val discountConditionType: DiscountConditionType,
val sequence: Int,
val dayOfWeek: DayOfWeek,
val startTime: LocalTime,
val endTime: LocalTime,
)
private으로 선언한 객체는 아니더라도 디컴파일 해보면 위의 java와 같은 구현이라고 생각이된다. |
위 내용에서 이어서 읽고 있는데 117p에 이런 내용이 있네
이 책은 뭔가 읽다가 |
4장 마지막 단원에서 아래 문장이 제일 와닿는거 같네
나는 항상 어떤 class를 만들 때
이런 생각의 흐름으로 만들었는데 정반대로 생각을 해야지 캡슐화가 지켜진다는게 맞는 말인거 같다는 생각이 들어서 이 규칙을 잘 지켜봐야겠다는 생각이 들어 |
코틀린이라서 조금 더 애매하게 느껴지는 부분들이 존재한다고는 생각해 이상적인 객체지향 패러다임을 생각해보자면, 멤버 변수들이 밖으로 노출되는 일이 전혀 없이 오롯이 본인이 책임져야 할 데이터는 본인만 컨트롤 해야한다. 계속 말했듯이 객체는 데이터를 보관하기만 하는 존재가 아니라 특정한 책임을 갖고 역할을 하기 때문이지. 어떤 예외상황이 일어날지는 모르겠지만 협력을 할때 있어서, 멤버 전달만을 위한 기능은 없어야 하지않을까? |
그래서 public으로 했을 때 캡슐화가 됐다고 생각하는가? 에 대한 나의 생각은 |
결합도에 대해서 간과 했던 부분을 확인함String, ArrayList 또한 클래스인데 여기에 대해서는 결합도를 생각해 본 적이 없었네 캡슐화란 무엇인가에 대해서 확실하게 와닿은 단원단순히 데이터의 가시성을 가린것이 캡슐화가 아니며 그 예로든
이 부분을 보며 조금 더 캡슐화에 대해 좀 더 이해됨 하지만 드는 의문DiscountCondition 에서 type 에 따라 Discount 여부를 판단하기 위한 데이터가 다르게 필요한데 어떤 식으로 추상화할 수 있을까 ? |
No description provided.
The text was updated successfully, but these errors were encountered: