U E D R , A S I H C RSS

타�코코아Cpp Study/0724/선�발표_�체지향

�체지향�란?

�체


  • ê°�ì²´ = 소프트웨어를 구성하고 실제 소프트웨어를 ìž‘ë�™ì‹œí‚¤ëŠ” 실체들
    즉, 논리와 ��타가 분리�어 있는 기존� 구조� 사고�서 과�히 탈피하여 논리와 ��타가 결합� �체들� 시스템� �룬다는 것�다.

  • ê°�ì²´ = ì†�성 + í–‰ë�™

�체� �성

  • Identity(ì‹�별) - ê°� ê°�체는 다른 ê°�체로부터 분리ë�˜ê³  있고, 분별 가능해야 한다.
  • Classification(분류) - ê°™ì�€ ìž�료구조와 행위를 가진 ê°�체들ì�€ ë�™ì�¼í•œ í�´ëž˜ìФ(class)로 분류ë�œë‹¤.
    �대�으로 � �체는 소� �래스� �스턴스(instance)가 �다.

    같� �래스�서 �성� �체들� 모� 같� 연산(operation) 기능� 갖고 있으며, �료구조가 같고 ��한 행위를 하게 �다.(�료구조는 �체들� 갖는 ��타와 �성(attribute)들� 집합�다. 그러나 ��터와 �성� 값� 물론 다르다.)

  • Polymorphism(다형성) - ê°™ì�€ ì—°ì‚° 기능ì�´ 부여ë�˜ì–´ë�„ ê·¸ 기능ì�„ 수행하는 í�´ëž˜ìФì—� ë”°ë�¼ 다른 행위로 나타날 수 있다.
    예를 들어 '��(move)' ��는 기능� '�수'�는 �래스� �용� 때는 ��� �사가 � 수 있으나, '승용차'�는 �래스� �용�면 특정 목�지로 �정한 시�� 정해진 ��로 움��는 행위가 � 수� 있다.

  • Inheritance(ìƒ�ì†�) - 계층(hierarchy)관계ì—� 놓여 있는 í�´ëž˜ìŠ¤ë“¤ ê°„ì—� ì†�성ì�´ë‚˜ ì—°ì‚° 기능들ì�„ 공유한다.
    즉, 주어진 �래스� 서브�래스(subclass)가 있다면 서브�래스� 모든 �체들� 소� �래스� 모든 �성�나 연산기능� ��받게 �다. 따�서, 서브�래스를 정�할 때�는 수��래스(super class) 로부터 ��받는 내역들� 중복하여 정�할 필요가 없게 �다.


�체지향� 개�


  • ê°�체지향ì�´ëž€ 프로그래ë°�ì�„ 좀ë�” 현실ìƒ�활과 비슷하게 하기 위해 나온 ê°œë…�ì�´ë‹¤.
  • 모든 프로그램ì�˜ 요소를 ê°�ê°�ì�˜ ë�…립ì �ì�¸ ê°�체로 ìƒ�ê°�한다.
    -- black box� 개� : 그 �체들� 어디� 쓰�는 것�지는 알아� 그 �체들� 어떤 구조로 �어 있으며 어떤 ��타를 유통시키며 어떤 알고 리즘으로 움��는가 하는것� 모른다는 것�다.

절차� 프로그래�과� 비�


절차� 프로그래� �체지향 프로그래�
함수로 �루어� �래스로 �루어�
구조� 프로그래� �체지향 프로그래�
프로그램� 기능단위로 세분 프로그램� object 단위로 세분
소,중형 프로그램� �합 대형 프로그램 작성� �합

