본문 바로가기
CS/Java

[자바] 객체지향언어(Object Oriented Programming)

by 테리는당근을좋아해 2020. 6. 29.

객체지향언어(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

댓글