- Zdefiniuj prawidłową abstrakcję (interfejsy)
- Zastosuj dziedziczenie
- Napraw enkapsulację (hermetyzację)
- Napraw problem diamentowy
- W main.cpp użyj polimorfizmu, aby za pomocą jednego obiektu można było reprezentować każdy samochód
- Napisz wyjątek InvalidGear, który będzie rzucany gdy ktoś spróbuje zmienić bieg na wsteczny przy jeździe do przodu lub gdy ktoś spróbuje wrzucić 6 bieg, a samochód posiada ich 5. Wybierz odpowiedni wyjątek z biblioteki standardowej jako klasę bazową. Gdzie ten wyjątek powinien być złapany?
- Zastanów się w jaki sposób obiekty klasy PetrolEngine lub ElectricEngine powinny być trzymane w klasach Car i/lub pochodnych - wartość, referencja, wskaźnik?
- Napraw wycieki pamięci
- Popraw interfejsy według własnego uznania, aby były jak najmniej podatne na niewłaście użycie (np. accelerate(-999); )
- Dodaj nowe klasy wyjątków, które będą rzucane w innych nietypowych sytuacjach. Spróbuj przewidzieć te nietypowe sytuacje.