객체 지향 프로그래밍(OOP: Object Oriented Programming)이란
현실 세계에서 어떤 제품을 만들 때, 부품을 먼저 개발하고 이 부품들을 하나씩 조립해서 완성된 제품을 만들 듯,
소프트웨어를 개발할 때도 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법이다.
- 객체(Object):
물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것
객체는 속성과 동작으로 구성 되어 있다. (ex. 사람 - (속성)이름, 나이 등 / (동작)웃다, 먹다 등)
자바는 이 속성과 동작들을 각각 필드(field)와 메소드(method)라고 부른다.
- 객체 지향 프로그래밍의 특징 : 캡슐화, 상속, 다형성
1. 캡슐화
: 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것
외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.
필드와 메소드를 캡슐화하여 보호하면 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 할 수 있다.
자바 언어는 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지를 결정하기 위해 접근 제한자(Access Modifier)를 사용하여 객체의 필드와 메소드의 사용 범위를 제한함으로써 외부로부터 보호한다.
2. 상속(Inheritance)
: 부모 역할의 상위 객체가 자식 역할의 하위 객체에게 자기가 가지고 있는 필드와 메소드를 물려주는 것
상속은 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고, 이미 잘 개발된 객체를 재사용해서 새로운 객체를 만들기 때문에 반복된 코드의 중복을 줄여준다.
상위 객체의 수정으로 모든 하위 객체들의 수정 효과를 가져와 유지 보수 시간을 최소화 시킬 수 있다.
하위 객체는 상위 객체를 확장하여 추가적인 필드와 메소드를 가질 수 있다.
3. 다형성(Polymolphism)
: 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질
코드 측면에서 보면 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다.
부모 타입에는 모든 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다.
다형성의 효과로 객체를 부품화 시키는 것이 가능하여 유지 보수에 용이하다.
예를 들어 자동차를 설계할 때 타이어 인터페이스 타입을 적용 했다면 이 인터페이스를 구현한 실제 타이어들은 어떤 것이든 상관없이 장착(대입)이 가능하다.
'Dev > Java' 카테고리의 다른 글
include 디렉티브 (0) | 2022.09.01 |
---|---|
<jsp:include> 액션 태그 (0) | 2022.09.01 |
12. 그룹 알고리즘 (Group Algorithm) (0) | 2022.08.08 |
11. 최빈값 알고리즘(Mode Algorithm) (0) | 2022.08.08 |
10. 병합 알고리즘(Merge Algorithm) (0) | 2022.08.08 |
댓글