✍ Today I Learned
[뱅킹 시스템]
- 유효성 검사 로직을 추가했다. 고객번호를 받는 경우에는 최대 고객 수보다 많지 않아야 하고, 미개설 계좌(null)가 아니어야 한다.
- 이 부분이 아주 헷갈렸는데, 고객번호 대신 고객 이름을 받는 경우에는
findUser()
메서드 내에서 null 값 처리를 해주어야 연산이 가능하다!! 계속 NullPointerException 에러가 나서 한참을 머리 쥐어뜯었다.. 찾는 고객 이름이 없는 경우 에러 메시지를 출력한다. - main 메서드를 최소한으로 줄이고 컨트롤러 클래스를 생성하여 각 메뉴의 작업을 메서드로 분리한다.
- 중요한 포인트!
- 개별적 클래스를 객체화
- 클래스 내부 데이터에 접근
- 접근할 때의 데이터 전달
- static을 붙이면 메서드 영역에 할당된다.
[호텔 객실 관리 프로그램]
- buildHotel → initializeRooms → makeRoomNum 순서로 메서드 연결해서 기능으로 전부 분리한다.
- 연산에서 데이터 타입이 String으로 나와야 하는 부분은 String.valuOf()를 추가해 더 확실하게 만들어준다.
- 전체 객실 상세 조회, 특정 객실 상세 조회, 특정 호실 투숙객 조회, 투숙객 전체 조회, 투숙객 이름으로 조회까지 전부 구현해보았다.
- 호텔 구조 자체도 2차원 배열이고, 투숙객도 배열도 받다 보니 투숙객 전체 조회에서 5번(...)의 제어문을 사용했는데 더 나은 방법이 있을지 고민해볼 필요가 있다.
- 배열을 전체 탐색한다면 for문 보다 forEach문이 낫다.
[캡슐화 encapsulation]
- 캡슐화란? 메서드 안의 일을 사용자로부터 숨겨야 한다는 개념이다.
- 캡슐화와 은닉화의 차이점은? 속성의 접근을 제어하는 것을 은닉화, 메서드의 내부를 알지 못하도록 하는 것을 캡슐화라고 한다.
- 데이터 보안을 강화하기 위해 반드시 지켜져야 하는 객체지향의 특징 중 하나이다.
- 메서드의 네이밍을 추상적으로 명명하여 기능을 특정하면 사용자는 내부 로직을 알 수 없으면서, 기능만 알고 사용하게 된다.
'📝 TIL' 카테고리의 다른 글
[TIL] Java 인터페이스, 내부클래스, 예외처리 (0) | 2022.05.20 |
---|---|
[TIL] Java 빌트인 패키지, 접근제어자, 상속, 오버라이딩, 다형성, 추상 클래스 (0) | 2022.05.19 |
[TIL] Java 뱅킹 시스템, 호텔 객실 관리 프로그램 (0) | 2022.05.17 |
[TIL] Java 뱅킹 시스템, 은닉화 (0) | 2022.05.16 |
[TIL] Java 퀴즈파티, 생성자, 뱅킹 시스템 (0) | 2022.05.13 |