2022. 3. 24. 01:33ㆍCSE/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
'CSE > JAVA' 카테고리의 다른 글
TDD (Test-driven Development) (0) | 2022.03.25 |
---|---|
[자바 객체 지향] 객체 지향의 4대 특성 - 추상화 (0) | 2022.03.24 |
[Java] 데이터 타입, String 특징 (0) | 2022.03.23 |
Varargs : 가변 인자 (0) | 2022.01.21 |
[자바 객체 지향] 스프링이 사랑한 디자인 패턴 2 (0) | 2021.09.06 |