Poznaj C++ w$ godziny0112

Poznaj C++ w$ godziny0112



Więcej o klasach 99

Klasy wykorzystujące inne klasy jako dane wewnętrzne

Bardzo często tworzy się małe klasy, które później łączy się w większe, bardziej

skomplikowane. Możesz np. zadeklarować klasę Kolo, klasę Silnik i klasę SkrzyniaBiegow, a następnie połączyć je w jednej klasie Samochód. W ten sposób powstaje relacja zawierania: Samochód zawiera silnik, koła i skrzynię biegów. Spójrzmy na inny przykład: Prostokąt składa się z odcinków. Odcinek jest wyznaczany przez dwa punkty. Każdy punkt na płaszczyźnie jest jednoznacznie wyznaczony przez dwie współrzędne x i y. Listing 7.3. pokazuje kompletną deklarację klasy Prostokąt (należy ją umieścić w pliku PROST. HPP). Ponieważ każdy prostokąt jest reprezentowany przez cztery odcinki łączące cztery punkty wyznaczone przez dwie współrzędne, dlatego najpierw deklarujemy klasę Punkt przechowującą dwie wartości: x oraz y. Listing 7.4. zawiera kompletną definicję i przykład wykorzystania stworzonych klas.

Listing 7.3. Deklarowanie klasy

1:    // Początek Prost.hpp

2:    #include <iostream.h>

3:    class Punkt // przechowuje współrzędne x i y

4:    {

5:    // nie ma konstruktora, wykorzystaj domyślny

6:    public:

7:    void UstawX(int x) { jegoX = x; }

8:    void UstawY(int y) { jegoY = y; }

9:    int PobierzX()const    { return jegoX;}

10:    int PobierzY()const    { return jegoY;}

11:    private:

12:    int jegoX;

13:    int jegoY;

14:    };    // koniec deklaracji klasy Punkt

15:

16:

17:    class Prostokąt

