객체 지향 프로그래밍 (OOP: Object Oriented Programming)
- 만들고자 하는 완성품인 객체를 모델링하고, 집합 관계에 있는 부품 객체와 사용 관계에 있는 객체를 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 기법이다
객체(Object)
- 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말한다. EX) 자동차, 자전거, 책, 사람, 공부, 주문, 수면 등
- 객체는 속성과 동작으로 구성되어 있다.
- 자바에서는 속성과 동작을 각각 필드(field)와 메소드(method)라고 부른다
- 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링(Object Modeling)이라고 한다
객체 지향 프로그래밍의 특징
- 캡슐화(Encapsulation)
- 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것을 말한다
- 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다
- 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위해서이다
- 자바에서는 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지를 결정하기 위해 접근 제한자(Access Modifier)를 사용한다
- 접근 제한자는 객체의 필드와 메소드의 사용 범위를 제한함으로써 외부로부터 보호한다
- 상속(Inheritance)
- 객체 지향 프로그래밍에서는 부모 역할의 상위 객체와 자식 역할의 하위 객체가 있다
- 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해준다
- 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고, 이미 잘 개발된 객체를 재사용해서 새로운 객체를 만들기 때문에 반복된 코드의 중복을 줄여준다
- 상위 객체의 수정으로 모든 하위 객체들의 수정 효과를 가져오므로 유지 보수 시간을 최소화시켜준다
- 다형성(Polymorphism)
- 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다
- 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다
- 자바는 다형성을 위해 부모 클래스 또는 인터페이스의 타입 변환을 허용한다
- 부모 타입에는 모든 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다
- 추상화(Abstraction)
- 유연성을 확보하기 위해 구체적인 것은 제거한다는 의미이다
- 작성하려는 클래스의 속성과 기능 중 프로그램에서 필요한 공통점을 추출하고, 불필요한 공통점을 제거하는 과정이다
'JAVA' 카테고리의 다른 글
[JAVA] getter와 setter (0) | 2022.02.24 |
---|---|
[JAVA] 객체와 클래스 (0) | 2022.02.22 |
[JAVA] 배열 (0) | 2022.02.17 |
[JAVA] 분기문-break, continue (0) | 2022.02.16 |
[JAVA] 반복문 (0) | 2022.02.15 |