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:
- Podstawowe zasady paradygmatu obiektowego – 2h
- Obiektowa analiza i projektowanie – 1h
- Wzorce projektowe – 3h
- Obiektowość bazująca na prototypach – 1h
- Paradygmat aspektowy – 3h
- Test-Driven Development – 1h
- Przetwarzanie rozproszone – 2h
- 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.