Przykład i ćwiczenie do indywidualnej realizacji
Przykłady
Niżej dostępne są kody źródłowe programu wyznaczającego średnie zużycie paliwa na 100 km dla jakiegoś pojazdu. Wartość ta zostaje wyznaczona na podstawie przejechanego dystansu i ilości paliwa zużytego na tym dystansie. Dostępne są implementacje programiku (spakowany folder projektowy, zip):
- C++ i VCL, Borland C++ Builder 6.0
- C++ i QT, QtCreator
- C# i Windows Forms, Visual Studio 2013
- C# i WPF, Visual Studio 2017
Uwaga — powyższe przykłady zostały maksymalnie uproszczone. W efekcie są nieeleganckie, kod realizujący obliczenia jest wymieszany z kodem obsługi wizualizacji.
Ćwiczenie
Proszę pobrać kody projektów i wprowadzić następujące modyfikacje:
- Po wyliczeniu średniego spalania, program ma wyświetlić również koszt przejechania jednego kilometra.
- Użytkownik ma możliwość wybory rodzaju paliwa — benzyna, olej napędowy, gaz, wybór z wykorzystaniem komponentów „radio button”.
- Dla każdego rodzaju paliwa powinna być zdefiniowana indywidualna cena za litr, brana pod uwagę przy wyznaczaniu kosztu przejazdu jednego kilometra.
- Ceny za litr paliwa powinny być wczytywane na starcie programu z pliku tekstowego ceny.txt o formacie:
ET 4.5 ON 4.3 LPG 2.5
- Program powinien umożliwiać edycję cen w osobnym oknie, zmodyfikowane ceny powinny zostać zapisane w pliku tekstowym ceny.txt.
Wersja 5-kowa
Proszę wprowadzić w programie obiekt realizujący obliczenia spalania i kosztów przejazdu jednego kilometra, przechowującego ceny paliw i obsługującego ich ustalanie/wczytywanie (np. klasa FuelConsumptionCalculator
). Umożliwi to oddzielenie warstwy widoku (interfejs użytkownika) od warstwy „biznesowej”. Dla języka C++ proszę spróbować zdefiniować odpowiednią klasę tak, aby byłe przenośna pomiędzy środowiskiem VCL/Builder a Qt/QtCreator.
Oczywiście, stosując reguły SOLID (a szczególnie zasadę SRP) można dla treningu obowiązki klasy FuelConsumptionCalculator
rozbić na mniejsze klasy (np. wyodrębnić klasę obsługi odczytu/zapisu do pliku).
Powyższa klasa powinna być zapisana w osobnym module projektu.
Rezultat
Zrealizowane projekty proszę zachować, będą brane pod uwagę przy negocjowaniu oceny zaliczeniowej.