본문 바로가기
BackEnd/Java

OOP의 4대 요소

by roh.mantique 2021. 9. 22.

OOP(Object-Oriented Programming)란

객체 지향적인 프로그래밍이라는 뜻으로, '객체의 관점에서 프로그래밍 한다'는 의미다.

 

Java는 객체 지향의 특징을 가진 언어이며, 이러한 언어는 4가지 특징을 지닌다. 

추상화(Abstraction)/ 캡슐화(Encapsulation)/ 상속성(Inheritance)/ 다형성(Polymorphism)

 

1) 추상화(Abstraction)

- 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념이다.

- 객체들의 공통 특징을 뽑아 클래스로 구현하고 직접 구현 전에 설계도를 만들어 시스템의 구조를 확인할 수 있다. 

- 객체들은 실제 그 모습이지만, 클래스는 객체들이 어떤 특징들이 있어야 한다고 정의하는 추상화된 개념으로, '객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법'이라고 이해할 수 있다. 

 

2) 캡슐화(Encapsulation)

- 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미한다. '은닉화'라고도 한다. 

- 외부의 잘못된 접근이 있을 때 객체의 데이터, 메소드에 유효하지 않은 값이 들어가 오류가 나는 것을 방지한다.

- 접근 제한자를 둬 정보의 공개 범위를 설정한다.

- 캡슐화된 객체는 재사용 가능하다.

 

3) 상속성(Inheritance)

- 부모 클래스를 자식 클래스가 상속받는 것을 의미한다. 

- 코드를 재사용해 효율적인 코딩을 할 수 있으며, 추후 유지 및 보수에 용이하다.

 

4) 다형성(Polymorphism)

- 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다.

- 형태가 같은데 다른 기능을 하는 것을 의미한다 (같은 동작이지만 다른 결과물이 나올때 다형이라고 생각하면 된다.)
- 이를 통해 코드의 재사용, 코드 길이 감소가 되어 유지보수가 용이하도록 도와준다.

- '울음'이라는 같은 속성을 물려받은 고양이, 사자가 있다고 했을 때 그 둘이 내는 울음소리는 다르다. (같은 동작-> 다른 결과물: 다형성)

- 속성을 활용하기 위한 인터페이스는 유지하고 메서드 이름을 낭비하지 않아 경제적이다. 

 

'BackEnd > Java' 카테고리의 다른 글

컬렉션 Collection  (0) 2021.09.24
인터페이스 Interface  (0) 2021.09.22
상속 Inheritance  (0) 2021.09.22
클래스 구성요소  (0) 2021.09.22