Udostępnij za pośrednictwem


Klasy Visual C++ w Projektancie klas

Projektant klasy obsługuje klasy C++ i visualizes macierzystych klas C++ w taki sam sposób jak kształty klas języka Visual Basic i Visual C#, z wyjątkiem klas C++ może mieć wiele relacji dziedziczenia.Można rozwinąć kształt klasy, aby pokazać więcej pól i metod w klasie lub zwinąć ją, aby zaoszczędzić miejsce.

[!UWAGA]

Projektant klasa nie obsługuje związków (specjalny typ klasy, w którym przydzielona pamięć jest niezbędne dla największych członek danych w Unii Europejskiej kwotę).

Proste dziedziczenie

Przeciągnij więcej niż jednej klasy na diagramie klasy i klasy mają relacji dziedziczenia klas, Strzałka łączy je.Strzałka wskazuje kierunek klasy podstawowej.Na przykład po wyświetleniu następujących klas na diagramie klasy strzałką łączy je, wskazując b A:

class A {};
class B : A {};

Można także przeciągnąć tylko klasy B Schemat klasy, kliknij prawym przyciskiem myszy kształt klasy B, a następnie kliknij Pokaż klasy Base.Spowoduje to wyświetlenie jej klasa podstawowa: A.

Wielokrotne dziedziczenie

Projektant klasy obsługuje wizualizacji relacje dziedziczenia wielu klasy.Wielokrotne dziedziczenie jest używana, gdy pochodne klasa ma atrybuty więcej niż jednej klasy podstawowej.Oto przykład dziedziczenie wielokrotne:

class Bird {};
class Swimmer {};
class Penguin : public Bird, public Swimmer {};

Przeciągnij więcej niż jednej klasy na diagramie klasy i relacją dziedziczenie klas wiele klas, Strzałka łączy je.Strzałka wskazuje kierunek klas podstawowych.

Prawym przyciskiem myszy kształt klasy, a następnie klikając polecenie Pokaż podstawowych klas wyświetlane klas podstawowych dla wybranej klasy.

[!UWAGA]

Pokaż otrzymane klas polecenie nie jest obsługiwane dla kodu C++.Można wyświetlić klas pochodnych, przechodząc do klasy widoku, rozwinięcie węzła typu rozwijanie Uzyskane typów podfolder, a następnie przeciągając tych typów na diagram klasy.

Aby uzyskać więcej informacji na temat dziedziczenia klas wielu zobacz Dziedziczenie wielokrotne i Wiele klas podstawowych.

Abstrakcyjne klasy

Klasa Designer obsługuje klasy abstrakcyjne (również o nazwie "abstrakcyjne klasy podstawowej").Są to klasy, która nigdy nie wystąpienia, ale z którego można czerpać innych klas.Za pomocą przykład z "Wielokrotne dziedziczenie" wcześniej w tym dokumencie, może być wystąpienia Bird klasy jako pojedyncze obiekty w następujący sposób:

int main()
{
   Bird sparrow;
   Bird crow;
   Bird eagle;
}

Jednak może nie zamierzasz utworzyć wystąpienia Swimmer klasy jako pojedyncze obiekty.Zamierzasz może być tylko do innych rodzajów zwierząt klas od niej pochodzić, na przykład, Penguin, Whale, i Fish.W takim przypadku byłoby zadeklarować Swimmer klasy jako abstrakcyjna klasa podstawowa.

Aby zadeklarować jako abstrakcyjne klasy, można użyć abstract słowa kluczowego.Członkowie oznaczona jako abstrakcyjna lub częścią klasy abstrakcyjnej są wirtualne i musi być implementowane przez klasy, które dziedziczą z klasy abstrakcyjnej.

class Swimmer abstract
{
   virtual void swim();
   void dive();
};

Można również zadeklarować klasy jako abstrakcyjne, w tym co najmniej jedną funkcję wirtualną czystego:

class Swimmer
{
   virtual void swim() = 0;
   void dive();
};

Wyświetlenie tych zgłoszeń na diagramie klasy Nazwa klasy Swimmer i pure virtual function swim są w wyświetlane kursywą kształtu Klasa abstrakcyjna, wraz z notacji Klasa abstrakcyjna.Zauważ, że kształt klasa abstrakcyjna typu jest taki sam jak zwykłej klasy, z wyjątkiem, że jego obramowanie jest linią przerywaną.

Klasy pochodzącej od abstrakcyjna klasa podstawowa musi zastępować każdy czystego funkcję wirtualną w klasie bazowej lub nie można utworzyć wystąpienia klasy pochodnej.Tak, na przykład, jeśli Fish klasy z Swimmer klasy, Fish należy zastąpić swim metody:

