UML 디자인 패턴 및 C ++ 클래스로의 구현

프로그램 제작자

C ++로 어댑터 디자인 패턴 UML을 배우려고하는데 YouTube의 동영상 중 하나에서이 콘텐츠를 표시했습니다. 내 문제는 UML 그림을 C ++ 클래스 / 코드로 번역하는 것입니다.

여기에 이미지 설명 입력

내가 정말로 혼란스러워하는 것은 :

  1. 인터페이스 Target에 대한 Clinet -------> [실선] 연결. 이것이 의미하는 바는 일반적으로 Adapter 클래스가 Target을 구현하는 것과 같은 인터페이스를 구현하는 클래스를 보았습니다.

  2. 콘텐츠 어댑터가 어댑터와 함께 구성된다는 것은 여기서 무엇을 의미합니다. 컨테이너 선인 경우 전체 또는 부분적으로 소유합니까?

다음은 내가 생각할 수있는 코드 구현입니다.

class Target
{
public:
 void virtual ServiceA() = 0;
}; 

class Client : public Target
{
public:
Client(){}
void ServiceA() override {}
};

class Adaptee
{
public:
Adaptee(){}
void ServiceX(){}
};

class Adapter : public Target
{
public:
Adapter(){}
void ServiceA() override {adaptee.serviceX();}
Adaptee adaptee;
};

int main()
{
.....
}

메인 내부에서 어떻게 코딩할까요? 설명 해주십시오.

브루노

인터페이스 Target에 대한 Clinet -------> [실선] 연결. 이것이 의미하는 바는 일반적으로 Adapter 클래스가 Target을 구현하는 것과 같은 인터페이스를 구현하는 클래스를 보았습니다.

아니, 클라이언트 을 상속 / 구현하지 않는 대상 그래서,

class Client : public Target {
   ...
};

잘못되었습니다.

연결은 실제 유형이 Adapter 인 경우 에도 Client 에 속성 유형 Target있음을 나타낼 수 있으며 , 인터페이스 TargetAdapter 를 숨기는 데 사용됩니다 . 물론 C ++ 속성의 유형은 속성 을 관리하는 방법에 대한 포인터 가 아닙니다 .Target

그러나 연관은 종속성이 더 나은 경우에도 클라이언트대상을 보거나 사용 한다는 것을 표시하는 데만 사용할 수 있습니다 ( 어댑터 및 연관된 Adaptee 대신 ). Adapter 의 인스턴스 는 C ++ 또는 Target에 대한 포인터를 관리하는 다른 방법으로 입력 된 매개 변수를 통해 Client 의 작업에 제공 될 수 있습니다.Target *

콘텐츠 어댑터가 어댑터와 함께 구성된다는 것은 여기서 무엇을 의미합니다. 컨테이너 선인 경우 전체 또는 부분적으로 소유합니까?

어댑터 관련 필요로 그 Adaptee를 다중성은 1,하지만하지 않도록 협회가 구성되지 않습니다주의 완전히 소유 내가 아니라 당신이 무슨 뜻인지 이해합니다. 다이어그램의 메모가 구성 에 대해 말하는 경우에도 연결은 집계가 아닙니다 .

메인 내부에서 어떻게 코딩할까요? 설명 해주십시오.

프로그램은 다음과 같습니다.

#include <iostream>

class Target {
  public:
    virtual void serviceA() = 0;
};

class Adaptee {
  public:
    void serviceX() { std::cout << "serviceX" << std::endl; }
};

class Adapter : public Target {
  public:
    Adapter(Adaptee & a) : adaptee(a) {}
    virtual void serviceA() { adaptee.serviceX(); }
  private:
    Adaptee & adaptee;
};

class Client {
  public:
    void work(Target & t) { t.serviceA(); }
};

int main()
{
  Adaptee adaptee;
  Adapter adapter(adaptee);
  Client client;
  
  client.work(adapter);
}

컴파일 및 실행 :

pi@raspberrypi:/tmp $ g++ -Wall c.cc
pi@raspberrypi:/tmp $ ./a.out
serviceX
pi@raspberrypi:/tmp $ 

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

국가 디자인 패턴의 구성 및 구현을 사용하여

분류에서Dev

MapReduce 디자인 패턴의 Mapper 클래스 및 Reducer 클래스

분류에서Dev

정적 메서드 C #으로 명령 디자인 패턴 구현

분류에서Dev

C ++에서 방문자 디자인 패턴 구현시 오류

분류에서Dev

C #에서 ISP 디자인 패턴 구현

분류에서Dev

C ++에서 HAL 구현을위한 디자인 패턴

분류에서Dev

파이프 라인 패턴 구현, 디자인 및 기능 포인터 문제

분류에서Dev

어댑터 클래스 구현 및 MyMouseAdapter의 인스턴스 생성

분류에서Dev

