Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:jimp2:2017:labs:dziedziczenie2 [2017/05/09 09:27] esimon [Ćwiczenia] |
pl:dydaktyka:jimp2:2017:labs:dziedziczenie2 [2019/06/27 15:50] (aktualna) |
| |
| |
- [6 plusów] Zdefiniować interfejs Serializable zawierający pojedynczą metodę Serialize(Serializer *), każda klasa implementująca go zapisuje swój stan do obiektu Serializer pole po polu. Zdefiniować również dwie nowe klasy do projektu Academia: **Room** i **Building**. Obie klasy powinny implementować wspomniany interfejs. Zdefiniować również dwa różne seralizatory: XmlSerializer i JsonSerializer umożliwiające zapisywanie obiektów w formacie odpowiednio xml lub json. | - [6 plusów] Zdefiniować interfejs Serializable zawierający pojedynczą metodę Serialize(Serializer *), każda klasa implementująca go zapisuje swój stan do obiektu Serializer pole po polu. Zdefiniować również dwie nowe klasy do projektu Academia: **Room** i **Building**. Obie klasy powinny implementować wspomniany interfejs. Zdefiniować również dwa różne formaty seraializacji: Serializatory **XmlSerializer** i **JsonSerializer** umożliwiające zapisywanie obiektów w formacie odpowiednio xml lub json. Zacząć testy od BaseSerializerTest, który nakłada warunki na bazową klasę Serializer. |
- [6 plusów] Student wybiera się na juwenalia. Zaopatrzył się w plecak, i odpowiedni budżet. Student (akurat ten) jest niewybredny i nie ma dla niego większego znaczenia jakiej jakości prowiant kupuje. Ważne dla niego jest jednak to, żeby dotrwać do końca imprezy... Student napotyka jednak jeden z fundamentalnych problemów czasoprzestrzennych: zasobność plecaka jest ograniczona. Student napisał więc aplikację, która pozwoli mu optymalnie dobrać prowiant, tak, żeby z jednej stron nie zmarnować miejsca w plecaku, a z drugiej strony nie przeholować i uzyskać "założony stan zadowolonia imprezowego": https://en.wikipedia.org/wiki/Blood_alcohol_content. | - [6 plusów] Student wybiera się na juwenalia. Zaopatrzył się w plecak, i odpowiedni budżet. Student (akurat ten) jest niewybredny i nie ma dla niego większego znaczenia jakiej jakości prowiant kupuje. Ważne dla niego jest jednak to, żeby dotrwać do końca imprezy... Student napotyka jednak jeden z fundamentalnych problemów czasoprzestrzennych: zasobność plecaka jest ograniczona. Student napisał więc aplikację, która pozwoli mu optymalnie dobrać prowiant, tak, żeby z jednej stron nie zmarnować miejsca w plecaku, a z drugiej strony nie przeholować i uzyskać "założony stan zadowolonia imprezowego": https://en.wikipedia.org/wiki/Blood_alcohol_content. |
- Problem kolejny to taki, że student nie może wybierać z nieograniczonej liczby produktów, bo jest spóźniony na before-party. Wchodzi więc do sklepy i przebiega dział z prowiantem mijając 20 półek. Nie wie co leży na nich i biegnąc musi zdecydować, czy losowo wystawiony na półce produkt zabrać, czy nie ;) | - Problem kolejny to taki, że student nie może wybierać z nieograniczonej liczby produktów, bo jest spóźniony na before-party. Wchodzi więc do sklepy i przebiega dział z prowiantem mijając 20 półek. Nie wie co leży na nich i biegnąc musi zdecydować, czy losowo wystawiony na półce produkt zabrać, czy nie ;) |
- Po zakupach, student musi również uszeregowac prowiant w kolejności jego spożywania ;) | - Po zakupach, student musi również uszeregowac prowiant w kolejności jego spożywania ;) |
| - **[5 punktów] Dokończyć zadanie z [[https://pl.wikipedia.org/wiki/Serializacja|Serializacją]] klas Building i Room i zdefiniowanymi serializatorami XmlSerializer i JsonSerializer. Zdefiniować również BuildingRespository repozytorium przechowujące listę wszystkich budynków, z możliwością zapisania stanu wszystkich jego obiektów do przekazanego w parametrze Serializatora (metoda: void StoreAll(Serializer *serializer) const). W docelowej aplikacji powinna się oczywiści znaleźć stowarzyszona metoda odczytująca zserializowane dane i wczytująca z pliku zapisany stan aplikacji, ale nie jest to już objętę pracą domową :) Repozytorium musi udostępniać też przeciążony operator[] tablicowy zwracający optional<Building> (std::experimental::optional w C%%++%%14)** |