class Fish : public Swimmer
{
   void swim(int speed);
};

int main()
{
   Fish guppy;
}

Po wyświetleniu tego kodu na diagramie klasy Projektant klasy rysuje dziedziczenia z Fish do Swimmer.

Anonimowe klas

Klasa Designer obsługuje anonimowe klas.Typy anonimowe klasy są klasy zadeklarowane bez identyfikatora.One nie mogą mieć konstruktora lub destruktor, nie mogą być przekazywane jako argumenty do funkcji i nie mogą być zwrócone jako wartości zwracane z funkcji.Można użyć klasy anonimowe zastąpić nazwę klasy o nazwie element typedef, jak w poniższym przykładzie:

typedef struct
{
    unsigned x;
    unsigned y;
} POINT;

Struktury mogą być również anonimowe.Projektant klasy wyświetlane klas anonimowe i struktury takie same, jak jest wyświetlana odpowiednich typów.Chociaż można zadeklarować i wyświetlane klas anonimowe i struktur, klasa Designer nie będzie używać nazwę znacznika, który określisz.Zastosuje on nazwę, która generuje widoku klasy.Klasy lub struktury pojawia się w widoku klasa i klasa Designer jako element o nazwie __unnamed.

Aby uzyskać więcej informacji o klasach anonimowego, zobacz Anonimowe typy klas.

Szablon klasy

Klasa Designer obsługuje wizualizacji szablonu klasy.Deklaracje zagnieżdżone są obsługiwane.W poniższej tabeli przedstawiono niektóre typowe deklaracji.

Element kodu

Klasa projektanta widoku

template <class T>

class A {};

A<T>

Szablon klasy

template <class T, class U>

class A {};

A<T, U>

Szablon klasy

template <class T, int i>

class A {};

A<T, i>

Szablon klasy

template <class T, template <class K> class U>

class A {};

A<T, U>

Szablon klasy

W poniższej tabeli przedstawiono kilka przykładów częściowe specjalizacji.

Element kodu

Klasa projektanta widoku

template<class T, class U>

class A {};

A<T, U>

Szablon klasy

template<class T>

class A<T, T> {};

A<T, T>

Szablon klasy

template <class T>

class A<T, int> {};

A<T, int>

Szablon klasy

template <class T1, class T2>

class A<T1*, T2*> {};

A<T1*, T2*>

Szablon klasy

W poniższej tabeli przedstawiono kilka przykładów dziedziczenia w częściowej specjalizacji.

Element kodu

Klasa projektanta widoku

template <class T, class U>

class A {};

template <class TC>

class A<T, int> {};

class B : A<int, float>

{};

class C : A<int, int>

{};

A<T, U>

Szablon klasy

B

Klasa

(punkty do klasy A)

C

Klasa

(punkty do klasy A)

W poniższej tabeli przedstawiono kilka przykładów częściowe specjalizacji funkcje szablonu.

Element kodu

Klasa projektanta widoku

class A

{

template <class T, class U>

void func(T a, U b);

template <class T>

void func(T a, int b);

};

A

FUNC < T, U > (+ 1 przeciążenie)

template <class T1>

class A {

template <class T2>

class B {};

};

template<> template<>

class A<type>::B<type> {};

A<T1>

Szablon klasy

B<T2>

Szablon klasy

(B jest zawarty w klasy A, pod Zagnieżdżone typy)

template <class T>

class C {};

class A : C<int> {};

A

Klasa

-> C <int>

C<T>

Szablon klasy

W poniższej tabeli przedstawiono kilka przykładów dziedziczenie szablonów.

Element kodu

Klasa projektanta widoku

template <class T>

class C {};

template<>

class C<int> {

class B {};

}

class A : C<int>::B {};

A

Klasa

-> b

C<int>

Klasa

(B jest zawarty w klasy c pod Zagnieżdżone typy)

C<T>

Szablon klasy

W poniższej tabeli przedstawiono przykłady połączenia kanoniczny wyspecjalizowane klasy.

Element kodu

Klasa projektanta widoku

template <class T>

class C {};

template<>

class C<int> {};

class A : C<int> {};

class D : C<float> {};

A

Klasa

-> c <int>

C<int>

Klasa

C<T>

Szablon klasy

D

Klasa

-> c <float>

class B {

template <class T>

T min (const T &a, const T &b);

};

B

min <T>

Zobacz też

Informacje

Klasy, struktury i związki

Anonimowe typy klas

Dziedziczenie wielokrotne

Wiele klas podstawowych

Koncepcje

Praca z kodem Visual C++ (Projektant klas)

Inne zasoby

Szablony