ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [객체지향의 원리와 이해] (3-1) 자바와 객체지향 - 개요 (객체지향의 4대 특성)
    개발/OOP, Design Pattern 2020. 12. 25. 02:16

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

    자바 이전에 언어들은 모두 인간의 편의를 위해 하이-레벨에서 고려되었지만, 포인터 같은 개념은 기계 수준의 눈높이로 낮추지 않으면 이해하기 어렵다. 그래서 현실 세계처럼 프로그래밍 하기위해 객체 지향 개념이 탄생했다.

    구조적 프로그래밍 언어에서 중요한 함수중복 제거논리의 분할를 만들었고, 그 다음 객체 지향이 나타났다.

    0과 1로 이루어진 기계에 맞추던 사고방식을 현실의 Object에 맞춰 사물을 인지하는대로 프로그래밍 하자는 것이 그 출발이다. 그래서 직관적이다.


    객체 지향의 큰 그림

    • 세상 모든 사물은 객체이다.
    • 각각의 사물은 고유하다.
    • 사물은 속성을 갖는다.
    • 사물은 행위를 한다.

    그리고 인간은 사물을 분류(class)해서 이해한다.

    객체지향의 4대 특성 - 캡! 상추다

    객체지향의 4대 특성의 앞글자를 따서 캡! 상추다 라고 표현할 수 있다.
    - 캡슐화(Encapsulation) : 정보 은닉(information hiding)
    - 상속(Inheritance): 재사용
    - 추상화(Abstraction): 모델링
    - 다형성(Polymorphism): 사용 편의

    Inheritance에 취소선을 그은 이유는 오해를 불어일으키는 단어이기 때문이다. 자세한 설명은 추후에 작성한다.

    클래스 vs 객체 = 붕어빵틀 vs 붕어빵 ???

    흔히 객체 지향을 설명할 때 붕어빵과 붕어빵틀에 비유한다. 그러나 다음을 생각해보면 이 예시가 이상함을 알 수 있다.

    금형기계 붕어빵틀 = new 금형기계(); == 새로운 금형기계를 하나 만들었더니 붕어빵틀이 되었다

    이상한 표현이다. 왜냐하면 금형기계와 붕어빵틀은 클래스와 객체 관계가 아니기 때문이다.

    마찬가지로 붕어빵과 붕어빵틀도 객체와 클래스 관계가 아니다.

    객체와 클래스 관계를 확인하는 방법은 나이를 물어보면 된다. (사물인 경우 연식 등..)

    사람의 나이는 몇 살인가?
    김연아의 나이는 몇살인가?
    일렉기타는 몇 년산인가?
    fender 62년 생산 기타는 몇 년산인가?

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

    다음이 적절한 비유이다.
    클래스:객체 = 펭귄:뽀로로 = 사람:김연아

    댓글

Designed by Tistory.