객체지향이란?
객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 실제 세상에 가깝게 모델링하는 컴퓨터 프로그래밍 패러다임 중 하나로, 실제 세계의 데이터를 추상화 시켜 프로그래밍에서 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용으로 구성하는 프로그래밍 방법이다.
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
OOP의 4가지 특징
추상화
구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 것이다. 즉 객첵들의 공통적인 특징(속성, 기능)을 모아 하나의 클래스로 만드는 것을 의미한다. 이때 각 객체의 구체적인 개념에 의존하지 말고 추상적인 개념에 의존해야 설계를 유연하게 변경할 수 있다.
캡슐화
관련된 필드와 메서드를 하나의 캡슐처럼 포장해 세부 내용을 외부에서 알 수 없도록 감추는 것이다. 캡슐화의 주목적은 내부 데이터를 숨겨서 외부 영향에서 벗어나는 것이다.
💡 캡슐화와 은닉화의 차이
은닉화는 캡슐화를 통해 얻어지는 실제 구현 내용 일부를 외부에 감추는 효과이다. 캡슐화를 통해 객체의 속성과 행위를 하나로 묶고 세부 내용을 외부에서 알 수 없도록 하기 때문에 정보 은닉의 효과를 얻을 수 있는 것이다.
상속
자녀가 부모 재산을 상속받아 사용하듯이 객체 지향 프로그래밍에서는 상위 객체를 상속받은 하위 객체가 상위 객체의 메서드와 필드를 사용할 수 있다.
다형성
대입되는 객체에 따라서 메서드를 다르게 동작하도록 구현하는 기술이다. 이는 실행 도중 동일한 이름의 다양한 구현체 중에서 메서드를 선택할 수 있다는 것을 의미한다.
좋은 객체지향 설계
객체지향 프로그래밍에서 좋은 설계란, 응집도가 높고 결합도가 낮은 설계를 말한다.
- 응집도란 모듈에 포함된 내부 요소들이 연관되어 있는 정도로, 변경이 발생할 때 모듈 내에서 발생하는 변경의 정도를 의미한다.
- 결합도란 모듈간의 의존성의 정도로, 하나의 모듈의 수정되기 위해 함께 수정되어야 하는 정도를 의미한다.
'Programming language > Java' 카테고리의 다른 글
[Java] SOLID란? (0) | 2022.05.16 |
---|---|
[Java] GC란? (0) | 2022.05.12 |
[Java] JVM, JRE, JDK (0) | 2022.05.12 |
[Java] JIT 컴파일러란? (1) | 2022.05.09 |
[Java] JVM이란? (0) | 2022.05.05 |
댓글