Akademia Humanitas, lato 2023 : ćwiczenia i programy demonstracyjne
-
Wprowadzenie do definiowania prostych klas: symulacja systemu alrmowego, demo Java, demo C#.
-
Ćwiczenie pierwsze: definiowanie prostych klas, agregacja (pdf).. Do wykonania ćwiczenia będzie potrzebna interakcja z użytkownikiem via konsola, demo prostego menu konsolowego: implementacja C#, implementacja Java.
- Ćwiczenie 3 dla grup IO: Proszę się zapoznać z koncepcją wzorca projektowego kompozyt (implementacje: Java, pdf). Bazując na tych informacjach proszę przekształcić zamieszczony wyżej kod symulatora systemu alarmowego w taki sposób, aby do systemu alarmowego można było dodawać jako element inny system alarmowy. W ten sposób będzie można tworzyć hierarchicznie zorganizowane systemy alarmowe.
- Ćwiczenie 4 dla grup IO: Proszę się zapoznać z koncepcją wzorca projektowego obserwator(implementacje: Java, pdf). Bazując na tych informacjach proszę napisać następujący program ćwiczeniowy: Załóżmy, że istnieje klasa
CzujnikTemperatury
, posiadająca prywatne poletemperatura
, przechowujące zarejestrowaną wartość temperatury zapisaną w stopniach Celsiusza. Załóżmy również, że klasa posiada metodęustaw(nowaWartość)
pozwalającą na zmianę wartości temperatury. Wartość temperatury pokazują trzy programowe wyświetlacze, reagując na każdą zmianę temperatury spowodowaną wywołaniem metodyustaw
obiektu klasyCzujnikTemperatury
. Każdy z wyświetlaczy pokazuje temperaturę w innej skali temperatur: Celsiusza, Kelvina i Fahrenheit’a. Proszę zidentyfikować jaki wzorzec projektowy dobrze opisuje przedstawioną sytuację oraz napisać prosty program demonstracyjny implementujący zidentyfikowany wzorzec.
Ćwiczenie drugie: definiowanie prostych klas, obsługa plików tekstowych (pdf)..
Materiały wykładowe
- Wprowadzenie do koncepcji obiektowości w projektowaniu i programowaniu — strukturalnie vs. obiektowo, przykład, abstrakcja, hermetyzacja, dziedziczenie (pdf).
- Polimorfizm i jego reprezentacja w wybranych językach obiektowych — dyskusja i przykłady: C++, C#, Java (pdf).
- Wprowadzenie do klas abstrakcyjnych i interfejsów— dyskusja i przykłady: C++, C#, Java (pdf).
- Proste wzorce projektowe — fasada, adapter obiektowy i klasowy, implementacje: C++, C#, Java (pdf).
Materiały do ćwiczeń
Ćwiczenie 1
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
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 o formacie:
ET 4.5 ON 4.3 LPG 2.5
Można wprowadzić w programie możliwość edycji cen w osobnym oknie.
Proszę przemyśleć możliwość definiowania w programie obiektu realizującego obliczenia spalania i kosztów przejazdu jednego kilometra, przechowującego ceny paliw i obsługującego ich ustalanie/wczytywanie. 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.
Zrealizowane projekty proszę zachować, będą brane pod uwagę przy negocjowaniu oceny zaliczeniowej.