[ Pobierz całość w formacie PDF ]
.hppListing 6.9.RECTANGLE.cpp0: // początek rect.cpp1:2: #include "rect.hpp"3: Rectangle::Rectangle(int top, int left, int bottom, int right)4: {5: itsTop = top;6: itsLeft = left;7: itsBottom = bottom;8: itsRight = right;9:10: itsUpperLeft.SetX(left);11: itsUpperLeft.SetY(top);12:13: itsUpperRight.SetX(right);14: itsUpperRight.SetY(top);15:16: itsLowerLeft.SetX(left);17: itsLowerLeft.SetY(bottom);18:19: itsLowerRight.SetX(right);20: itsLowerRight.SetY(bottom);21: }22:23:24: // oblicza obszar prostokąta przez obliczenie25: // i pomnożenie szerokości i wysokości26: int Rectangle::GetArea() const27: {28: int Width = itsRight-itsLeft;29: int Height = itsTop - itsBottom;30: return (Width * Height);31: }32:33: int main()34: {35: //inicjalizuje lokalną zmienną typu Rectangle36: Rectangle MyRectangle (100, 20, 50, 80 );37:38: int Area = MyRectangle.GetArea();39:40: std::cout << "Obszar: " << Area << "\n";41: std::cout << "Wsp.X lewego gornego rogu: ";42: std::cout << MyRectangle.GetUpperLeft().GetX();43: return 0;44: }WynikObszar: 3000Wsp.X lewego gornego rogu: 20AnalizaLinie od 3.do 14.listingu 6.8 deklarują klasę Point (punkt), która służy do przechowywania współrzędnych x i y określonego punktu rysunku[Author ID1: at Mon Oct 22 16:04:00 2001].W swojej postaci,[Author ID1: at Mon Oct 22 16:04:00 2001] [Author ID1: at Mon Oct 22 16:05:00 2001]tym [Author ID1: at Mon Oct 22 16:05:00 2001] [Author ID1: at Mon Oct 22 16:05:00 2001]programie[Author ID1: at Mon Oct 22 16:05:00 2001] nie wykorzystujemy [Author ID1: at Mon Oct 22 16:05:00 2001]należycie [Author ID1: at Mon Oct 22 16:05:00 2001] [Author ID1: at Mon Oct 22 16:05:00 2001]klasy Point.Jej zastosowania wymagają jednak inne metody rysunkowe.UWAGA Gdy nadasz klasie nazwę Rectangle, niektóre kompilatory zgłoszą błąd, W takim przypadku po prostu zmień nazwę klasy na myRectangle.W deklaracji klasy Point, w liniach 12.i 13., zadeklarowaliśmy dwie zmienne składowe (itsX oraz itsY).Te zmienne przechowują współrzędne punktu.Zakładamy, że współrzędna x rośnie w prawo, a współrzędna y w górę.Istnieją także inne systemy.W niektórych programach okienkowych współrzędna y rośnie „w dół” okna.Klasa Point używa akcesorów inline, zwracających i ustawiających współrzędne X i Y punktu.Te akcesory zostały zadeklarowane w liniach od 7.do 10.Punkty używają konstruktora i destruktora domyślnego.W związku z tym ich współrzędne trzeba ustawiać jawnie.Linia 17.rozpoczyna deklarację klasy Rectangle (prostokąt).Klasa ta kłada się z czterech punktów reprezentujących cztery narożniki prostokąta.Konstruktor klasy Rectangle (linia 20.) otrzymuje cztery wartości całkowite, top (górna), left (lewa), bottom (dolna) oraz right (prawa).Do czterech zmiennych składowych (listing 6.9) kopiowane są cztery parametry konstruktora i tworzone są cztery punkty.Oprócz standardowych akcesorów, klasa Rectangle posiada funkcję GetArea() (pobierz obszar), zadeklarowaną w linii 43.Zamiast przechowywać obszar w zmiennej, funkcja GetArea() oblicza go w liniach od 28.do [Author ID1: at Mon Oct 22 16:06:00 2001]30[Author ID1: at Mon Oct 22 16:06:00 2001].i 29[Author ID1: at Mon Oct 22 16:06:00 2001] listingu 6.9.W tym celu oblicza szerokość i wysokość prostokąta, następnie mnoży je przez siebie.Uzyskanie współrzędnej x lewego górnego wierzchołka prostokąta wymaga dostępu do punktu UpperLeft (lewy górny) i zapytania o jego współrzędną X.Ponieważ funkcja GetUpperLeft() jest funkcją klasy Rectangle, może ona bezpośrednio odwoływać się do prywatnych danych tej klasy, włącznie ze zmienną (itsUpperLeft).Ponieważ itsUpperLeft jest obiektem klasy Point, a zmienna itsX tej klasy jest prywatna, funkcja GetUpperLeft() nie może odwoływać się do niej bezpośrednio.Zamiast tego, w celu uzyskania tej wartości musi użyć publicznego akcesora GetX().Linia 33.listingu 6.9 stanowi początek ciała programu.Pamięć nie jest alokowana aż do linii 36.; w obszarze tym nic się nie dzieje.Jedyna rzecz, jaką zrobiliśmy, to poinformowanie kompilatora, jak ma stworzyć punkt i prostokąt (gdyby były potrzebne w przyszłości).W linii 36.definiujemy obiekt typu Rectangle, przekazując mu wartości Top, Left, Bottom oraz Right.W linii 38.tworzymy lokalną zmienną Area (obszar) typu int.Ta zmienna przechowuje obszar stworzonego przez nas prostokąta.Zmienną Area inicjalizujemy za pomocą wartości zwróconej przez funkcję GetArea() klasy Rectangle [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lo2chrzanow.htw.pl