Podstawowe wymagania względem projektów zaliczeniowych

przynajmniej kilka klas, w tym przynajmniej jedna klasa abstrakcyjna (lub interfejs)

dziedziczenie

przeciążenie metod

konstruktory i destruktory

poprawna hermetyzacja danych

przeciążenie operatorów

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)

logiczna organizacja projektu w osobnych plikach źródłowych i nagłówkowych

wykorzystanie metod wirtualnych

właściwe użycie typów

dbałość o czytelność kodu