| Programowanie reaktywne w jezyku ScalaProjektowanie systemu aktorówPrzykłady
 git clone https://github.com/agh-reactive/buddychat.git cd buddychat sbt run Zadanie -- e-SklepZadanie polega na zaimplementowaniu fragmentu systemu e-Sklepu złożonego z następujących aktorów:
   Separacja logiki dziedzinowejDobrą praktyką w projektowaniu systemu aktorów jest oddzielenie logiki dziedzinowej od logiki komunikacji. Przykładowo aktor Cart nie powinien implementować jednocześnie stanu koszyka i protokołu komunikacji, bo utrudnia to testowanie samej logiki biznesowej (stanu koszyka) -- można to robić tylko przez asynchroniczny protokół komunikacji. W tym przypadku najlepiej wydzielić klasę Cart reprezentującą obiekt dziedzinowy i aktora CartActor implementującego protokół komunikacji:
  case class Cart(items: Seq[Any]) {
    def contains(item: Any): Boolean = ???
    def addItem(item: Any): Cart     = ???
    def removeItem(item: Any): Cart  = ???
    def size: Int                    = ???
  }
 class CartActor extends Actor {
    def receive = {
      case AddItem(item, count) => ???
      ...
    }
  }
  object CartActor {
    def apply(): Behavior[Command] = Behaviors.receiveMessage {
      case AddItem(item, count) => ???
      ...
    }
  }
Zadania do wykonania:
 Do implementacji powyższych zadań proszę wykorzystać przygotowany szablon z początkowymi testami znajdujący się tutaj: https://github.com/agh-reactive/reactive-scala-labs-templates Testy uruchamiamy komendą: sbt testSzablon został stworzony, aby ułatwić implementację zadań domowych i pozwolić na skupienie większej uwagi na implementacji istotnych części zadania. Może się zdarzyć, iż szablon w niktórych miejsach będzie wymagał poprawek. Takie poprawki można zgłaszać jako PR do odpowiedniego repozytorium na githubie - będzie to premiowane punktami za aktywność. Przy odbiorze zadań większy nacisk zostanie położony na zrozumienie poszczególnych fragmentów programów i mechanizmów akki. Bartosz Baliś, balis at agh edu pl Maciej Malawski, malawski at agh edu pl Katarzyna Rycerz, kzajac at agh edu pl Krzysztof Borowski, kborowski at agh edu pl |