객체지향 특징 - 캡슐화, 정보 은닉
인터넷에서는 4가지만 나와있는데, NCS에서는 5가지를 정의하고 있다. 보통 '정보 은닉'은 캡슐화의 부차적인 기능 정도로 생각했는데, 이를 직접적으로 명시한 의도는 무엇일까? 2번 항목을 보고 아래의 내용이 떠올라서 책을 다시 폈다. 로버트 마틴의 '클린 코드'에서는 이런 내용이 있다. 변수를 private로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 충동이든 변덕이든, 변수 타입이나 구현을 맘대로 바꾸고 싶어서다. 그렇다면 어째서 수많은 프로그래머가 getter/setter로 비공개 변수를 외부에 노출할까? 만약 어떤 클래스가 생성 시에 참조하는 모든 클래스의 인스턴스를 매개변수로 넣어주어야 한다면, 또 공개된 메서드에는 매개변수도 많고, 오버로딩에 따른 차이가 극명하다면...
2024.01.11