18:    {

19:    public:

20:    Prostokąt (int Góra, int Lewy, int Doi, int Prawy);

21:    ~Prostokat () {)

22:

23:    int PobierzGora() const {    return jegoGora; }

24:    int PobierzLewy() const {    return jegoLewy; }

25:    int PobierzDol() const { return jegoDol; }

26:    int PobierzPrawy() const { return jegoPrawy; }

27:

28:    Punkt    PobierzGornyLewy() const { return jegoGornyLewy; }

29:    Punkt    PobierzDolnyLewy() const { return jegoDolnyLewy; }

30:    Punkt    PobierzGornyPrawy() const { return jegoGornyPrawy;    }

31:    Punkt    PobierzDolnyPrawy() const { return jegoDolnyPrawy;    )

32:

33:    void OstawGornyLewy(Punkt    Lok) (jegoGornyLewy    =    Lok;)

34:    void UstawDolnyLewy(Punkt    Lok) (jegoDolnyLewy    =    Lok;}

Klasy wykorzystujące inne klasy jako dane wewnętrzne

Bardzo często tworzy się małe klasy, które później łączy się w większe, bardziej skomplikowane. Możesz np. zadeklarować klasę Kolo, klasę Silnik i klasę SkrzyniaBiegow, a następnie połączyć je w jednej klasie Samochód. W ten sposób powstaje relacja zawierania: Samochód zawiera silnik, koła i skrzynię biegów.

Spójrzmy na inny przykład: Prostokąt składa się z odcinków. Odcinek jest wyznaczany przez dwa punkty. Każdy punkt na płaszczyźnie jest jednoznacznie wyznaczony przez dwie współrzędne x i y. Listing 7.3. pokazuje kompletną deklarację klasy Prostokąt (należy ją umieścić w pliku PROST. HPP). Ponieważ każdy prostokąt jest reprezentowany przez cztery odcinki łączące cztery punkty wyznaczone przez dwie współrzędne, dlatego najpierw deklarujemy klasę Punkt przechowującą dwie wartości: x oraz y. Listing 7.4. zawiera kompletną definicję i przykład wykorzystania stworzonych klas.

Listing 7.3. Deklarowanie klasy

1:    II Początek Prost.hpp

2:    ffinclude <iostream.h>

3:    class Punkt    II przechowuje współrzędne x i y

4:    {

5:    // nie ma konstruktora, wykorzystaj domyślny

6:    public:

7:    void UstawX(int x) ( jegoX = x; )

8:    void UstawY(int y) { jegoY = y; }

9:    int PobierzX()const    { return jegoX;}

10:    int PobierzY()const    { return jegoY;)

11:    private:

12:    int jegoX;

13:    int jegoY;

14:    ); II koniec deklaracji klasy Punkt

15:

16:

17:    class Prostokąt

18:    {

19:    public:

20:    Prostokąt (int Góra, int Lewy, int Doi, int Prawy);

21:    -Prostokąt () ()

22:

23:    int PobierzGora() const {    return jegoGora; }

24:    int PobierzLewy() const {    return jegoLewy; )

25:    int PobierzDol() const { return jegoDol; )

26:    int PobierzPrawy() const { return jegoPrawy; )

27:

28:    Punkt    PobierzGornyLewy() const (    return jegoGornyLewy; )

29:    Punkt    PobierzDolnyLewy() const (    return jegoDolnyLewy; }

30:    Punkt    PobierzGomyPrawy () const    { return jegoGornyPrawy:    )

31:    Punkt    PobierzDolnyPrawy() const    { return jegoDolnyPrawy;    }

32:

33:    void UstawGornyLewy(Punkt    Lok) (jegoGornyLewy    =    Lok;}

34:    void UstawDolnyLewy(Punkt    Lok) (jegoDolnyLewy    =    Lok;)


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0108 Więcej o klasach 95 Więcej o klasach 95Dlaczego wykorzystywać kompilator d
Poznaj C++ w$ godziny0110 Więcej o klasach 97 Innym sposobem uzyskania funkcji typu inline jest umie
Poznaj C++ w$ godziny0114 Więcej o klasach 101 32 33 34:    < 35 36 37 38 39 40 41
Poznaj C++ w$ godziny0116 Więcej o klasach 103 Zwróć uwagę, że ten rodzaj błędów jest bardzo trudny
Poznaj C++ w$ godziny0148 Wskaźniki 137Dlaczego będziemy wykorzystywać wskaźniki? Jak dotąd, krok po
Poznaj C++ w$ godziny0235 226Godzina 15Listing 15.8. Wykorzystanie strcpy (). 1:    #
Poznaj C++ w$ godziny0215 206Godzina 14 W liniach 34-37 kasowane i odtwarzane są wewnętrzne zmienne
Poznaj C++ w$ godziny0092 KlasyGodzina 6    Proste klasy 7    Więcej o
Poznaj C++ w$ godziny0095 Proste klasy 81 Proste klasy 81 NOWY TERMIN Klienci twojej klasy to inne k
Poznaj C++ w$ godziny0106 Godzina 7Więcej o klasach W trakcie godziny 6, „Proste klasy”, nauczyłeś s
Poznaj C++ w$ godziny0005 Część VI Tematy specjalne 293 20 Specjalne klasy i
Poznaj C++ w$ godziny0017 XVI Poznaj C++ w 24 godziny ZAWSZE NIGDY Zawsze wykorzystuj tabele Zaws
Poznaj C++ w$ godziny0031 Godzina 2 Program w C++ Zanim zaczniemy dokładnie poznawać szczegóły progr
Poznaj C++ w$ godziny0044 28 Godzina 3 Wielu programistów preferuje wykorzystywanie jedynie małych l
Poznaj C++ w$ godziny0085 Funkcje 71Przeciążanie funkcji C++ pozwala na stworzenie więcej niż jednej
Poznaj C++ w$ godziny0093 Godzina 6 hProste klasy Klasy stanowią rozszerzenie możliwości C++, pozwal
Poznaj C++ w$ godziny0097 Proste klasy 83Dostęp do zasobów klasy Jeśli masz zdefiniowany obiekt Kot
Poznaj C++ w$ godziny0101 Proste klasy 87 Linia 12 rozpoczyna sekcję prywatną, która w tym wypadku s
Poznaj C++ w$ godziny0103 Proste klasy 89 W tym miejscu należy zwrócić uwagę na dwie ważne rzeczy: □

więcej podobnych podstron