====== Podstawowe wymagania względem projektów zaliczeniowych ====== - przynajmniej kilka klas, w tym przynajmniej jedna klasa abstrakcyjna (lub interfejs) - logiczna organizacja projektu w plikach źródłowych i nagłówkowych - dziedziczenie - przeciążenie metod - wykorzystanie metod wirtualnych - konstruktory i destruktory, w tym konstruktor kopiujący oraz konstruktor domyślny - poprawna hermetyzacja danych, odpowiednie użycie modyfikatorów dostępu (''public'', ''private'', ''protected'') - przeciążenie operatorów, w tym dociążony operator przypisania - wykorzystanie kolekcji szablonowej (lub nawet utworzenie własnej klasy, metody lub funkcji szablonowej) - wykorzystanie algorytmów operujących na kolekcjach szablonowych - operacje na plikach (odczyt, zapis danych) - właściwe użycie typów danych, w tym typów wskaźnikowych i referencyjnych - obsługa wyjątków, w tym utworzenie własnych klas wyjątków - czytelność kodu, w tym odpowiednie nazewnictwo zmiennych, funkcji i klas, a także formatowanie kodu - wykorzystanie dynamicznego przydziału pamięci (''new'', ''delete'')