-
P1_C3_3. 객체지향 개념정리Anna belly belly hard/java_spring 2023. 5. 14. 12:34반응형
1. 객체지향 4가지 특징
1) 추상화(Abstraction)
2) 다형성(Polymorphism)
3) 캡슐화(Encapsulation)
4) 상속(Inheritance)
2. 객체지향 설계 원칙 5가지 (SOLID)
1) SRP : Single Responsibility Principle (단일 책임의 원칙)
2) OCP : Open/Closed Principle (개방 폐쇄의 원칙)
3) LSP : Liskov’s Substitution Principle (리스코프 치환의 원칙)
4) ISP : Interface Segregation Principle (인터페이스 분리의 원칙)
5) DIP : Dependency Inversion Principle (의존성 역전의 원칙)3.객체지향 패러다임
- 적절한 객체에게 적절한 책임을 할당하여 서로 메시지를 주고 받으며 협력하도록 하는것
- 점점 증가하는 SW 복잡도를 낮추기 위해 객체지향 패러다임 대두
- 클래스가 아닌 객체에 초점을 맞추는 것이 중요
- 객체들에게 얼마나 적절한 역할과 책임을 할당하는 지 중요
4.절차지향 vs 객체지향 프로그래밍>
- 책임이 한곳에 집중돼있는 방식(getter) -> 절차
- 책임이 여러 객체로 적절히 분산돼 있는 방식 -> 객체
5 .객체지향 설계 = high cohesion, low coupling (높은 응집도, 낮은 결합도 = 비슷한것은 모아두고, 다른것은 분리시키기)
- 장점 ) 변경이 생겼을때 변경의 포인트가 하나로 집중될수 있다. 영향범위를 파악하는 것이 한곳에 집중되어 있다.
- 객체지향에 있어서 변경에 대한 요구사항이 들어왔을때 특정 한부분만 수정이 가능한것은 응집도 가 높다, 변화에 생겼을때 다른곳에 영향을 미치지 않는것은 낮은 결합도 이다.(유지보수와 관련)
- 객체지향 설계는 변경이 생겼을때 유연하게 대연할수 있음을 의미한다.
6. 객체지향 설계 순서
1) 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민
2) 객체들 간의 관계를 고민
3) 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기
4) 협력을 설계
5) 객체들을 포괄하는 타입에 적절한 책임을 할당 = 클라이언트와 협력할수 있는 퍼블릭 인터페이스를 정의
6) 퍼블릭 인터페이스를 구현하기
* 참고 : 객체지향 세계에서는 모든 객체가 능동적인 존재7. 앞으로 구현할 프로젝트
1) 사칙연산 계산기 구현
<요구사항>
• 간단한 사칙연산을 할 수 있다.
• 양수로만 계산할 수 있다.
• 나눗셈에서 0을 나누는 경우 IllegalArgument 예외를 발생시킨다.
• MVC패턴(Model-View-Controller) 기반으로 구현한다.2) 학점계산기 구현
<요구사항>
• 평균학점 계산 방법 = (학점수×교과목 평점)의 합계/수강신청 총학점 수
• MVC패턴(Model-View-Controller) 기반으로 구현한다.
• 일급 컬렉션 사용3) 인사관리 시스템 구현
<요구사항>
• MVC패턴(Model-View-Controller) 기반으로 구현한다.반응형'Anna belly belly hard > java_spring' 카테고리의 다른 글
P1_C3_4. 사칙연산 계산기 구현 (0) 2023.05.14 P1_C3_2. 테스트 코드- 비밀번호 유효성 검증기 만들기 (0) 2023.05.13 P1_C3_1. 테스트 코드 작성하기 (0) 2023.05.12 P1_C2_3. 도커 및 도커 컴포즈 , 도커를 이용한 개발환경 만들기(MySQL 도커 연동하기) (0) 2023.05.12 P1_C2_2. 웹 개발 환경 구성하기 (0) 2023.05.12