• Nie Znaleziono Wyników

Należy do menu programu dodać wywołanie metody odlegosc 3

N/A
N/A
Protected

Academic year: 2021

Share "Należy do menu programu dodać wywołanie metody odlegosc 3"

Copied!
1
0
0

Pełen tekst

(1)

Treść zadań:

1. Wykonaj program wykorzystujący klasę punkt do animacji punktu przesuwanego w górę, w dół, w prawo i w lewo w oparciu o jeden z danych programów (instrukcja switch wykonywana w pętli)

http://sprocket.ict.pwr.wroc.pl/~zkruczkiewicz/wyklady/OBCPLUS/LAB1_1.CPP http://sprocket.ict.pwr.wroc.pl/~zkruczkiewicz/wyklady/OBCPLUS/LAB1_2.CPP

2. Wykonaj program, w którym są dwa obiekty typu punkt. Jeden z nich jest animowany tak, jak w zadaniu 1. Drugi jest jedynie zdefiniowany z danymi w kostruktorze wartościami współrzędnymi x i y. Należy dodać do klasy punkt metodę odleglosc, która na podstawie tw. o przeciwprostokątnej trójkąta prostokątnego (x-p.x, y-p.y) podaje odleglosc między dwoma punktami. Należy do menu programu dodać wywołanie metody odlegosc

3. Należy przeciążyć nazwę metody odleglosc. Ta metoda teraz mierzy odległość między obiektem typu punkt a punktem (0,0). Należy poszerzyć program 2 o wywołanie nowej metody.

4. Należy wprowadzić dwie metody porownaj, przeciążając ich nazwę. Jedna z nich porównuje współrzędne dwóch punktów – animowanego i jedynie zdefiniowanego. Druga z nich sprawdza, czy współrzędne animowanego punktu są poza prostokątem: lewy górny róg (1,1) oraz prawy dolny punkt (80,25) – jeśli są poza tym prostokątem, należy współrzędnym punktu nadać wartości domyślne (np. 40,10). Należy te metody wywołać jako opcje w programie.

5. Należy podzielić program czwarty na plik nagłówkowy (zawierający deklarację klasy punkt), plik modułowy (zawierający definicje metod klasy punkt) oraz plik zawierający funkcję main. Zastosować do animacji figurę typu kwadrat, który posiada jeden z atrybutów obiekt typu punkt oraz drugi zwykły atrybut zawierający długość boku.

Zastosować listę argumentów do budowy konstruktora w klasie kwadrat.

6. Napisz program oparty na programie z punktu 5, który zawiera trzy operatory przeciążone: - oraz dwa wybrane z grupy: +, ==, !=, <=, >= ,<,>. Metody operatorowe powinny spełniać podobne zadania jak zwykle metody (odlegosc , porownaj). Należy dodać składowe typu static: static int ile_punktow oraz static int liczba_punktow() oraz static int ile_kwadratow oraz static int liczba_kwadratow(). Składowa ile_punktów powinna być zwiększana w konstruktorze punkt i zmniejszana w destruktorze ~punkt, składowa ile_kwadratow zwiększana w konstruktorze kwadrat i zmniejszana w destruktorze ~kwadrat. Wartość tych liczników obiektów typu punkt i typu kwadrat należy wyświetlać w momentach, kiedy są tworzone i usuwane obiekty typu punkt oraz typu kwadrat.

7. Program do animacji obiektów klas punkt i kwadrat. Podane dalej metody należy wykorzystać w scenariuszu animacji.

Napisz program, który jest rozszerzeniem programu z p.6. Zawiera on operator przeciążony na standardowe wyjście, który pozwala wyświetlać obiekt na ekranie w następujący sposób: cout<<p<<endl;, oraz operator przeciążony na standardowe wejście pozwala wprowadzać dane z klawiatury: cin>>p; gdzie p jest obiektem typu punkt.

Zastosować zaprzyjaźnione funkcje operatorowe. Wykonać je dla klasy punkt i kwadrat.

Wykonać wybrany z dwuargumentowych operatorów przeciążonych z punktu 2 (np.+) jako funkcje zaprzyjaźnioną. W metodzie odleglosc przekazać obiekt typu punkt przez wartość i sprawdzić wartość licznika ile_punktow, czy zawiera prawidłową liczbę punktów. Porównać ten przypadek z zad. z p.6.

8. Program do animacji obiektów klas punkt i kwadrat. Podane dalej metody należy wykorzystać w scenariuszu animacji.

Może to być program, który jest rozszerzeniem programu z punktu 7. W programie należy zastosować przeciążone operatory indeksowania: jeden do pobrania wartości składowej x lub y (powinien przez return zwracać wartość x i y)- używane w opcji, która

(2)

wyświetla dane figury, drugi do wprowadzania danych do składowej x lub y (powinien zwracać przez return referencję do składowej x i y) – wywoływanie zamiast metody przesun. Do przeciążenia tych operatorów należy zastosować słowo kluczowe const.

Przykłady wywołania tych operatorów:

cout<<p[0]<<endl; cout<<p[1]<<endl;

cin>>p[0]; cin>>p[1]; gdzie p[0] to p.x i p[1] to p.y

