【초보자용】 오브젝트 지향・클래스의 의미의 이해 보조

이 기사 정보 & 전제 조건



초보자용 기사입니다.
클래스는 뭐야? OOP(객체 지향 프로그래밍)이란? 무슨 뜻이야? 라고 생각해 조사하면, 잘 나오는 것이, 동물이라든지 차의와의 그림.
그 그림을 보고, 「말하지 않는 것은 알지만, 그것이 무엇인가?」라고 생각한 초보자용의 기사.
저도 초보자이므로, 이것이 대답의 전부는 아니겠지만, 조금이라도 이해의 도움이 된다고 생각해 썼습니다.

(20200911 갱신)

· 클래스와 서브 클래스의 관계, 클래스와 인스턴스의 관계를 명확하게 나누는 것이 좋다
・현실 세계와 오브젝트 지향에서는 관계가 다르다

라는 코멘트를 받았으므로, 기사 수정하고 있습니다.

본문



하나의 대답 : 유지 보수하기 쉬운

자주 보는 것이 아래와 같은 그림이군요.
이것은 클래스 (승차, 동물)와 서브 클래스 (승용차, 오토바이, 버스, 인간, 개, 고양이) 사이의 관계입니다.


「오, 오우, 그것이 어떻게 했다」라고 하는 느낌.
「그럼 그렇겠지, 괜찮은 교육을 받고 있다면 그런 것을 알겠지」라고.

문제는, 「이것이 어떻게 사용할 수 있을까?」라고 하는 이야기.
아래의 그림과 같이 클래스(또는 서브 클래스. 프리우스라고 하는 차종)와 인스턴스(현실에 존재하는 프리우스 1~3)를 생각하는 편이 좋다고 생각한다.


예를 들면, 프리우스의 프로그램에 있는 조건에서 브레이크가 쓸모 없게 되는 문제가 발생했다고 한다.
당연히 이미 판매한 프리우스 1~3에도 그런 문제가 발생한다.
어서 어떻게 대응할까?

여기에는 두 가지 옵션이 있습니다.
  • 열심히 벌써 판매한 차 1개 1개를 둘러보고 (혹은 전국에 점재하고 있을지도), 1대 1대의 프로그램을 고친다
  • 미리, 프리우스의 부모의 프로그램을 고치면 자동적으로 1대 1대의 프로그램에 반영되도록 해 두어, 부모의 프로그램을 고쳐 준다

  • 이것은 한층 더 추상화해, 부모 클래스와 아이 클래스를 생각해도 같다.
    도요타의 전 차종에 걸치는 문제가 발견되었을 때에, 각 차종(프리우스라든지 카롤라라든지)의 프로그램을 1개씩 고칠 것인가, 아니면 전 차종의 공통 프로그램을 만들어 두고 그 공통 프로그램만 고치면 OK인가 .

    이것은 예를 들면 WordPress 기사에서도 동일하다.
    기사 1개 1개에 편집이나 삭제의 기능(메소드)을 개별적으로 작성하는 것이 아니라, 기사라고 하는 클래스에 편집이나 삭제등의 기능을 갖게 한다.

    현실 세계와 객체 지향에서는 관계가 다르다는 점에 대해,
    현실 세계에서는 '놀이기구'는 승용차·오토바이·버스 등 요소를 포괄한 개념( @shiracamus


    오브젝트 지향에서, "차량"은 승용차, 오토바이, 버스의 공통 데이터, 공통 기능


    그래서 오브젝트 지향에 있어서는, 「탈것」을 수정하면, 승용차·오토바이·버스의 기능 가운데, “놀이기구와 공통하고 있는 기능”을 수정할 수 있다고 하는 것이라고.

    이와 같이, 오브젝트 지향으로 클래스를 이용해 프로그램을 만드는 것으로, 보다 관리하기 쉬워진다는 것이 오브젝트 지향의 의미인 것은,이라고 생각했습니다.

    좋은 웹페이지 즐겨찾기