[Java] 객체지향을 이해하고 특성알기

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

    절차적/구조적 프로그래밍까지의 과정은 인간이 기계를 이해하려는 노력에서 크게 벗어나지 못했다. 특히 포인터의 개념은 기계 수준으로 눈높이를 낮추지 않으면 이해하기 매우 힘든 부분이다.

    기존의 구주적 프로그래밍 언어에서 가장 중요한 것은 "함수" 였다. 함수는 코드를 논리적인 단위로 구분하고 분할해서 정복하자는 것이다. 즉 D&C(Divide and Conquer) 논리적인 단위로 나누어 블록화해서 작성하자는 것이다. 이런 논리적인 단위의 블록을 함수라고 한다.

    우주 만물은 객체들의 합이다. 눈으로 보여지는 것, 손으로 만져지는 것, 머리속으로 상상되는 모든 것은 사물이다. 사물을 객체 라고 하고 영어로 Object라고 한다. 우리가 주변에서 사물을 인지하는 방식대로 프로그래밍을 할 수 있는게 객체 지향의 출발이다. 즉 현실세계를 인지하는 방식으로 프로그램을 만들자는 것이다. 그래서 객체 지향은 직관적이다.

    객체 지향의 이해 

    • 세상에 존재하는 모든 것은 사물, 즉 객체(Object) 이다.
    • 각각의 사물은 고유하다.
    • 사물은 속성을 갖는다.
    • 사물은 행위를 한다.

    그리고 사물을 하나하나 이해하기 보다는 사물을 분류(Class) 해서 이해하는 것이 인간의 인지법이다.

    • 직립보행을 하며 말을 하는 존재를 사람이라고 분류한다.
    • 연미복, 짧은 다리, 날지 못하는 새를 펭귄이라고 분류한다.
    • 밤하늘에 반짝이는 사물들을 벌이라고 분류한다.

    김종민(Object), 한효주(Object), 김연아(Object) 라고 하는 존재는 사람이라는 분류에 속한다. 그리고 사람이라는 분류 안의 객체(Object) 들은 나이, 몸무게, 키 등의 속성(Property)과 먹다, 자다, 울다, 등의 행위(Method)를 가지고 있다.

    객체 지향 이전에는 속성과 메서드를 객체라는 단위로 묶지 않고 속성(필드) 따로, 메서드(함수) 따로 분리된 형태로 프로그램을 작성했었는데, 객체 지향에서는 우리가 주변에서 실제 사물을 인지 및 사고하는 방식대로 객체 단위의 프로그래밍이 가능하다. 





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

    객체 지향의 4대 특성

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


    클래스는 분류에 대한 개념이지 실체가 아니다. 객체는 실체다. 
    클래스 :  객체 = 펭귄 : 뽀로로 = 사람 : 김연아



    김종민, 스프링 입문을 위한 자바 객체 지향의 원리와 이해, 위키북스(2015), p77-79

    댓글

    Designed by JB FACTORY