(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