1. 객체지향프로그래밍의 탄생
- 프로그램의 규모가 점점 커지고 사용자들의 요구가 빠르게 변화해가는 상황을 절차적 언어로는 극복하기 어렵다는 한계를 느끼고 객체지향언어를 이용한 개발 방법론이 대안으로 떠오르게 되었다.
2. 객체지향프로그래밍(OOP)이란?
프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
- 객체를 사용하는 프로그래밍 방법
- 프로그램을 다수의 "객체"로 만들고, 이들이 서로 상호작용하도록 만들어진다.
3. 객체지향 프로그래밍의 핵심 개념
(1) 추상화 (Abstraction)
"공통의" 속성이나 기능을 묶어 이름을 붙이는 것
- 객체의 코통적인 속성과 기능을 추출하여 정의하는 것
- 클래스를 설계하는 것
(2) 캡슐화 (Encapsulation)
데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법
- 객체가 외부에 노출하지 않아야 할 정보 또는 기능을 접근제어자를 통해 접근을 제어한다.
- 코드 수정이 일어났을 때 책임이 있는 객체만 수정하면 되므로 신뢰성을 높인다.
- 뿐만 아니라 관련된 기능과 특성을 한 곳에 모으고 분류하므로 재활용하기 좋다.
- 객체 지향 프로그래밍에서 기능과 특성의 모음을 "클래스"라는 "캡슐"에 분류해서 넣는다.
(3) 상속 (Inheritance)
상위 클래스의 모든 걸 하위 클래스가 모두 이어받는 것
- 부모 클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게 한다.
(4) 다형성 (Polymorphism)
하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것
- 상속과 연관이 있는 개념으로 한 객체가 다른 여러 형태(객체)로 재구성되는 것
- 자바의 오버로드(Overload) 또는 오버라이드(Override)가 다형성의 대표적인 예
4. 객체지향 프로그래밍의 특징
세 가지 관점을 해결하기 위해 객체지향 프로그래밍이 탄생하였다.
- 코드의 재사용성이 높다. (재사용성)
- 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
- 코드의 관리가 용이하다. (유지보수)
- 코드 간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
- 신뢰성이 높은 프로그래밍을 가능하게 한다. (중복된 코드의 제거)
- 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다.
반응형
'Java' 카테고리의 다른 글
[JAVA] String Methods (String 클래스 method) (0) | 2021.11.05 |
---|---|
[JAVA] Iterator Interface (0) | 2021.10.14 |
[JAVA] List 정렬(Sort)하기 (feat. Collections.class) (0) | 2021.10.01 |
[JAVA] Comparable Interface vs Comparator Interface (0) | 2021.09.30 |
[JAVA] 배열 정렬(Sort)하기 (feat. Arrays.class) (0) | 2021.09.30 |
댓글