(PROE) - projekt 1

Transkrypt

(PROE) - projekt 1
LABORATORIUM PROE.C, 16Z, PROJEKT 1
KLASA, KONSTRUKTORY I DESTRUKTORY, PRZECIĄŻANIE FUNKCJI I OPERATORÓW
Prowadzący: Grzegorz Krawczyk ([email protected]) pok. CS501
Przemysław Korpas ([email protected]) pok. 548
ZADANIE
Zaprojektować aplikację zarządzania ………………………………………. (tu wpisz swój obiekt)
INFORMACJE SZCZEGÓŁOWE
Aplikacja ma być oparta na zestawie klas, z których głównym obiektem będzie element, którym
zarządzamy. Obiekt ten ma być złożony z minimum 3 podobiektów (lub obiektów będących z nim
w relacji), w tym co najmniej jednego tworzonego dynamicznie i jednego tworzonego
automatycznie. Odwzorowanie powinno być możliwie realistyczne - dla skomplikowanych
obiektów odpowiednio uproszczone.
We wszystkich konstruktorach i destruktorach należy wstawić kod drukujący na ekran informację o
ich wywołaniu. Wyświetlenie to ma być warunkowe – jedynie w momencie zdefiniowania
zmiennej kompilacji _DEBUG. Wydruki te będą pomocne w czasie śledzenia sekwencji wywołania
konstruktorów i destruktorów.
Klasa główna ma zawierać mechanizm określania liczby stworzonych obiektów tego typu
(statyczne pole klasy), oraz statyczną metodę zwracającą to statyczne pole klasy.
Każda klasa powinna prawidłowo zachowywać się w przypadku kopiowania oraz przypisania.
Należy rozważyć realizację konstruktora kopiującego lub użycie standardowego konstruktora
kopiującego oraz operatora przypisania.
Proszę zaprojektować i zaimplementować dla klas kilka sensownych, różnorodnych operatorów
(minimum 5), w tym: jednoargumentowe, dwuargumentowe, konwersji, przypisania, indeksowe.
Każda klasa ma posiadać operator wypisania na ekran (ostream) oraz porównania.
Napisać program główny testujący klasę główną i jej podklasy (oddzielny moduł/plik). Dla testów
należy stworzyć obiekty automatyczne, dynamiczne i statyczne. Należy przetestować wszystkie
zaimplementowane operatory.
WYMAGANIA PODSTAWOWE
1. Projekt ma się kompilować (Makefile) i uruchamiać na komputerach w lab09.
2. Koncepcja wstępna w formie papierowej (oraz pdf na adres prowadzącego) zawierająca
bardzo krótki opis podziału problemu na klasy oraz zależności między nimi (0.5 – 1 str)
3. Kod źródłowy programów powinien być napisany zgodnie z regułami dobrego stylu
programowania. Na każdą klasę powinny przypadać 2 pliki - plik nagłówkowy .h i plik
definicji .cpp. Należy stosować identyfikatory ułatwiające czytającemu zrozumienie kodu).
4. Moduł testowania (podstawowe operacje + 2 przypadki brzegowe)
5. Kompilacja z włączonymi flagami -Wall -Werror
UWAGI DODATKOWE
6. Proszę przesyłać projekty spakowane na 2 dni przed terminem obrony (tj. środa do godz.
24 w tygodniu obrony) na adres mailowy prowadzącego zajęcia
7. Program powinien być napisany w zgodzie z paradygmatem obiektowym.
8. Jeżeli jest wybór pomiędzy stosowaniem mechanizmów, funkcji, instrukcji typowych dla
języka C i C++ proszę stosować odpowiednie konstrukcje właściwe dla C++ np. char* string, FILE* - iostream, itp
9. Wycieki pamięci, zakleszczenia, niespodziewane zakończenia programu to poważne błędy.
10. Końcową wersję projektu należy wysłać w czasie laboratorium na którym nastąpił termin
obrony (warunek konieczny).
KRYTERIA OCENY
Koncepcja p. obiektowego
Realizacja p. obiektowego
Konstruktory/Destruktory/op przypisania
Dynamiczne zarządzanie pamięcią
Operatory podstawowe(wypisania,porównanie)
Operatory dodatkowe
Obsługa pól statycznych
Styl programowania (czytelność)
2 pkt
2 pkt
2 pkt
3 pkt
1 pkt
2 pkt
1 pkt
2 pkt
Punkty Karne:
Problemy z kompilacją
Problemy z działaniem
Brak podziału na pliki/brak Makefile
Brak sensownych testów
Brak zrozumienia własnego kodu
Minimalna liczba punktów możliwych do uzyskania wynosi 0.
< -3:0 > pkt
< -3:0 > pkt
< -3:0 > pkt
< -3:0 > pkt
< -15:0 > pkt
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Fabryka
Klub
Restauracja
Samochód
Pociąg
Samolot
Cukiernia
Robot
Statek
Boisko
Księgarnia
Monitor
Komputer
Uczelnia
Szpital
System alarmowy
Szkoła
Park
Wypożyczalnia
Pociąg
Warsztat
Sklep
Rower
Poczta
Firma budowlana
Łódź
Kontynent
Planeta
Dom
Telefon
Miasto
Kraj
Drukarka