객체지향언어(OOP, Object Oriented Programming)
- 인간 중심적 프로그래밍 패러다임
- 현실 세계의 사물을 객체로 인식하고 그 객체로부터 특징을 뽑아와 프로그래밍 하는 것
1) 특징
(1) 추상화
- 객체의 공통적인 특징을 파악해 하나의 일반적인 개념으로 다루는 것
(2) 캡슐화
- 연관있는 변수와 메소드를 묶는 것
(3) 정보은닉
- 정보를 숨겨 연산만을 통해 객체 내 변수에 접근하도록 하는 것
(4) 상속성
- 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
(5) 다형성
- 서로 다른 클래스의 객체가 같은 입력을 받았을 때, 각자의 방식으로 동작하는 것
2) 객체지향언어의 5대 원칙(SOLID)
(1) 단일 책임 원칙(SRP, Single Responsibility Principle)
- 객체는 단 하나의 책임만을 갖는다
(2) 개방-폐쇄 원칙(OCP, Open Closed Principle)
- 기존의 코드를 변경하지 않고 새로운 기능을 추가할 수 있도록 설계되어야 한다
(3) 리스코프 치환 원칙(LSP, Liskov Substitution Principle)
- 하위 클래스는 상위 클래스에서 가능한 모든 행위를 수행할 수 있어야 한다.
(4) 인터페이스 분리 원칙(ISP, Interface Segregation Priciple)
- 인터페이스는 클라이언트에 특화되도록 분리시키는 설계 원칙
(5) 의존 역전 원칙(DIP, Dependency Inversion Principle)
- 의존 관계를 맺을 때, 변화하기 어려운 것, 변화가 거의 없는 것에 의존해야 한다.
3) 장점
- 생산성
- 유지보수의 편리
- 재사용성
- 자연적 모델링
4) 단점
- 느린 개발 속도
- 느린 실행 속도
- 코딩 난이도
- 객체가 mutable한 상태를 가짐으로써 발생하는 side effect
'CS > Java' 카테고리의 다른 글
[자바] Static (0) | 2020.06.29 |
---|---|
[자바] 데이터타입 (0) | 2020.06.29 |
[자바] Collection Frameworks (0) | 2020.06.29 |
[자바] 가비지 컬렉션(GC, Garbage Collection) (0) | 2020.06.29 |
[자바] 자바가상머신(JVM, Java Virtual Machine) (0) | 2020.06.29 |
댓글