캡슐화 하는 이유에 대해서
클래스 메서드를 사용하는거랑 클래스선언없이 함수를 만들어서 사용하는거랑 어떤 차이가 있나요?
요구사항이 변경됬을 때
클래스선언없이 함수만 사용해도 여러곳의 코드를 일일이 변경하지 않아도 되는 장점이 있다고 생각됩니다.
이게 캡슐화랑 어떤 관련이 있나요?
回答 1
5
말씀하신 것처럼 함수를 사용해도 됩니다. 이게 함수형 프로그래밍에서 접근하는 방식이구요.
여기서 중요한 점은 데이터에 대한 변경 범위를 제어한다는 겁니다. 캡슐화는 데이터에 대한 직접 접근(변경)을 막고 데이터 변경 책임을 객체로 제한합니다. 이렇게 함으로써 데이터를 외부에서 잘못 변경하는 것을 막고, 변경 로직이 한 곳에 있으니 요구 변경도 유연하게 대응할 수 있게 되는 거죠.
함수로 로직 중복을 없앨 수 있지만 데이터를 누구나 마음대로 바꿀 수 있기 때문에 데이터 상태가 깨질 가능성이 높아지죠.(아무래도 데이터를 직접 변경할 수 있으면 쉽게 코딩하고 싶어지고 이러면 절차지향에서 언급한 유지보수성이 떨어지는 문제가 발생하게 됩니다).
함수형에서는 이를 불변 데이터와 함수로 접근합니다. 객체가 자신의 값을 직접 변경하는 방식이라면 함수형은 데이터를 변경할 수 없고 대신 매번 다른 값을 값는 데이터를 생성하는 방식으로 함수를 구현합니다. 이렇게 해서 코드 추적성과 코드 조합 가능성을 높입니다.
추상화 예제의 추상화하지 않은 구현 부분에서 질문있습니다.
0
446
1
캡슐화 연습 2번
0
370
1
추상화 예제에서 추상 클래스를 사용하지 않고 인터페이스를 사용하신 이유가 궁금합니다.
0
269
2
캡슐화 예제 4 질문입니다.
0
272
1
범균님 안녕하세요 강의 수강중 궁금한점이 있어 질문 남겨 봅니다.
0
366
1
캡슐화 질문
0
322
1
DIP 관련해서 궁금한게 있습니다.
0
260
1
기능 분리 기준에 대한 질문이 있습니다.
1
361
2
서로 다른 구현 추상화에 대해서 질문이 있습니다.
2
369
2
의존 주입 예제 관련 질문입니다.
1
257
1
상속 재활용 단점 중 상위 클래스 변경 어려움에 대해서 질문이 있습니다.
1
316
2
캡슐화 연습4 질문 있습니다.
0
294
2
의존하는 대상이 많을 때 질문 드립니다.
0
265
1
추상화를 따라서 코딩해볼 수 있는 예제가 있을까요?
0
451
1
콘크리트 클래스를 직접 사용하는 경우 & NotifierFactory 관련 질문드립니다
1
277
1
Demeter's Law 설명이 잘 이해가 안갔습니다 ㅠㅠ
1
287
1
혹시 강의를 듣고 필기한 내용을 정리해서 블로그에 올려도 될까요?
0
359
2
캡슐화 예제 질문드립니다
0
546
4
DIP
1
375
3
예제코드는 따로 없나요?
1
231
0
NotifierFactory 를 또 추상화 한 이유가 궁금합니다
0
198
1
특정 클라우드에서 예외적으로 특정기능을 제공하지 않는 경우
6
214
1
상속과 조합 문의드립니다
1
267
1
강의자료를 받아볼수 있나요?
1
282
2

