OOP(2)
-
객체지향 특징 - 캡슐화, 정보 은닉
인터넷에서는 4가지만 나와있는데, NCS에서는 5가지를 정의하고 있다. 보통 '정보 은닉'은 캡슐화의 부차적인 기능 정도로 생각했는데, 이를 직접적으로 명시한 의도는 무엇일까? 2번 항목을 보고 아래의 내용이 떠올라서 책을 다시 폈다. 로버트 마틴의 '클린 코드'에서는 이런 내용이 있다. 변수를 private로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 충동이든 변덕이든, 변수 타입이나 구현을 맘대로 바꾸고 싶어서다. 그렇다면 어째서 수많은 프로그래머가 getter/setter로 비공개 변수를 외부에 노출할까? 만약 어떤 클래스가 생성 시에 참조하는 모든 클래스의 인스턴스를 매개변수로 넣어주어야 한다면, 또 공개된 메서드에는 매개변수도 많고, 오버로딩에 따른 차이가 극명하다면...
2024.01.11 -
[Java] OOP, Builder 패턴을 사용한 Person 클래스 정의
조건 1: 최초 생성 후 수정이 불가능해야 한다. 조건 2: Instance 생성 시, name을 제외한 모든 속성에 대한 인자는 optinal이다. 조건 3: Instance를 구분할 수 있는 unique key값이 필요하다. 특징 (조건 1 완료) Person의 모든 멤버 변수가 final형이다. (즉, 최초 생성 간 초기화 이후 수정 불가) (조건 2 완료) 생성 인자가 순서로부터 자유롭다. (단, non-null 파라미터는 순서 강제) (조건 3 완료) PersonBuilder 내 static 멤버 변수 ID 활용 코드 더보기 public class Main { public static void main(String[] args) { // Use Builder Pa..
2023.06.11