Kod przedmiotu 07 67 4010 30
Liczba punktów ECTS 6
Nazwa w języku prowadzenia
Component Programming
Nazwa w języku polskim Component Programming (Programowanie komponentowe)
Nazwa w języku angielskim
Component Programming
Język prowadzenia zajęć angielski
Formy zajęć
Liczba godzin w semestrze
Wykład Ćwiczenia Laboratorium Projekt Seminarium Inne E-learning
Godziny kontaktowe 30 30
Kształcenie na odległość Nie Nie Nie Nie Nie Nie Nie
Udział wagowy w ocenie końcowej. 0,40 0,60
Jednostka prowadząca Instytut Informatyki
Kierownik przedmiotu dr inż. Marcin Kwapisz
Realizatorzy przedmiotu dr inż. Marcin Kwapisz, mgr inż. Wiktor Wandachowicz
Wymagania wstępne
Object Oriented Programming
Przedmiotowe efekty uczenia się
  1. WYJAŚNIA SPECYFIKACJĘ trójwarstwowej architektury oprogramowania, czyli warstwy dostępu do danych, logiki aplikacji i interfejsu użytkownika,
  2. DYSKUTUJE I OCENIA użyteczność i zgodność przykładowych komponentów, bibliotek/pakietów w wybranej technologii i JEST W STANIE ZAPROPONOWAĆ ULEPSZENIA poprzez dziedziczenie klas i nadpisywanie ich metod
  3. UŻYWA DOKUMENTACJI TECHNICZNEJ standardowych pakietów/bibliotek w języku niezależnym sprzętowo, w szczególności najczęściej używanych komponentów reprezentujących struktury danych i algorytmy ich przetwarzania,
  4. ROZPOZNAJE PODSTAWOWE MECHANIZMY I METODY komunikacji pomiędzy oprogramowaniem i zewnętrznymi źródłami danych, np. relacyjnymi bazami danych
  5. PROJEKTUJE hierarchie klas i pakietów w celu programowania komponentów wielokrotnego wykorzystania spełniających wymagania architektury wielowarstwowej i zadań przypisanych do każdej warstwy
  6. STOSUJE proste kody i komponenty oraz TWORZY własne pakiety/biblioteki, klasy i metody wchodzące w skład warstwy logiki aplikacji i warstwy dostępu do danych
  7. STOSUJE pakiety i komponenty w technologiach o źródłach otwartych do projektowania warstwy logiki aplikacji i warstwy dostępu do danych
  8. ADAPTUJE wybrane mechanizmy i metody komunikacji do oprogramowania projektowanego i implementowanego zgodnie z wymaganiami architektury trójwarstwowej przy użyciu komponentów
  9. KOMUNIKUJE tworzone oprogramowanie z użytkownikami oraz zewnętrznymi źródłami danych używając wybranych komponentów i pakietów przy pomocy graficznego interfejsu użytkownika (GUI)
  10. OCENIA zgodność własnych i innych przykładowych projektów z wymaganiami trójwarstwowej architektury aplikacji
Metody weryfikacji przedmiotowych efektów uczenia się Efekty kształcenia 1-10: ocena ćwiczeń laboratoryjnych, ocena testu praktycznego z zajęć laboratoryjnych, ocena z egzaminu
Kierunkowe efekty uczenia się
  1. potrafi zaprojektować, wdrożyć i ocenić rozwiązanie informatyczne na podstawie zdefiniowanych wymagań