�체지향� 특성


  • ë�°ì�´í„° ì¶”ìƒ�í™”(data abstraction) : ìž�료 ê°�ì²´(data entity)들ì�˜ 중요한 특성ì�„ 모형화한다. ì�´ 모형ì�´ ê°�ì²´ì�˜ ì†�성ì�´ ë�œë‹¤.

  • 캡ìŠ�í™”(encapsulation) : ê°�ì²´ì�˜ ë‚´ë¶€ì �ì�¸ 사항과 ê°�체들간ì�˜ 외부ì �ì�¸ 사항들ì�„ 분리시킨다. ì�´ë ‡ê²Œ 캡ìŠ�í™”ë�œ ê°�ì²´ì�˜ 행위는 외부ì—�서 ë³¼ 때는 구체ì �ì�¸ 아닌 ì¶”ìƒ�ì �ì�¸ 것ì�´ ë�˜ë¯€ë¡œ ì •ë³´ ì�€ë‹‰(information hiding) ê°œë…�ì�´ 존중ë�œë‹¤. 주어진 í�´ëž˜ìФì�˜ 특정 ì—°ì‚° 기능ì�€ 메소드(method)ë�¼ê³  한다. 캡ìŠ�화는 무슨 메소드로 구현ë�˜ì—ˆëŠ”ê°€ì—� 구애받지 않고 ì¶”ìƒ�ì �으로 ì •ì�˜ë�œ ì—°ì‚° 기능ì�„ 통해 ê°�ì²´ê°€ 사용ë�˜ê³  시스템ì�˜ ìƒ�태(state)를 변화시키ë�„ë¡� 해준다.

  • combining data and behavior : 특정한 ì—°ì‚° 기능ì�„ 수행시킬 때 단순히 메세지만 전송하면 ë�œë‹¤.

  • sharing : ìž�료 구조ë°� 행위ì�˜ 공유화(sharing)는 계층 관계ì—� 놓여 있는 í�´ëž˜ìŠ¤ë“¤ ê°„ì�˜ ìƒ�ì†�성(inheritance)으로 가능하다.
    ��성� 설계 � 코드� 재사용(reuse)� �와주는 중요한 개��다.

  • 서브í�´ëž˜ìŠ¤ê°€ 수í�¼í�´ëž˜ìФì�˜ 변수와 메소드들ì�„ ìƒ�ì†�ë°›ì�„ 때 í•„ìš”ì—� ë”°ë�¼ ì •ì�˜ê°€ 구체화(specification)ë�˜ë©°, ìƒ�대ì �으로 ìƒ�위층ì�˜ í�´ëž˜ìФ ì�¼ìˆ˜ë¡� ì�¼ë°˜í™”(generalization) ë�œë‹¤ê³  ë§�한다.

  • 캡ìŠ�í™”(Capsulation) : 캡ìŠ�화는 ê°�ì²´ì�˜ ì†�ì—� 모든 함수와 ê·¸ 함수ì—� ì�˜í•´ 유통ë�˜ëŠ” ë�°ì�´íƒ€ë¥¼ ë°–ì—�서 유통시키지 않는것ì�´ë‹¤.
    겉�서 그�체를 사용하기 위한 사용� �터페�스는 제공하나 ��타를 검색, 수정 그리고 함수� �용� 위해서는 � �터페�스를 꼭 거�야 �게 하는것�다.
    즉 함수나 ��터가 그것� �해있는 �체전용으로 �다는것� �한다. 좋� 예로 ��차를 들수있다.
    ��차�는 �체 �래스를 우리가 사용하기 위해서는 알아야할 것� 운전하는 방법�� 것�다. 표지 ��나 �통신호등� 관계는 있으나 ��차를 움��기 위한 �체 �터페�스와는 아무런 관계가 없는것�다. 캡�화는 기능� 조�성과 논리성� 연관시킨다.

  • ë�°ì�´íƒ€í˜• í�´ëž˜ìŠ¤ì™€ ê°�ì²´(Class and Objectas any type data) : ìž�ë�™ì°¨ë¥¼ 움ì§�ì�´ê¸° 위한 유저가 2명 있다. ìž�ë�™ì°¨ë�¼ëŠ” ê°�ì²´ 를 둘다 사용하는ë�° 한명ì�€ 부산ì—� 가려고 하고 한명ì�€ 대구ì—� 오려고 한다.
    그렇다면 �체를 사용하여 �기는 마지막 목�지� 차�는 어디서 �기는 것�까? 바로 유저가 머릿�� ��한 목�지� 차�, 즉 주어진 ��타� 차��서 오는것�다.
    즉 어떠한 ��타형� 가지고 �하는 만�� 여러가지 �스턴스를 만들수 있다는 얘기�다.
    분명히 ��만 틀리면 ��차�체로 ����는 공통성 ��서 무수히 많� 목�지 �스턴스를 만들어 낼수 있는것�다.

  • ìƒ�ì†�성(Inheritance) : ê°�체를 ì�´ë£¨ëŠ” í�´ëž˜ìŠ¤ë¥¼ 만들때 ì�´ì „ì�˜ ì •ì�˜í–ˆë�˜ í�´ëž˜ìŠ¤ì™€ 비슷하나 다른 특ì�´í•œ 특성ì�„ 지니는 í�´ëž˜ìŠ¤ë¥¼ 만드는것ì�´ë‹¤.
    ë˜� ìž�ë�™ì°¨ë‹¤. 가진 ìž�ë�™ì°¨ì�˜ 엔진ì�´ ìœë ¥ì�´ 150마력ì�´ë‹¤. 여기다 똑같ì�€ 엔진ì�„ 하나ë�” 달아 300마력ì�´ ë�˜ì—ˆë‹¤. 즉 앞ì�˜ 150마력ì�´ë�¼ëŠ” í�´ëž˜ìФì—� ë‘�개로서 300마력ì�„ 만든다는 ê°œë…�ì�´ í�¬í•¨ 즉 ìƒ�ì†�ë�˜ì–´ìžˆëŠ”ê²ƒì�´ë‹¤. 엔진력ì�˜ í–¥ìƒ�ì�´ ì†�쉽게 ì�´ë£¨ì–´ì¡Œë‹¤. 만약 새 300마력엔진ì�„ 단 차를 산다고 하면 ë�” 힘들것ì�´ë�¼ëŠ”ê²ƒì�„ 알것ì�´ë‹¤.

  • 다형성(Polymophism) : ìƒ�ì†�성ì—�서 다형ì�˜ ê°œë…�ì�´ ë§Žì�´ 왜곡ë�˜ì–´ 보여진ê°�ì�´ 없지않으나 다형ë�„ ê°�체지향ì—�서 빼놓ì�„수 없는 특성ì�´ë‹¤.
    150마력짜리 엔진ì�„ ë‘�ê°œ 단차와 300마력짜리 엔진ì�„ 하나 단 차나 ë‘�ì°¨ì�˜ ìœë ¥ì�€ 같다. ì�´ê²ƒì�´ 다형ì�´ë‹¤. 즉 í�´ëž˜ìŠ¤ê°€ 같다는 뜻ì�´ë‹¤. ì¡°ìƒ�ê°�체로 볼때는 분명히 ê°™ì�€ ì�´ë¦„ì�´ì§€ë§Œ( ìœë ¥ì�´ 300마력ì�´ë‹¤) 전혀 실행방법ì�´ 다른 í�´ëž˜ìФì�¸ê²ƒì�´ë‹¤( 하나는 150마력엔진ì�˜ ì›�리로 움ì§�ì�´ê³  하나는 300마력 엔진ì�˜ ì›�리로 움ì§�ì�¸ë‹¤ëŠ”ê²ƒ).
    다형� 기본 �래스를 바탕으로 ��한 메모리 개�� � 다양성� 부여하는 것�다.


  • ê°�체지향 개발 단계

    1. �체지향 분�(object-oriented anaysis : OOA)


    문제를 정�하고 � 정�로부터 모형(model)들� 제작하여 실세계(real-world)� 중요한 특성들� 보여주는 단계�다. 다�과 같� 모형 들� 만들어 질 수 있다.


    �체 모형(object model) : �체들과 그 특성� �별하여 �체들� 정� 구조(static structure)와 그들간� 관계(interface)를 보여주는 �체 다�어그램(object diagram)� 작성한다.

    �� 모형(dynamic model) : 시간 �름� 따른 시스템� 변화를 보여주는 �태 다�아그램(state diagram)� 작성한다. 실시간(real-time) 시스템�서는 반드시 필요하다.

    기능 모형(fuction model) : 시스템 내�서 ��타 값� 변하는 과정� 보여주는 것으로 잘 알려진 �료 �름�(DFD)가 사용�다.



    2. �체지향 설계(object-oriented design : OOD)


    �체지향 설계는 시스템 설계와 �체 설계로 �게 나뉘어진다.


    시스템 설계(system design) : 시스템� 구조를 서브시스템으로 분해한다. � 과정중�서 성능 최� 방안, 문제 해결 전략, �� 분배 등� 확정�다.

    �체 설계(object design) : 구현� 필요한 �세한 내역� 설계 모형으로 제작하고 �세화�다. 구체�� �료구조와 알고리즘 들� 정��다.



    3. �체지향 구현(object-oriented programming : OOP)


    설계 모형� 특정 프로그램 언어로 번역하는 작업�다. �체, �래스, ��� 개�� 다 �용하는 �체지향 언어(object-oriented programming language : C++, Smalltalk 등)가 가장 좋지만 �체� 개�만 �정하고 �래스, �� 등� 고려하지 않� �체기반 언어(object-oriented based programming language : Ada 등)� 좋다.
    �한, �반�� 구조� 프로그래� 언어(structured programming language : C, Pascal 등)� �체지향 개발� 활용� 수 있는가 하면 �체 지향 ��타베�스 관리시스템(OODBMS)� 개발� �구로 �용� 수� 있다.
    �체지향� 초기개�� 프로그래� 언어로부터 시작�으나, �젠 실세계를 바�보는 새로운 시�으로 그 중요성� 변화하고 있으며, 개발언어� 너무 종�� 필요는 없다.

    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:31:20
    Processing time 0.0083 sec