
서론 - 이전 포스트에서 순수 Java만 사용하여 비즈니스 요구사항에 맞게 프로젝트를 설계하였다. - 이제 새로운 할인 정책을 개발하여 프로젝트를 확장해보자. - 이때, 객체 지향의 설계 원칙을 잘 준수했는지 확인해 보자. 1. 새로운 할인 정책 개발 - 상황 : 서비스 오픈 직전에 할인 정책에 대한 기획자의 요구사항이 변경되었다. 기획자 : 고정 할인 정책(1000원)이 아니라 정률 할인 정책(10%)으로 바꿉시다! 개발자 : ㅠㅠ RateDiscountPolicy 추가 새로운 할인 정책을 설계했으면 이제 OrderService에서 기존에 사용하던 FixDiscountPolicy대신 RateDiscountPolicy로 대체한다. 이때, 문제점이 발견된다. 분명히 역할과 구현을 충실하게 분리했다. 다형성..

서론 - Spring의 기능을 쓰지 않고 순수한 Java로 프로젝트를 설계하기 - 순수 Java로 설계한 프로젝트에서 서비스를 확장해보기 - 이때, 객체지향의 원칙을 잘 준수 했는지 확인해보기 1. 프로젝트 생성 https://start.spring.io/ 2. 비즈니스 요구사항 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인..

SOLID - 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리한 것이다. SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: 의존관계 역전 원칙 (Dependency inversion principle) 1. SRP 단일 책임 원칙 (Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수도 있고, 작을 수도 있다..

객체 지향 프로그래밍이란? 구글에 "객체 지향 프로그래밍"을 검색하면 다음과 같이 나온다. 유연하고, 변경이 쉽다? => 레고 블럭을 조립하듯이, 키보드, 마우스를 갈아 끼우듯이, 컴퓨터 부품을 갈아 끼우듯이, 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법. 객체 지향의 특징 추상화(Abstarction) 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 모델화하는 것. 객체(클래스)를 정의하는 것을 추상화라고 할 수 있다. 캡슐화(Encapsulation) 추상화를 통해 객체를 정의했다면, 객체에 필요한 데이터나 관련 메소드를 그룹화하는것이다. 실제로 구현되는 부분을 외부에 드러나지 않도록 하여 정보를 은닉할 수 있다. 코드가 묶여있어서 오류가 없어 편리하다. 캡슐화 ..
- Total
- Today
- Yesterday
- SWEA
- 객체지향
- 알고리즘
- map
- 백준
- 백트래킹
- java
- S3
- PriorityQueue
- DFS
- 다익스트라
- 문자열
- 그리디
- Spring Boot
- 시뮬레이션
- Spring
- react
- 우선순위큐
- S2
- 현꾸라지
- 자바
- BFS
- G5
- 코딩새내기
- 리액트
- react native
- 구현
- laugh4mile
- 리액트 네이티브
- g4
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |