Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

Možné řešení z minulého cvičení

Teorie

Vzor Observer

Propojení změnu stavu komponenty s komponentami reagujícími na tuto změnu. Objekt nazvaný subject si udržuje seznam objektů observers, které notifikuje pokaždé, když dojde ke změně stavu subject. Notifikace probíhá zavoláním metody na observeru.

Struktura objektů návrhového vzoru:

Komunikace mezi objekty:

Reálné použití

  1. MVC pattern u GUI.
  2. RSS feed - pomocí technologie RSS se mohou uživatelé internetu přihlásit k odběru novinek z webu z nějakého RSS zdroje (typicky zpravodajské servery). Kdykoliv pak dojde k přidání nového článku k danému RSS zdroji, tento článek se automaticky zobrazí v uživatelově RSS reader programu.

Příklady k řešení

Stáhněte si z repository základ cvičení 9:

https://gitlab.fel.cvut.cz/B181_B6B36OMO/seminar/tree/master/cv9_assignment

Zadání

Cvičení se věnuje vytvoření aplikace, která bude simulovat burzu pro obchod s kryptoměnou - v našem konkrétním příkladě ani nebudeme potřebovat funkcionalitu pro provádění samotných transakcí, pouze budeme sledovat jakým způsobem se vyvíjí síla kryptoměny. Aplikace se skládá ze dvou dílčích částí:

  1. Serverová část - centrální bod systému, který sleduje dopady vnějších a vnitřních faktorů na sílu kryptoměny a o změnách notifikuje zájemce.
  2. Klientská část - pro představu si ji můžete představit jako logiku běžící na mobilní aplikaci, ve které si můžete nastavit, kterou měnu máte zájem sledovat - podle toho vám server bude posílat notifikace v případě změny kurzu měny.

Pro lepší pochopení jednotlivých tříd můžete použít níže uvedený návrh. Pro použití tříd použijte připravenou třídu Main.

Doplňte:

Klientská část:

  1. Implementujte třídy LitecoinClient, BitcoinClient, aby splňovaly rozhraní Observer.
  2. Implementujte předepsané metody třídy StockExchangeClient.

Serverová část:

  1. Implementujte třídu CryptocurrencyController aby splňovala rozhraní Observable.
  2. Implementuje do tříd LitecoinController, BitcoinController potřebnou logiku.
  3. Implementujte definované metody třídy StockExchangeServer.
courses/b6b36omo/labs/lab092017.txt · Last modified: 2018/11/26 21:44 by kukacdav