[자바 객체 지향] 객체 지향의 4대 특성과 클래스&객체

2022. 3. 24. 01:33CSE/JAVA

1. 객체 지향은 인간 지향이다

(1) 기존의 구조적 프로그래밍 언어 : Divide and Conquer (D&C)

- Divide and Conquer은 프로그램의 동작/기능들을 논리적인 단위인 함수로 나누어 블록화해서 작성하는 것이다.

=> 천 리 길도 한 걸음부터!

- 기존의 구조적 프로그래밍 언어에서 가장 중요한 것은 함수였다.

- 이 때, 함수의 목적은 중복을 제거하고 논리를 분할하는 것이다.

 

(2) 객체 지향

- 우리가 실생활에서 사물을 인지하는 방식대로 프로그래밍 할 수 있지 않을까?라는 생각에서 시작되었다.

=> 따라서, 객체 지향은 직관적이다.

 

2. 클래스랑 객체가 붕어빵틀과 붕어빵이라고?

우리는 Java 기본서를 볼 때, 클래스가 붕어빵틀에, 객체가 붕어빵에 비유되는 것을 흔히 볼 수 있다.

하지만, 해당 비유를 통해서는 추상화를 제대로 이해할 수 없다. (일단 나는 이 말에 동의한다)

클래스가 붕어빵틀이고 객체가 붕어빵이라면 다음 코드는 무슨 뜻일까?

클래스 객체명 = new 클래스();
붕어빵틀 붕어빵 = new 붕어빵틀();

새로운 붕어빵틀을 만들었더니 붕어빵이 생겼다?!

뭔가 이상하다.

따라서 해당 비유는 이제 잊어버리자!

 

3. 클래스? 객체?

자, 이제 우리는 클래스와 객체를 붕어빵틀과 붕어빵에 비유하지 않을 것이다.

대신 다음 예시를 생각해보자.

새 펭귄 = new 새();
사람 학생 = new 사람();
  • 새로운 새를 만들었더니 펭귄이 생겼다.
  • 새로운 사람을 만들었더니 학생이 생겼다.

위의 예시들은 어떤가? 비교적 말이 되는 것 같지 않은가?

이를 보면 클래스와 객체는 분류(class)와 사물(object)의 관계라는 것을 알 수 있다.

즉, 클래스는 분류에 대한 개념이지 실체가 아니다. 그리고 객체는 실체다.

 

4. 객체 지향의 4대 특성

클래스와 객체의 관계도 새로 배웠으니, 이제 객체 지향의 4대 특성을 알아보자!

캡상추다로 외우자!

  • - 캡슐화 (Encapsulation) : 정보 은닉
  • - 상속 (Inheritance) : 재사용
  • - 추상화 (Abstraction) : 모델링
  • - 다형성 (Polymorphism) : 사용 편의

 

 

1차 작성 : 2021-08-02 18:05

2차 작성 : 2022-03-24 01:33