Operatory powinny działać dla obiektów klasy kwadrat: k[0] powinno odwoływać sie do srodek.x, k[1] do srodek.y, k[2] do boku kwadratu.

Uwaga: zdefiniować obiekt const p1(3,8); i wywołać cout<<p1[0]<<endl;

cout<<p1[1]<<endl; Który z operatorów przeciążonych indeksowania będzie wywolany?

9. Program do animacji obiektów klas punkt i kwadrat. Podane dalej metody należy wykorzystać w scenariuszu animacji.

Zastosuj dziedziczenie jednobazowe do realizacji klasy kwadrat. Program powinien realizować funkcje zaproponowane w programie 7. Należy przedefiniować wybrane metody z klasy punkt. Oznacza to wykonanie metod w klasie kwadrat o takich samych nagłówkach, lecz rozszerzonych scenariuszach działania np. dodatkowo na atrybucie bok klasy kwadrat. Program powinien przedefiniować następujące metody:

a) przedefiniować metodę porownaj, która w klasie kwadrat powinna sprawdzić, czy kwadrat ma współrzędne punktu pokrywające się ze współrzędnymi (0,0) i posiada długość boku równą 1 i jest wywołana k1.porownaj(). Przedefiniowywana metoda w klasie punkt sprawdza jedynie pokrywanie się punktu ze środkiem współrzędnych (0,0) i jest wywoływana: p1.porownaj()

b) przedefiniować metodę operatorową operator+, która w klasie kwadrat powinna być zdefiniowana następująco: kwadrat& operator+(int a) i służy do powiększania wszystkich składowych o wartość a (x, y oraz bok). Operator przedefiniowywany w klasie punkt: punkt& operator+(int a) powiększa składowe x i y o wartość a.

c) Należy wykonać dwie wersje programu: jedną z konstruktorami bez listy argumentów oraz drugą z konstruktorami z listą parametrów.

Uwaga:

1) Należy w kodzie przedefiniowanych metod zastosować wywołanie metod przedefiniowywanych stosując operator ::

2) Należy zastosować w programie przedefiniowane metody 10. Wykonaj program na podstawie punktu 9 wykorzystując dziedziczenie wielobazowe:

punkt->kwadrat, punkt->prostokąt oraz kwadrat, prostokat->prostokat_kwadrat, tworząc obiekty jako figury składające się na z kwadratu i prostokąta.

10.1 – wykonaj program z dziedziczeniem z powtórzeniami 10.2 - wykonaj program z dziedziczeniem bez powtórzeń

Program powinien rysować w trybie znakowym dowolny obiekt z tej rodziny. Część metod należy wykonać jako przeciążone operatory.

11. Zastosuj polimorfizm do wykonanego zadania 10 uogólniając metody rysuj, odleglosc, porownaj w wersji wirtualnej zwykłej metody oraz wirtualnej operatorowej. Należy kierować się ograniczeniem rozmiaru programu, aby stał się mniejszy niż program z punktu 10. W programie powinny wystąpić pojedyncze obiekty z rodziny zdefiniowanych klas.

12. Zastosuj strukturę danych typu kolejka i wykorzystaj polimorfizm w klasach z p. 11 dla tych metod, które najczęściej są używane np. rysuj, odleglosc, porownaj w wersji metody zwykłej wirtualnej lub operatorowej wirtualnej:

12.1. w wersji tablicowej 12.2 w wersji wiązanej listy

(3)

w celu wykonania programu animującego dużą liczbę obiektów.

13. Zapisz do pliku dane z programu 12 za pomocą obiektowego wejścia/wyjścia za pomocą przeciążonych operatorów >> oraz <<.

Cytaty

Powiązane dokumenty

Należy wykonać dwie wersje programu: jedna z konstruktorami zwykłym (z parametrami domyślnymi) i kopiującym dla klasy kolo bez listy argumentów oraz druga z

void write(char[] cbuf, int off, int len) – metoda, która czyta z tablicy cbuf od indeksu off liczbę len znaków i zapisuje do pliku 5) Część łańcucha można zapisać

Proszę obejrzeć kolaż i uzupełnić tekst słuchając nagrania nr.1 z załącznika.. Możecie sprawdzić poprawność wykonanego zadania słuchając nagrania nr.2

Czy istnieje taki ostrosłup czworokątny oraz taka płaszczyzna przecina- jąca wszystkie jego krawędzie boczne, że pole uzyskanego przekroju jest więk- sze od pola podstawy

• Wireless -&gt; wlan1 -&gt; Mode: ap-bridge, SSID: dowolna etykietka, proponuje się ssid_NrStanowiskaAp0, frequency: dowolna częstotliwość nie zajęta przez inne grupy;

Połącz z miejscem pracy (vpn i inne) -&gt; (jeśli już jakieś połączenie było zrobione, wtedy „Nie, utwórz nowe połączenie”) -&gt; Użyj mojego połączenia

Ile strzałów należy oddać, aby z praw- dopodobieństwem 0,95 lub większym, można było twierdzić, że cel został trafiony co najmniej raz2. W schemacie Bernoullie’go o 4

Dzieje się tak szczególnie w pierwszych latach życia, kiedy to dziecko wykazuje tak niespecyficzny obraz zaburzeń w rozwoju, że trudno jest zdecydowanie stwierdzić,