Lista zadań na zajęcia odbywające się 20 grudnia 2011 roku

Transkrypt

Lista zadań na zajęcia odbywające się 20 grudnia 2011 roku
Lista zadań na zajęcia odbywające się 20 grudnia 2011 roku
Programowanie zespołowe
Przemysław Krysztowiak, [email protected]
Każda z osób pisze swój fragment kodu, a na koniec łączymy wszystko w jeden program. Gdy ktoś skończy
swoją część, może pomagać innym.
Zadanie 1. Napisz abstrakcyjną klasę Czynnosc z chronionymi polami nazwaCzynnosci typu string, czyWykonana
typu bool oraz numerCzynnosci typu int. Publiczny konstruktor przyjmuje jeden argument – nazwa – do inicjalizacji pola nazwaCzynnosci. Pole czyWykonana inicjalizujemy na false, a numerCzynnosci inicjalizujemy przy
pomocy globalnej zmiennej nastepnyNumerCzynnosci (którą zwiększamy o 1 po użyciu).
(a) Dopisz do klasy Czynnosc publiczne metody: JuzWykonana() typu void, CzyWykonana() typu bool, Numer()
typu int, których działanie jest oczywiste.
(b) Dodaj do klasy Czynnosc publiczną metodę wirtualną OpisCzynnosci() typu void (bezargumentową),
wymagającą implementacji w klasie pochodnej.
Zadanie 2. Napisz klasę Zakupy dziedziczącą publicznie z Czynnosc. Konstruktor przyjmuje argument –
nazwa (typu string) i przekazuje go do konstruktora klasy bazowej.
(a) Zaimplementuj metodę OpisCzynnosci() tak, by wypisywała na ekranie napis będący konkatenacją:
numeru czynności, napisu „[zakupy]”, nazwy czynności i „[wykonane]” lub „[NIE wykonane]”.
Zadanie 3. Analogicznie do klasy Zakupy, napisz klasy Sprzatanie, Kuchnia i InnaCzynnosc, różniące się jedynie
implementacją metody wirtualnej (zamiast „[zakupy]” wklej odpowiednie słowo).
Zadanie 4. Napisz klasę PrzygotowaniaDoSwiat zawierającą trzy prywatne pola: listaCzynnosci – wektor
zawierający wskaźniki na Czynnosc, poza tym stanPortfela i pozyczone, oba typu int. Publiczny konstruktor
przyjmuje jeden argument – początkowy stan konta – i inicjalizuje nim pole stanKonta, a pozyczone ustawia na
zero. Zaimplementuj następujące publiczne metody tej klasy:
(a) WezKredyt(int pozyczka) – aktualizuje stanKonta i pozyczone, niczego nie zwraca.
(b) DodajCzynnoscDoWykonania() – dwa argumenty typu string: rodzajCzynnosci, nazwaCzynnosci; metoda dodaje do wektora listaCzynnosci wskaźnik na nowy obiekt typu Czynnosc, zależnie od podanego typu. Jeśli
rodzajCzynnosci to „zakupy”, używamy klasy Zakupy, itp.
(c) PrezentujPrzygotowania() – niczego nie zwraca; wypisuje na ekranie „Stan konta: ..., w tym pozyczone:
...”, a potem w kolejnych linijkach wypisuje wszystkie czynności z listy, przy pomocy metody wirtualnej
OpisCzynnosci().
(d) CzynnoscWykonana() – przyjmuje numer czynności, biegnie po liście czynności i jak znajdzie tę z pasującym numerem, to wywołuje na niej metodę JuzWykonana().
Zadanie 5. Napisz funkcję main(); zadeklaruj w niej obiekt typu PrzygotowaniaDoSwiat, a potem powtarzaj
w pętli:
1. Wywołaj PrezentujPrzygotowania().
2. Wypisz możliwe opcje: „1 – nowa czynnosc, 2 – czynnosc wykonana, 3 – kredyt, 4 – koniec”.
3. Wczytaj komendę z klawiatury.
4. Jeśli komenda jest równa „1”:
(a) wypisz na ekranie „podaj rodzaj czynnosci: zakupy lub ...”,
(b) wczytaj rodzaj czynności z klawiatury,
(c) wypisz na ekranie „podaj nazwe czynnosci:”,
(d) wczytaj z klawiatury nazwę czynności,
(e) wywołaj DodajCzynoscDoWykonania().
5. Jeśli komenda jest równa „2”:
(a) wczytaj z klawiatury numer czynności,
(b) wywołaj CzynnoscWykonana(), podając wczytany numer.
6. Jesli komenda jest rowna „3”:
(a) wypisz na ekranie „podaj kwote pozyczki:”,
(b) wywołaj WezKredyt().
7. Jeśli komenda jest równa „4”, to wyjdź z pętli.
Podpowiedź: można wczytać słowo zawierające spacje, wykorzystując cin.getline(). Przedtem warto
odśmiecić strumień wejściowy wywołując cin.ignore().
Zadanie domowe. Zastanów się, jak należy przeprojektować napisaną aplikację, żeby łatwo było dodać
do niej możliwość zapisu bieżącego stanu programu do pliku (i wczytać przy następnym uruchomieniu).