Projektowanie skalowalnych systemów obiektowych

Celem przedmiotu jest poznanie dobrych praktyk projektowania obiektowego z wykorzystaniem wzorców projektowych oraz zasad SOLID. Oprócz tradycyjnego modelu obiektowości opartej o klasy, omówiona zostanie także obiektowość bezklasowa na przykładzie JavaScript.  Dodatkowo studenci dowiedzą się o zagadnieniach przecinających, trudnościach implementacji takich zagadnień w językach obiektowych i sposobie radzenia sobie z nimi przy wykorzystaniu paradygmatu aspektowego. Ostatni moduł wykładu omawia przetwarzanie rozproszone z wykorzystaniem Java RMI, MapReduce oraz Storm.

Wykład

Część wykładowa obejmuje następujące zagadnienia: 

  1. Podstawowe  zasady paradygmatu obiektowego – 2h
  2. Obiektowa analiza i projektowanie – 1h
  3. Wzorce projektowe – 3h
  4. Obiektowość bazująca na prototypach – 1h
  5. Paradygmat aspektowy – 3h
  6. Test-Driven Development – 1h
  7. Przetwarzanie rozproszone – 2h
  8. Chmury obliczeniowe – 2h

Laboratorium

Laboratorium ma charakter programistyczny. W trakcie laboratoriów studenci są zachęcani do praktykowania programowania w parach. Studenci otrzymują 1 punkt za każde pomyślnie ukończone laboratoria, które obejmują następujące zagadnienia:

Wzorce projektowe – 4h
Programowania aspektowe w AspectJ – 2h
Java RMI – 2h
JavaScript i obiektowość bezklasowa– 2h 
Apache Hadoop – 3h
Apache Storm – 2h

Do każdego modułu przypisane są dodatkowo zadania domowe za które studenci zdobywają punkty.

Projekt

Projekt koncentruje się głównie na tworzeniu modeli w notacji UML.