Formy i warunki zaliczenia przedmiotu Ocena w wykładu jest oceną z egzaminu relizowanego w formie quizu (test wielokrotnego wyboru) na platformie Wikamp Ocena z laboratorium jest średnią oceny z praktycznego testu z zajęć laboratoryjnych (50%) i ćwiczeń laboratoryjnych (50%) Ocena końcowa jest średnią ważoną ocen z wykładu (40%) i zajęć laboratoryjnych (60%) Do egzaminu mozna podejść tylko w przypadku zaliczonego laboratorium Laboratorium i egzamin uznaje się za zaliczony w przypadku uzyskania ponad 50%
Szczegółowe treści przedmiotu WYKŁAD 1. Wprowadzenie do języka programowania Java: typy danych, instrukcje, algorytmy 2. Własne kolekcje, wzorzec projektowy iteratora, interfejsy i komponenty. Testowanie jednostkowe oprogramowania w procesie wytwarzania oprogramowania 3. Typy generyczne - programowanie uogólnione na poziomie klas i interfejsów, wielokrotne wykorzystanie tego samego kodu, modularność oprogramowania 4. Kolekcje i mapy w Java API - właściwości, warianty kolekcji: niemodyfikowalne, synchronizowane. Strumienie w kolekcjach, przetwarzanie strumieni danych, elementy programowania funkcyjnego 5. Dziedziczenie i kwalifikatory dostępu, przeciążanie i nadpisywanie metod, polimorfizm 6. Standardowa serializacja danych. Komponenty, modele warstwowe, interfejsy jako metoda wiązania komponentów 7. Standardowe interfejsy Java API - naturalny porządek obiektów w zbiorze, równość obiektów, algorytmy hashujące w kolekcjach i mapach, sortowanie. Klasy anonimowe, wewnętrzne, lokalne. Komparator jako interfejs funkcjonalny, bepośrednie odwołania do funkcji 8. Internacjonalizacja i lokalizacja aplikacji w systemach komputerowych. Komponenty Java API dla i18n i l10n 9. Zintegrowane środowiska programistyczne do budowy aplikacji Java 10. Zaawansowane operacje plikowe i w systemie plików, buforowanie, bezpośredni dostęp do zasobów systemu operacyjnego. 11. Wyjątki Java API i własne struktury klas 12. Wzorce projektowe DI, IoC, obserwator, delegat, dekorator, interceptor na przykładzie kontenera CDI (JBoss Weld), luźnie wiązania komponentów. ĆWICZENIA LABORATORYJNE Wykonanie aplikacji z GUI o architekturze komponentowej rozwiązującej prosty problem informatyczny z wtkorzystaniem technik TDD: 1. Instalacja i konfiguracja narzędzi wspierających rozwój oprogramowania i weryfikujących kod pod względem standardów kodowania 2. Algorytmy iteracyjne i rekruecnyjne do rozwiązywania określonych problemów informatycznych 3. Tworzenie własnych klas i metod, obiektowy model danych, tablice 4. Klasa Object i jej metody, nadpisywanie toString(), equals(), hashCode() 5. Programowanie z wykorzystaniem bibliotecznych struktur kontenerowych. Tworzenie i wykorzystanie wariantów kolekcji i map o innych właściwościach 6. Interfejsy standardowe Serializable, Comparable, Cloneable i Comparator 7. Utrwalanie danych z wykorzystaniem serializacji standardowej i niestandardowej 8. Biblioteki zewnętrzne wspierające proces wytwarzania oprogramowania 9. Internacjonalizacja i lokalizacja aplikacji. Prawidłowe wyświetlanie i parsowanie String do dat, czasu, waluty, procentów, liczb. Formatowanie i parsowanie komunikatów znakowych 11. Obsługa i projektowanie hierarchii wyjątków 12. Implementacja GUI z wykorzystaniem wzorców projektowych i architektonicznych: mvc, adapter, listener, delegat, fabryka 13. Zastosowanie elementów programowania funkcyjnego
Literatura podstawowa
  1. Fowler M., Beck K., Brant J., Opdyke W., Roberts D.: Refactoring: Improving the Design of Existing Code, 2nd Ed. 2018
  2. Horstmann Cay S. , Core Java Volume I--Fundamentals, 11th Ed. 2018
  3. Horstmann Cay S., Core Java, Volume II--Advanced Features, 11th Ed. 2018
  4. Booch G., Rumbaugh J., Jacobson I.:The Unified Modeling Language User Guide, 2nd Ed., Addison Wesley, 2005
  5. Martin R.C.: Clean Code:A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008
  6. Bloch J.: Effective Java, 3rd Ed., Pearson Education, 2017
  7. Java Language Specification https://docs.oracle.com/javase/specs/
  8. Java Community Process http://jcp.org
Literatura uzupełniająca
  1. https://gluonhq.com/products/javafx/
  2. http://code.makery.ch/library/javafx-8-tutorial
  3. http://docs.oracle.com/javase/8/javase-clienttechnologies.htm
  4. http://www.mkyong.com/all-tutorials-on-mkyong-com/
  5. https://dzone.com/refcardz/javafx-8-1
Bilans godzin
Forma zajęć Liczba godzin
Wykład 30
Laboratorium 30
Praca w domu 60
Przygotowanie do egzaminu 20
SUMA : 140
Uwagi
 
Data aktualizacja karty 2021-09-24 08:26:28