recyclerview를위한 kotlin의 MVVM 디자인 패턴 구현

분류에서Dev

필터 (기준) 디자인 패턴의 올바른 구현

분류에서Dev

래핑 된 클래스의 인수로 전달할 때 Java 및 C ++ 클래스 인스턴스 간 변환

분류에서Dev

UML 시퀀스 및 클래스 다이어그램 구현

분류에서Dev

Java 추상 클래스 구현 및 디자인 방법

분류에서Dev

인터페이스 구현이 다른 클래스의 다른 인스턴스를 만들 수있는 디자인 패턴을 찾고 있습니다.

분류에서Dev

C의 계약 디자인 패턴

분류에서Dev

전략 디자인 패턴-객체로 C ++ 클래스 채우기

분류에서Dev

관찰자 패턴 C ++ 구현

분류에서Dev

C # 클래스에 이미지 및 색상 속성이있을 때 어떤 종류의 디자인 패턴을 사용해야합니까?

분류에서Dev

인터페이스 구현 및 클래스 자동 로딩

분류에서Dev

클래스 및 파생 클래스의 인스턴스를 만드는 C #

분류에서Dev

Java의 내부 클래스 및 엔 클로징 인스턴스?

분류에서Dev

서브 클래스와 같은 구조를위한 디자인 패턴

분류에서Dev

C ++ : 클래스 인스턴스의 벡터, 클래스 멤버 값으로 검색 실패

분류에서Dev

방법의 입구와 출구를 로깅 패턴 디자인?

분류에서Dev

하위 클래스 구현 메서드를 강제로 초기화하는 디자인 패턴이 있습니까?

분류에서Dev

std :: vector <T> 및 기본 멀티 스레딩 디자인 패턴

분류에서Dev

`NameBase` 클래스에서 템플릿`Name` 클래스로의 상속이있는 C ++ 관용구 (또는 패턴)

분류에서Dev

복합 디자인 패턴 및 빈 재정의

분류에서Dev

많은 메소드로 인터페이스 구현 = 거대한 클래스. 패턴이 구출됩니까?

Related 관련 기사

  1. 1

    국가 디자인 패턴의 구성 및 구현을 사용하여

  2. 2

    MapReduce 디자인 패턴의 Mapper 클래스 및 Reducer 클래스

  3. 3

    정적 메서드 C #으로 명령 디자인 패턴 구현

  4. 4

    C ++에서 방문자 디자인 패턴 구현시 오류

  5. 5

    C #에서 ISP 디자인 패턴 구현

  6. 6

    C ++에서 HAL 구현을위한 디자인 패턴

  7. 7

    파이프 라인 패턴 구현, 디자인 및 기능 포인터 문제

  8. 8

    어댑터 클래스 구현 및 MyMouseAdapter의 인스턴스 생성

  9. 9

    recyclerview를위한 kotlin의 MVVM 디자인 패턴 구현

  10. 10

    필터 (기준) 디자인 패턴의 올바른 구현

  11. 11

    래핑 된 클래스의 인수로 전달할 때 Java 및 C ++ 클래스 인스턴스 간 변환

  12. 12

    UML 시퀀스 및 클래스 다이어그램 구현

  13. 13

    Java 추상 클래스 구현 및 디자인 방법

  14. 14

    인터페이스 구현이 다른 클래스의 다른 인스턴스를 만들 수있는 디자인 패턴을 찾고 있습니다.

  15. 15

    C의 계약 디자인 패턴

  16. 16

    전략 디자인 패턴-객체로 C ++ 클래스 채우기

  17. 17

    관찰자 패턴 C ++ 구현

  18. 18

    C # 클래스에 이미지 및 색상 속성이있을 때 어떤 종류의 디자인 패턴을 사용해야합니까?

  19. 19

    인터페이스 구현 및 클래스 자동 로딩

  20. 20

    클래스 및 파생 클래스의 인스턴스를 만드는 C #

  21. 21

    Java의 내부 클래스 및 엔 클로징 인스턴스?

  22. 22

    서브 클래스와 같은 구조를위한 디자인 패턴

  23. 23

    C ++ : 클래스 인스턴스의 벡터, 클래스 멤버 값으로 검색 실패

  24. 24

    방법의 입구와 출구를 로깅 패턴 디자인?

  25. 25

    하위 클래스 구현 메서드를 강제로 초기화하는 디자인 패턴이 있습니까?

  26. 26

    std :: vector <T> 및 기본 멀티 스레딩 디자인 패턴

  27. 27

    `NameBase` 클래스에서 템플릿`Name` 클래스로의 상속이있는 C ++ 관용구 (또는 패턴)

  28. 28

    복합 디자인 패턴 및 빈 재정의

  29. 29

    많은 메소드로 인터페이스 구현 = 거대한 클래스. 패턴이 구출됩니까?

뜨겁다태그

보관