C++ 구성 관계 (Composition Relationship)

2021. 3. 19. 19:37·SW개발/C++
반응형

구성 관계 (Composition Relationship)

  • 몬스터 클래스와 그의 멤버인 좌표 클래스로 비유했다.

  • Monster 클래스의 멤버로 존재하는 Position2D 클래스 인스턴스 location_ (Monster.h 참고)

    • 이 location_ 인스턴스는 Monster 클래스로 만들어진 mon1 인스턴스의 Part-of라고 할 수 있다.

    • mon1이 소멸하면 자동으로 location_도 소멸한다.

    main.cpp

    #include "Monster.h"
    
    int        main()
    {
        using namespace std;
    
        Monster mon1("Sanson", Position2D(0, 0));
    
        cout << mon1 << endl;
        {
            mon1.moveTo(Position2D(1, 1));
            cout << mon1 << endl;
        }
    }
    
    /* stdout
    Sanson 0 0
    Sanson 1 1
    */

    Monster.h

    #pragma once
    #include "Position2D.h"
    
    class Monster
    {
      std::string   name_;
      Position2D    location_;
    
    public:
      Monster(const std::string name_in, const Position2D & pos_in)
        : name_{name_in}, location_{pos_in}
      {}
    
      void    moveTo(const Position2D& pos_target)
      {
        location_.set(pos_target);
      }
    
      friend std::ostream& operator << (std::ostream& out, const Monster& monster)
      {
        out << monster.name_ << ' ' << monster.location_;
        return (out);
      }
    };

    Position2D.h

    #pragma once
    
    #include <iostream>
    
    class Position2D
    {
      int    x_;
      int    y_;
    
    public:
      Position2D(const int &x_in, const int &y_in)
        : x_(x_in), y_(y_in)
      {}
    
      void    set(const Position2D& pos_target)
      {
        set(pos_target.x_, pos_target.y_);
      }
    
      void    set(const int& x_target, const int& y_target)
      {
        x_ = x_target;
        y_ = y_target;
      }
    
      friend std::ostream& operator << (std::ostream& out, const Position2D& pos)
      {
        out << pos.x_ << ' ' << pos.y_;
        return (out);
      }
    };
반응형
저작자표시 (새창열림)

'SW개발 > C++' 카테고리의 다른 글

C++ 의존 관계 (Dependency)  (0) 2021.03.19
C++ 연계, 제휴 관계 (Association)  (0) 2021.03.19
C++ 객체들의 관계 (Object Relationship)  (0) 2021.03.19
따라하며 배우는 C++ 10장  (0) 2021.03.19
C++ initializer_list  (0) 2021.03.19
'SW개발/C++' 카테고리의 다른 글
  • C++ 의존 관계 (Dependency)
  • C++ 연계, 제휴 관계 (Association)
  • C++ 객체들의 관계 (Object Relationship)
  • 따라하며 배우는 C++ 10장
Caniro
Caniro
  • Caniro
    Minimalism
    Caniro
  • 전체
    오늘
    어제
    • 전체보기 (319)
      • SW개발 (268)
        • Java Spring (6)
        • C++ (186)
        • Python (21)
        • Linux (16)
        • 알고리즘 (13)
        • Git (4)
        • Embedded (1)
        • Raspberrypi (9)
        • React (3)
        • Web (2)
        • Windows Device Driver (6)
      • IT(개발아님) (46)
        • Windows (26)
        • MacOS (7)
        • Utility (11)
      • 챗봇 짬통 (0)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백기선
    제외
    spring
    시스템 복구
    윈도우
    citrix workspace
    KakaoTalk
    logi options
    로지텍 마우스 제스처
    Solaris 10
    MacOS
    Windows 11
    스프링
    스프링 프레임워크 핵심 기술
    알림
    EXCLUDE
    맥북 카카오톡 알림 안뜸
    java
    Workspace
    vscode
    mspaint
    그림판
    unix
    windows
    SunOS 5.1
    SFC
    dism
    윈도우 명령어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Caniro
C++ 구성 관계 (Composition Relationship)
상단으로

티스토리툴바