TIL - 2025.03.10
오늘 배운 것 개요
- Java에서 객체 지향 원칙(OOP) 을 적용하여 코드를 리팩토링함.
- 장바구니 기능 개선: 전체 삭제 및 특정 상품 삭제 기능 추가.
- StringBuilder 최적화: 문자열 결합 시 성능 향상을 위해 StringBuilder 활용.
- 오류 수정: String.append() 오류 해결 및 불변 객체(String)의 문제 해결.
1. Kiosk 프로젝트
1. OOP 원칙 적용 및 개선
1. OOP 원칙 점검
- SRP (단일 책임 원칙) -> 클래스는 단 하나의 책임만 가져야 한다.
- OCP (개방-폐쇄 원칙) -> 클래스는 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다.
- LSP (리스코프 치환 원칙) -> 자식 클래스는 부모 클래스를 대체할 수 있어야 한다.
- ISP (인터페이스 분리 원칙) -> 클라이언트가 사용하지 않는 인터페이스에 의존하지 않아야 한다.
- DIP (의존 역전 원칙) -> 고수준 모듈이 저수준 모듈에 의존하면 안 된다.
2. 개선 코드
- 하나의 클래스에서 하나의 동작을 하도록 수정
- MenuItem 개별 메뉴
- Menu 메뉴 그룹
- Kiosk UI/로직
으로 세분화
- Getter / private 사용
- order()에서 결제 여부 입력값을 유효성 검사
2. 알고리즘 학습
1. 문자열 결합 최적화 (StringBuilder)
1. 기존 코드 문제점
- 기존 String answer += ... 방식은 문자열을 반복적으로 추가할 때마다 새로운 String 객체를 생성하여 메모리 낭비
- StringBuilder를 사용하면 기존 객체를 수정하므로 성능이 향상
2. 성능 비교
방식 | 문자열 추가 방식 | 성능 |
---|---|---|
String += | 새로운 객체 생성 후 기존 값 복사 | 느림 (메모리 낭비) |
StringBuilder.append() | 기존 객체에 바로 추가 | 빠름 (메모리 효율적) |
오늘의 결론
- OOP 원칙에 입각한 코드 수정
- 장바구니 기능 개선
- 문자열 결합 최적화 (StringBuilder)
다음 학습 목표
- kiosk과제 장바구니 및 할인혜택 구현
'TIL' 카테고리의 다른 글
[TIL]Enum 활용 (0) | 2025.05.14 |
---|---|
[TIL]예외 처리 개선 (0) | 2025.05.14 |
[TIL]Kiosk 프로젝트 구조 정리 (0) | 2025.05.14 |
[TIL]REST API를 활용한 GitHub 레포지토리 목록 조회 (0) | 2025.05.14 |
[TIL]연산자 처리 (0) | 2025.05.14 |