Więcej o klasach 99
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;}
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;)