Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Wydział Inżynierii Mechanicznej i Mechatroniki - Mechatronika (S1)

Sylabus przedmiotu Programowanie obiektowe:

Informacje podstawowe

Kierunek studiów Mechatronika
Forma studiów studia stacjonarne Poziom pierwszego stopnia
Tytuł zawodowy absolwenta inżynier
Obszary studiów nauki techniczne, studia inżynierskie
Profil ogólnoakademicki
Moduł
Przedmiot Programowanie obiektowe
Specjalność przedmiot wspólny
Jednostka prowadząca Instytut Technologii Mechanicznej
Nauczyciel odpowiedzialny Sławomir Marczyński <Slawomir.Marczynski@zut.edu.pl>
Inni nauczyciele
ECTS (planowane) 4,0 ECTS (formy) 4,0
Forma zaliczenia zaliczenie Język polski
Blok obieralny 10 Grupa obieralna 2

Formy dydaktyczne

Forma dydaktycznaKODSemestrGodzinyECTSWagaZaliczenie
laboratoriaL5 30 2,70,50zaliczenie
wykładyW5 15 1,30,50zaliczenie

Wymagania wstępne

KODWymaganie wstępne
W-1Opanowanie języka programowania C.

Cele przedmiotu

KODCel modułu/przedmiotu
C-1Opanowanie technik programowania obiektowego.
C-2Opanowanie języka Java jako języka programowania obiektowego.

Treści programowe z podziałem na formy zajęć

KODTreść programowaGodziny
laboratoria
T-L-1Programowanie proceduralne w Javie, zapoznanie się ze środowiskiem programistycznym (IDE).4
T-L-2Tworzenie programów obiektowych bez graficznego interfejsu użytkownika: eksperymenty z klasami abstrakcyjnymi, interfejsami, klasami pochodnymi. Współpraca obiektów różnych klas. Zastosowanie słów kluczowych this i super. Klasa Math i obliczenia numeryczne w Javie. Czytanie i zapisywanie plików - strumienie I/O.6
T-L-3Testy jednostkowe.4
T-L-4Tworzenie programów z graficznym interfejsem użytkownika (Swing). Używanie wątków do zapewnienie płynnego działania aplikacji.8
T-L-5Zastosowanie UML, dobrych praktyk i wzorców GoF do refaktoryzacji oprogramowania.8
30
wykłady
T-W-1Podstawy języka Java: metoda main programu Hello World; elementy wspólne dla języka C i języka Java; typy proste i typy obiektowe. Brak wskaźników i pojęcie referencji w języku Java. Static i final w Javie. Słowo kluczowe new i tablice w języku Java. Dlaczego w Javie nie ma delete: odśmiecanie (GC) w Javie. Obiekty System.in i System.out. Obsługa wyjątkow w języku Java: znaczenie słowa kluczowego finally. Standard kodowania, sporządzanie dokumentacji (Autodoc i Doxygen).1
T-W-2Pojęcia używane w programowaniu obiektowym: obiekt, klasa, prototyp, konstruktor, destruktor, składowa, metoda. Podstawy inżynierii oprogramowania: język UML (diagram klas).1
T-W-3Dziedziczenie: klasy bazowe, klasy pochodne. Słowo kluczowe extends. Klasy abstrakcyjne. Ograniczanie dostępu do składowych klas w Javie: słowa kluczowe private, protected, public. Dziedziczenie wielobazowe i klasy zaprzyjaźnione w C++. Agregacja i kompozycja. Klasy wewnętrzne. Pojęcie interfejsu w Javie: słowo kluczowe implement. Dziedziczenie a interfejsy i klasy wewnętrzne. Składowe statyczne w klasach Javy.1
T-W-4Rzutowanie. Słowo kluczowe instanceof. Polimorfizm i metody wirtualne. Kolekcje w języku Java. Parametryzacja klas w Javie (klasy szablonowe w C++). Klasy anonimowe i notacja lambda w Javie. Programowanie generyczne. Mechanizm refleksji w Javie.1
T-W-5Wstęp do metodyk zwinnych. Testy jednostkowe.1
T-W-6Biblioteki Awt, Swt, Swing, JavaFx: tworzenie programów z graficznym interfejsem użytkownika w języku Java. Użycie XML w Javie. Komponenty Java Beans.2
T-W-7Programowanie wielowątkowe w Javie. Synchronizacja wątków. Operacje atomowe. Wątek EDT.1
T-W-8Refaktoryzacja. Zasady programowania obiektowego SOLID: zasada jednej odpowiedzialności; zasada otwarte-zamknięte; zasada substytucji Liskov; zasada segregacji interfejsów; zasada odwróconej zależności.1
T-W-9Wzorce projektowe: kreacyjne (budowniczy, fabryka abstrakcyjna, metoda wytwórcza, prototyp, singleton); strukturalne (adapter, dekorator, fasada, kompozyt, most, pełnomocnik, pyłek); behawioralne (interpreter, iterator, łańcuch zobowiązań, metoda szablonowa, obserwator, odwiedzający, pamiątka, polecenie, stan, strategia, RAII). Antywzorce.3
T-W-10Java a Internet: komunikacja za pomocą protokołów TCP i UDP, aplety Javy, bezpieczeństwo i podpisy cyfrowe. Przesyłanie obiektów przez sieć WAN. Zdalne wywołania: Java RMI i Jini. Wstęp do Java EE, serveletów i JDBC. EJB i Spring. Architektura trójwarstwowa.2
T-W-11Zastosowanie języka Java do tworzenia programów przeznaczonych dla systemu Android.1
15

Obciążenie pracą studenta - formy aktywności

KODForma aktywnościGodziny
laboratoria
A-L-1uczestnictwo w zajęciach30
A-L-2przygotowanie do zajęć10
A-L-3realizacja projektów40
80
wykłady
A-W-1Uczestnictwo w zajęciach15
A-W-2Instalacja i konfiguracja środowisk programistycznych4
A-W-3Przygotowanie do zaliczenia semestralnego10
A-W-4Wykonanie zadań własnych10
A-W-5Zaliczenie semestralne1
40

Metody nauczania / narzędzia dydaktyczne

KODMetoda nauczania / narzędzie dydaktyczne
M-1wykład informacyjny
M-2wykład problemowy
M-3ćwiczenia laboratoryjne
M-4metoda projektów

Sposoby oceny

KODSposób oceny
S-1Ocena formująca: Bieżące sprawdzanie aktywności studentów w czasie zajęć w pracowni komputerowej (aprobata, ocena ciągła, obserwacja pracy w grupach).
S-2Ocena formująca: Ocena umiejętności studentów poprzez sprawdzanie tworzonych przez nich (fragmentów) programów komputerowych w trakcie ćwiczeń. Oceniany jest kod źródłowy (zaliczenie pisemne).
S-3Ocena formująca: Ocena prezentacji sprawozdań o zrealizowanych projektach.
S-4Ocena formująca: Testy wspierane programem komputerowym.
S-5Ocena podsumowująca: Test, zaliczenie pisemne/ustne.

Zamierzone efekty kształcenia - wiedza

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
ME_1A_C24-1_W01
W wyniku przeprowadzonych zajęć student powinen być w stanie scharakteryzować pojęcia ściśle związane z konwencją programowania obiektowego oraz znać zasady projektowania aplikacji obiektowych
ME_1A_W03C-1, C-2T-W-1, T-W-2, T-W-3, T-W-8, T-W-4, T-W-9, T-W-6, T-W-7, T-W-10, T-W-11M-1, M-2, M-3, M-4S-4, S-1, S-2, S-3, S-5

Zamierzone efekty kształcenia - umiejętności

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
ME_1A_C24-1_U01
W wyniku przeprowadzonych zajęć student powinien umieć zaprojektować w konwencji programowania obiektowego i zaimplementować w języku JAVA prostą aplikację z interfejsem graficznym.
ME_1A_U07C-1, C-2T-L-1, T-L-2, T-L-5, T-L-4M-1, M-2, M-3, M-4S-1

Zamierzone efekty kształcenia - inne kompetencje społeczne i personalne

Zamierzone efekty kształceniaOdniesienie do efektów kształcenia dla kierunku studiówOdniesienie do efektów zdefiniowanych dla obszaru kształceniaOdniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżynieraCel przedmiotuTreści programoweMetody nauczaniaSposób oceny
ME_1A_C24-1_K01
Student potrafi korzystać z literatury, helpów, bibliotek zewnętrznych i materiałów dostępnych w interncie w celu poszerzenia i rozwinięcia swoich umiejętności w zakresie programowania objektowego
ME_1A_K01M-1, M-2S-4

Kryterium oceny - wiedza

Efekt kształceniaOcenaKryterium oceny
ME_1A_C24-1_W01
W wyniku przeprowadzonych zajęć student powinen być w stanie scharakteryzować pojęcia ściśle związane z konwencją programowania obiektowego oraz znać zasady projektowania aplikacji obiektowych
2,0Student nie zna słów kluczowych języka Java. Student nie potrafi rozpoznać definicji klasy w programie w języku Java. Student nie potrafi określić czym jest polimorfizm. Student nie zna jakiegokolwiek wzorca projektowego, nie wie czym są wzorce projektowe.
3,0Student zna słowa kluczowe języka Java. Student potrafi wymienić wybrane wzorce projektowe GoF. Student zna terminologię związaną z programowaniem obiektowym. Student potrafi opisać czym jest dziedziczenie i polimorfizm. Student że są testy jednostkowe.
3,5Student zna słowa kluczowe języka Java. Student zna terminologię związaną z programowaniem obiektowym. Student potrafi opisać czym jest dziedziczenie i polimorfizm. Student potrafi wymienić wybrane wzorce projektowe GoF i opisać ich przydatność. Student zna podstawy języka UML (diagram klas). Student wie czym są testy jednostkowe.
4,0Student zna słowa kluczowe języka Java. Student zna terminologię związaną z programowaniem obiektowym. Student potrafi opisać czym jest dziedziczenie i polimorfizm oraz zasady SOLID. Student potrafi wytłumaczyć czym są klasy abstrakcyjne, do czego są one potrzebne i czym, w języku Java, różnią się od interfejsów. Student potrafi wymienić wzorce projektowe GoF i opisać ich przydatność. Student zna podstawy języka UML (diagram klas). Student zna notację lambda. Student wie czym jest jest program wielowątkowy i jak prawidłowo synchronizować działania takiego programu napisanego w języku Java. Student wie czym jest refaktoryzacja, potrafi objaśnić w jaki sposób refaktoryzacja może pomóc w tworzeniu lepszych programów komputerowych. Student wie czym są testy jednostkowe.
4,5Student zna słowa kluczowe języka Java. Student zna terminologię związaną z programowaniem obiektowym. Student potrafi opisać czym jest dziedziczenie i polimorfizm oraz zasady SOLID. Student potrafi wytłumaczyć czym są klasy abstrakcyjne, do czego są one potrzebne i czym, w języku Java, różnią się od interfejsów. Student potrafi wymienić wzorce projektowe GoF i opisać ich przydatność. Student zna podstawy języka UML (diagram klas). Student zna notację lambda. Student wie czym jest jest program wielowątkowy i jak prawidłowo synchronizować działania takiego programu napisanego w języku Java. Student wie czym jest refaktoryzacja, potrafi objaśnić w jaki sposób refaktoryzacja może pomóc w tworzeniu lepszych programów komputerowych. Student zna sposób działania biblioteki Swing i alternatywnych metod tworzenia GUI. Student wie jak tworzyć ziarenka (beans) dla Javy. Student wie czym są testy jednostkowe. Wiedza studenta zdecydowanie przekracza zakres niezbędny do uzyskania oceny 4.0.
5,0Student zna niemal wszystkie zawiłości języka Java. Potrafi nie tylko scharakteryzować czym jest programowanie obiektowe w języku Java, ale także czym język Java różni się od innych języków OOP. Zna wzorce GoF i wzorce projektowe nie wymieniane przez GoF. Wykazuje dobrą znajomość UML (nie tylko diagramy klas, także diagramy przypadków użycia i inne).

Kryterium oceny - umiejętności

Efekt kształceniaOcenaKryterium oceny
ME_1A_C24-1_U01
W wyniku przeprowadzonych zajęć student powinien umieć zaprojektować w konwencji programowania obiektowego i zaimplementować w języku JAVA prostą aplikację z interfejsem graficznym.
2,0Student nie potrafi napisać jakiegokolwiek programu w języku Java: nie zna słów kluczowych, składni, typów danych. Student nie potrafi utworzyć nowego obiektu istniejącej już klasy. Student nie potrafi utworzyć nowej klasy obiektów. Student nie potrafi narysować diagramu klas UML, bo nie wie jak na tym diagramie narysować klasę. Student nie potrafi przeprowadzić jakiejkolwiek refaktoryzacji istniejącego kodu źródłowego i nie potrafi zastosować wzorców projektowych.
3,0Student potrafi napisać i uruchomić program w języku Java, nie wymagane jest przy tym ani tworzenie wielu własnych klas (wystarczy jedna, tzn. klasa zawierająca metodę main od której rozpocznie się działanie programu), ani też szczególna dbałość o architekturę. Program ten powinien być obiektowy w tym sensie, że powinny w nim być tworzone obiekty i powinny w nim być wywoływane metody inne niż statyczne. Student potrafi napisać własną klasę od podstaw (tj. bez użycia automatycznego generowania kodu). Student potrafi narysować proste diagramy klas UML, na przykład diagram ilustrujący zależność klasy pochodnej od klasy bazowej.
3,5Student potrafi napisać i uruchomić program w języku Java, wykazując należytą dbałość o konwencje takie jaki pisanie komentarzy i stosowanie właściwych nazw. Program ten powinien być obiektowy w tym sensie, że powinny w nim być tworzone obiekty i powinny w nim być wywoływane metody inne niż statyczne. Obiekty powinny współpracować ze sobą - powinna być stosowana agregacja i/lub asocjacja. Student potrafi napisać własną klasy od podstaw (tj. bez użycia automatycznego generowania kodu), a następnie zastąpić konstruktor obiektów tej klasy przez fabrykę obiektów. Student potrafi automatycznie wygenrować GUI w Swing i skojarzyć z odpowiednimi kontrolkami kod aplikacji. Student powinien w swoich programach sprawnie używać tablic i kontenerów typowych dla języka Java. Student potrafi narysować diagram klas UML. Student potrafi napisać testy jednostkowe (JUnit).
4,0Student potrafi napisać i uruchomić program w języku Java, wykazując należytą dbałość o konwencje takie jaki pisanie komentarzy i stosowanie właściwych nazw. Program ten powinien być obiektowy w tym sensie, że powinny w nim być tworzone obiekty i powinny w nim być wywoływane metody inne niż statyczne.Student potrafi napisać własną klasę od podstaw (tj. bez użycia automatycznego generowania kodu), a następnie zastąpić konstruktor obiektów tej klasy przez fabrykę obiektów oraz dokonać innych refaktoryzacji. Student powinien swobodnie posługiwać się mechanizmami dziedziczenia i polimorfizmu, w szczególności używać interfejsów i klas abstrakcyjnych. Student powinien w swoich programach sprawnie używać tablic i kontenerów typowych dla języka Java, w tym klas parametryzowalnych. Student potrafi użyć biblioteki Swing i skojarzyć z odpowiednimi kontrolkami kod aplikacji. Student powinien umieć posługiwać się wieloma wątkami. Student potrafi narysować diagram UML i użyć go jako narzędzia do ulepszenia napisanego programu. Student potrafi napisać testy jednostkowe (JUnit).
4,5Student potrafi, posiłkując się wzorcami projektowymi i diagramami UML, zaprojektować i wdrożyć obiektową architekturę programu. Student tworzy programy w języku Java, wykazując należytą dbałość o konwencje takie jaki pisanie komentarzy i stosowanie właściwych nazw oraz dobre praktyki takie jak SOLID. Student potrafi napisać odpowiednie klasy od podstaw oraz dokonać refaktoryzacji. Student powinien swobodnie posługiwać się mechanizmami dziedziczenia i polimorfizmu, w szczególności używać interfejsów i klas abstrakcyjnych. Student powinien w swoich programach sprawnie używać tablic i kontenerów typowych dla języka Java, w tym klas parametryzowalnych. Student potrafi użyć biblioteki Swing lub JavaFXi. Student powinien umieć posługiwać się wieloma wątkami zapewniając im właściwą synchronizację. Student potrafi stworzyć programy będące klientami i serwerami komunikujące się protokołem TCP/IP i/lub używające baz danych. Student stosuje wyrażenia lambda i elementy programowania funkcyjnego.
5,0Student posiadł umiejętności programowania obiektowego i użycia języka Java w stopniu heroicznym: np. programy jakie pisze są dystrybuowane przez Google Play. Inną możliwością uzyskania oceny bardzo dobrej jest spełnienie wymogów koniecznych dla oceny 4.5 w sposób nie tylko formalnie poprawny, ale wykazujący ponadprzeciętną kreatywność i elegancję oraz umiejętność posługiwania się testami jednostkowymi,

Kryterium oceny - inne kompetencje społeczne i personalne

Efekt kształceniaOcenaKryterium oceny
ME_1A_C24-1_K01
Student potrafi korzystać z literatury, helpów, bibliotek zewnętrznych i materiałów dostępnych w interncie w celu poszerzenia i rozwinięcia swoich umiejętności w zakresie programowania objektowego
2,0
3,0Student postępuje zgodnie z zasadami etyki określonymi złożonym ślubowaniem i regulaminem studiów.
3,5
4,0
4,5
5,0

Literatura podstawowa

  1. Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides, Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku., Hellion, 2010, ISBN 9788324626625
  2. Kathy Sierra, Bert Bates, Java. Rusz głową!, Hellion, 2011, II, ISBN 9788324627738
  3. Cay S. Horstmann, Gary Cornell, Java. Podstawy. Wydanie IX., Helion, 2013, IX, ISBN 9788324677580
  4. Cay S. Horstmann, Gary Cornell, Java. Techniki zaawansowane. Wydanie IX., Hellion, 2013, IX, ISBN 9788324677627
  5. Ian F. Darwin, Java. Receptury. Wydanie III, Hellion, 2015, ISBN 9788324695737

Literatura dodatkowa

  1. Krzysztof Barteczko., Podstawy programowania w języku Java, e-książka, 2008, http://edu.pjwstk.edu.pl/wyklady/poj/scb/
  2. Dokumentacja (Java API), API specification for version 8 of the Java™ Platform, Standard Edition, http://docs.oracle.com/javase/8/docs/api/

Treści programowe - laboratoria

KODTreść programowaGodziny
T-L-1Programowanie proceduralne w Javie, zapoznanie się ze środowiskiem programistycznym (IDE).4
T-L-2Tworzenie programów obiektowych bez graficznego interfejsu użytkownika: eksperymenty z klasami abstrakcyjnymi, interfejsami, klasami pochodnymi. Współpraca obiektów różnych klas. Zastosowanie słów kluczowych this i super. Klasa Math i obliczenia numeryczne w Javie. Czytanie i zapisywanie plików - strumienie I/O.6
T-L-3Testy jednostkowe.4
T-L-4Tworzenie programów z graficznym interfejsem użytkownika (Swing). Używanie wątków do zapewnienie płynnego działania aplikacji.8
T-L-5Zastosowanie UML, dobrych praktyk i wzorców GoF do refaktoryzacji oprogramowania.8
30

Treści programowe - wykłady

KODTreść programowaGodziny
T-W-1Podstawy języka Java: metoda main programu Hello World; elementy wspólne dla języka C i języka Java; typy proste i typy obiektowe. Brak wskaźników i pojęcie referencji w języku Java. Static i final w Javie. Słowo kluczowe new i tablice w języku Java. Dlaczego w Javie nie ma delete: odśmiecanie (GC) w Javie. Obiekty System.in i System.out. Obsługa wyjątkow w języku Java: znaczenie słowa kluczowego finally. Standard kodowania, sporządzanie dokumentacji (Autodoc i Doxygen).1
T-W-2Pojęcia używane w programowaniu obiektowym: obiekt, klasa, prototyp, konstruktor, destruktor, składowa, metoda. Podstawy inżynierii oprogramowania: język UML (diagram klas).1
T-W-3Dziedziczenie: klasy bazowe, klasy pochodne. Słowo kluczowe extends. Klasy abstrakcyjne. Ograniczanie dostępu do składowych klas w Javie: słowa kluczowe private, protected, public. Dziedziczenie wielobazowe i klasy zaprzyjaźnione w C++. Agregacja i kompozycja. Klasy wewnętrzne. Pojęcie interfejsu w Javie: słowo kluczowe implement. Dziedziczenie a interfejsy i klasy wewnętrzne. Składowe statyczne w klasach Javy.1
T-W-4Rzutowanie. Słowo kluczowe instanceof. Polimorfizm i metody wirtualne. Kolekcje w języku Java. Parametryzacja klas w Javie (klasy szablonowe w C++). Klasy anonimowe i notacja lambda w Javie. Programowanie generyczne. Mechanizm refleksji w Javie.1
T-W-5Wstęp do metodyk zwinnych. Testy jednostkowe.1
T-W-6Biblioteki Awt, Swt, Swing, JavaFx: tworzenie programów z graficznym interfejsem użytkownika w języku Java. Użycie XML w Javie. Komponenty Java Beans.2
T-W-7Programowanie wielowątkowe w Javie. Synchronizacja wątków. Operacje atomowe. Wątek EDT.1
T-W-8Refaktoryzacja. Zasady programowania obiektowego SOLID: zasada jednej odpowiedzialności; zasada otwarte-zamknięte; zasada substytucji Liskov; zasada segregacji interfejsów; zasada odwróconej zależności.1
T-W-9Wzorce projektowe: kreacyjne (budowniczy, fabryka abstrakcyjna, metoda wytwórcza, prototyp, singleton); strukturalne (adapter, dekorator, fasada, kompozyt, most, pełnomocnik, pyłek); behawioralne (interpreter, iterator, łańcuch zobowiązań, metoda szablonowa, obserwator, odwiedzający, pamiątka, polecenie, stan, strategia, RAII). Antywzorce.3
T-W-10Java a Internet: komunikacja za pomocą protokołów TCP i UDP, aplety Javy, bezpieczeństwo i podpisy cyfrowe. Przesyłanie obiektów przez sieć WAN. Zdalne wywołania: Java RMI i Jini. Wstęp do Java EE, serveletów i JDBC. EJB i Spring. Architektura trójwarstwowa.2
T-W-11Zastosowanie języka Java do tworzenia programów przeznaczonych dla systemu Android.1
15

Formy aktywności - laboratoria

KODForma aktywnościGodziny
A-L-1uczestnictwo w zajęciach30
A-L-2przygotowanie do zajęć10
A-L-3realizacja projektów40
80
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta

Formy aktywności - wykłady

KODForma aktywnościGodziny
A-W-1Uczestnictwo w zajęciach15
A-W-2Instalacja i konfiguracja środowisk programistycznych4
A-W-3Przygotowanie do zaliczenia semestralnego10
A-W-4Wykonanie zadań własnych10
A-W-5Zaliczenie semestralne1
40
(*) 1 punkt ECTS, odpowiada około 30 godzinom aktywności studenta
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaME_1A_C24-1_W01W wyniku przeprowadzonych zajęć student powinen być w stanie scharakteryzować pojęcia ściśle związane z konwencją programowania obiektowego oraz znać zasady projektowania aplikacji obiektowych
Odniesienie do efektów kształcenia dla kierunku studiówME_1A_W03Ma teoretycznie podbudowaną wiedzę ogólną w zakresie mechaniki, wytrzymałości konstrukcji mechanicznych, elektroniki, elektrotechniki, informatyki, sztucznej inteligencji, układów sterowania i napędów oraz metrologii i systemów pomiarowych umożliwiających opis i rozumienie zagadnień technicznych w obszarze mechatroniki.
Cel przedmiotuC-1Opanowanie technik programowania obiektowego.
C-2Opanowanie języka Java jako języka programowania obiektowego.
Treści programoweT-W-1Podstawy języka Java: metoda main programu Hello World; elementy wspólne dla języka C i języka Java; typy proste i typy obiektowe. Brak wskaźników i pojęcie referencji w języku Java. Static i final w Javie. Słowo kluczowe new i tablice w języku Java. Dlaczego w Javie nie ma delete: odśmiecanie (GC) w Javie. Obiekty System.in i System.out. Obsługa wyjątkow w języku Java: znaczenie słowa kluczowego finally. Standard kodowania, sporządzanie dokumentacji (Autodoc i Doxygen).
T-W-2Pojęcia używane w programowaniu obiektowym: obiekt, klasa, prototyp, konstruktor, destruktor, składowa, metoda. Podstawy inżynierii oprogramowania: język UML (diagram klas).
T-W-3Dziedziczenie: klasy bazowe, klasy pochodne. Słowo kluczowe extends. Klasy abstrakcyjne. Ograniczanie dostępu do składowych klas w Javie: słowa kluczowe private, protected, public. Dziedziczenie wielobazowe i klasy zaprzyjaźnione w C++. Agregacja i kompozycja. Klasy wewnętrzne. Pojęcie interfejsu w Javie: słowo kluczowe implement. Dziedziczenie a interfejsy i klasy wewnętrzne. Składowe statyczne w klasach Javy.
T-W-8Refaktoryzacja. Zasady programowania obiektowego SOLID: zasada jednej odpowiedzialności; zasada otwarte-zamknięte; zasada substytucji Liskov; zasada segregacji interfejsów; zasada odwróconej zależności.
T-W-4Rzutowanie. Słowo kluczowe instanceof. Polimorfizm i metody wirtualne. Kolekcje w języku Java. Parametryzacja klas w Javie (klasy szablonowe w C++). Klasy anonimowe i notacja lambda w Javie. Programowanie generyczne. Mechanizm refleksji w Javie.
T-W-9Wzorce projektowe: kreacyjne (budowniczy, fabryka abstrakcyjna, metoda wytwórcza, prototyp, singleton); strukturalne (adapter, dekorator, fasada, kompozyt, most, pełnomocnik, pyłek); behawioralne (interpreter, iterator, łańcuch zobowiązań, metoda szablonowa, obserwator, odwiedzający, pamiątka, polecenie, stan, strategia, RAII). Antywzorce.
T-W-6Biblioteki Awt, Swt, Swing, JavaFx: tworzenie programów z graficznym interfejsem użytkownika w języku Java. Użycie XML w Javie. Komponenty Java Beans.
T-W-7Programowanie wielowątkowe w Javie. Synchronizacja wątków. Operacje atomowe. Wątek EDT.
T-W-10Java a Internet: komunikacja za pomocą protokołów TCP i UDP, aplety Javy, bezpieczeństwo i podpisy cyfrowe. Przesyłanie obiektów przez sieć WAN. Zdalne wywołania: Java RMI i Jini. Wstęp do Java EE, serveletów i JDBC. EJB i Spring. Architektura trójwarstwowa.
T-W-11Zastosowanie języka Java do tworzenia programów przeznaczonych dla systemu Android.
Metody nauczaniaM-1wykład informacyjny
M-2wykład problemowy
M-3ćwiczenia laboratoryjne
M-4metoda projektów
Sposób ocenyS-4Ocena formująca: Testy wspierane programem komputerowym.
S-1Ocena formująca: Bieżące sprawdzanie aktywności studentów w czasie zajęć w pracowni komputerowej (aprobata, ocena ciągła, obserwacja pracy w grupach).
S-2Ocena formująca: Ocena umiejętności studentów poprzez sprawdzanie tworzonych przez nich (fragmentów) programów komputerowych w trakcie ćwiczeń. Oceniany jest kod źródłowy (zaliczenie pisemne).
S-3Ocena formująca: Ocena prezentacji sprawozdań o zrealizowanych projektach.
S-5Ocena podsumowująca: Test, zaliczenie pisemne/ustne.
Kryteria ocenyOcenaKryterium oceny
2,0Student nie zna słów kluczowych języka Java. Student nie potrafi rozpoznać definicji klasy w programie w języku Java. Student nie potrafi określić czym jest polimorfizm. Student nie zna jakiegokolwiek wzorca projektowego, nie wie czym są wzorce projektowe.
3,0Student zna słowa kluczowe języka Java. Student potrafi wymienić wybrane wzorce projektowe GoF. Student zna terminologię związaną z programowaniem obiektowym. Student potrafi opisać czym jest dziedziczenie i polimorfizm. Student że są testy jednostkowe.
3,5Student zna słowa kluczowe języka Java. Student zna terminologię związaną z programowaniem obiektowym. Student potrafi opisać czym jest dziedziczenie i polimorfizm. Student potrafi wymienić wybrane wzorce projektowe GoF i opisać ich przydatność. Student zna podstawy języka UML (diagram klas). Student wie czym są testy jednostkowe.
4,0Student zna słowa kluczowe języka Java. Student zna terminologię związaną z programowaniem obiektowym. Student potrafi opisać czym jest dziedziczenie i polimorfizm oraz zasady SOLID. Student potrafi wytłumaczyć czym są klasy abstrakcyjne, do czego są one potrzebne i czym, w języku Java, różnią się od interfejsów. Student potrafi wymienić wzorce projektowe GoF i opisać ich przydatność. Student zna podstawy języka UML (diagram klas). Student zna notację lambda. Student wie czym jest jest program wielowątkowy i jak prawidłowo synchronizować działania takiego programu napisanego w języku Java. Student wie czym jest refaktoryzacja, potrafi objaśnić w jaki sposób refaktoryzacja może pomóc w tworzeniu lepszych programów komputerowych. Student wie czym są testy jednostkowe.
4,5Student zna słowa kluczowe języka Java. Student zna terminologię związaną z programowaniem obiektowym. Student potrafi opisać czym jest dziedziczenie i polimorfizm oraz zasady SOLID. Student potrafi wytłumaczyć czym są klasy abstrakcyjne, do czego są one potrzebne i czym, w języku Java, różnią się od interfejsów. Student potrafi wymienić wzorce projektowe GoF i opisać ich przydatność. Student zna podstawy języka UML (diagram klas). Student zna notację lambda. Student wie czym jest jest program wielowątkowy i jak prawidłowo synchronizować działania takiego programu napisanego w języku Java. Student wie czym jest refaktoryzacja, potrafi objaśnić w jaki sposób refaktoryzacja może pomóc w tworzeniu lepszych programów komputerowych. Student zna sposób działania biblioteki Swing i alternatywnych metod tworzenia GUI. Student wie jak tworzyć ziarenka (beans) dla Javy. Student wie czym są testy jednostkowe. Wiedza studenta zdecydowanie przekracza zakres niezbędny do uzyskania oceny 4.0.
5,0Student zna niemal wszystkie zawiłości języka Java. Potrafi nie tylko scharakteryzować czym jest programowanie obiektowe w języku Java, ale także czym język Java różni się od innych języków OOP. Zna wzorce GoF i wzorce projektowe nie wymieniane przez GoF. Wykazuje dobrą znajomość UML (nie tylko diagramy klas, także diagramy przypadków użycia i inne).
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaME_1A_C24-1_U01W wyniku przeprowadzonych zajęć student powinien umieć zaprojektować w konwencji programowania obiektowego i zaimplementować w języku JAVA prostą aplikację z interfejsem graficznym.
Odniesienie do efektów kształcenia dla kierunku studiówME_1A_U07Potrafi przygotować proste programy komputerowe, programy dla urządzeń sterowanych numerycznie, sterowników programowalnych (PLC) oraz innych wybranych układów mikroprocesorowych.
Cel przedmiotuC-1Opanowanie technik programowania obiektowego.
C-2Opanowanie języka Java jako języka programowania obiektowego.
Treści programoweT-L-1Programowanie proceduralne w Javie, zapoznanie się ze środowiskiem programistycznym (IDE).
T-L-2Tworzenie programów obiektowych bez graficznego interfejsu użytkownika: eksperymenty z klasami abstrakcyjnymi, interfejsami, klasami pochodnymi. Współpraca obiektów różnych klas. Zastosowanie słów kluczowych this i super. Klasa Math i obliczenia numeryczne w Javie. Czytanie i zapisywanie plików - strumienie I/O.
T-L-5Zastosowanie UML, dobrych praktyk i wzorców GoF do refaktoryzacji oprogramowania.
T-L-4Tworzenie programów z graficznym interfejsem użytkownika (Swing). Używanie wątków do zapewnienie płynnego działania aplikacji.
Metody nauczaniaM-1wykład informacyjny
M-2wykład problemowy
M-3ćwiczenia laboratoryjne
M-4metoda projektów
Sposób ocenyS-1Ocena formująca: Bieżące sprawdzanie aktywności studentów w czasie zajęć w pracowni komputerowej (aprobata, ocena ciągła, obserwacja pracy w grupach).
Kryteria ocenyOcenaKryterium oceny
2,0Student nie potrafi napisać jakiegokolwiek programu w języku Java: nie zna słów kluczowych, składni, typów danych. Student nie potrafi utworzyć nowego obiektu istniejącej już klasy. Student nie potrafi utworzyć nowej klasy obiektów. Student nie potrafi narysować diagramu klas UML, bo nie wie jak na tym diagramie narysować klasę. Student nie potrafi przeprowadzić jakiejkolwiek refaktoryzacji istniejącego kodu źródłowego i nie potrafi zastosować wzorców projektowych.
3,0Student potrafi napisać i uruchomić program w języku Java, nie wymagane jest przy tym ani tworzenie wielu własnych klas (wystarczy jedna, tzn. klasa zawierająca metodę main od której rozpocznie się działanie programu), ani też szczególna dbałość o architekturę. Program ten powinien być obiektowy w tym sensie, że powinny w nim być tworzone obiekty i powinny w nim być wywoływane metody inne niż statyczne. Student potrafi napisać własną klasę od podstaw (tj. bez użycia automatycznego generowania kodu). Student potrafi narysować proste diagramy klas UML, na przykład diagram ilustrujący zależność klasy pochodnej od klasy bazowej.
3,5Student potrafi napisać i uruchomić program w języku Java, wykazując należytą dbałość o konwencje takie jaki pisanie komentarzy i stosowanie właściwych nazw. Program ten powinien być obiektowy w tym sensie, że powinny w nim być tworzone obiekty i powinny w nim być wywoływane metody inne niż statyczne. Obiekty powinny współpracować ze sobą - powinna być stosowana agregacja i/lub asocjacja. Student potrafi napisać własną klasy od podstaw (tj. bez użycia automatycznego generowania kodu), a następnie zastąpić konstruktor obiektów tej klasy przez fabrykę obiektów. Student potrafi automatycznie wygenrować GUI w Swing i skojarzyć z odpowiednimi kontrolkami kod aplikacji. Student powinien w swoich programach sprawnie używać tablic i kontenerów typowych dla języka Java. Student potrafi narysować diagram klas UML. Student potrafi napisać testy jednostkowe (JUnit).
4,0Student potrafi napisać i uruchomić program w języku Java, wykazując należytą dbałość o konwencje takie jaki pisanie komentarzy i stosowanie właściwych nazw. Program ten powinien być obiektowy w tym sensie, że powinny w nim być tworzone obiekty i powinny w nim być wywoływane metody inne niż statyczne.Student potrafi napisać własną klasę od podstaw (tj. bez użycia automatycznego generowania kodu), a następnie zastąpić konstruktor obiektów tej klasy przez fabrykę obiektów oraz dokonać innych refaktoryzacji. Student powinien swobodnie posługiwać się mechanizmami dziedziczenia i polimorfizmu, w szczególności używać interfejsów i klas abstrakcyjnych. Student powinien w swoich programach sprawnie używać tablic i kontenerów typowych dla języka Java, w tym klas parametryzowalnych. Student potrafi użyć biblioteki Swing i skojarzyć z odpowiednimi kontrolkami kod aplikacji. Student powinien umieć posługiwać się wieloma wątkami. Student potrafi narysować diagram UML i użyć go jako narzędzia do ulepszenia napisanego programu. Student potrafi napisać testy jednostkowe (JUnit).
4,5Student potrafi, posiłkując się wzorcami projektowymi i diagramami UML, zaprojektować i wdrożyć obiektową architekturę programu. Student tworzy programy w języku Java, wykazując należytą dbałość o konwencje takie jaki pisanie komentarzy i stosowanie właściwych nazw oraz dobre praktyki takie jak SOLID. Student potrafi napisać odpowiednie klasy od podstaw oraz dokonać refaktoryzacji. Student powinien swobodnie posługiwać się mechanizmami dziedziczenia i polimorfizmu, w szczególności używać interfejsów i klas abstrakcyjnych. Student powinien w swoich programach sprawnie używać tablic i kontenerów typowych dla języka Java, w tym klas parametryzowalnych. Student potrafi użyć biblioteki Swing lub JavaFXi. Student powinien umieć posługiwać się wieloma wątkami zapewniając im właściwą synchronizację. Student potrafi stworzyć programy będące klientami i serwerami komunikujące się protokołem TCP/IP i/lub używające baz danych. Student stosuje wyrażenia lambda i elementy programowania funkcyjnego.
5,0Student posiadł umiejętności programowania obiektowego i użycia języka Java w stopniu heroicznym: np. programy jakie pisze są dystrybuowane przez Google Play. Inną możliwością uzyskania oceny bardzo dobrej jest spełnienie wymogów koniecznych dla oceny 4.5 w sposób nie tylko formalnie poprawny, ale wykazujący ponadprzeciętną kreatywność i elegancję oraz umiejętność posługiwania się testami jednostkowymi,
PoleKODZnaczenie kodu
Zamierzone efekty kształceniaME_1A_C24-1_K01Student potrafi korzystać z literatury, helpów, bibliotek zewnętrznych i materiałów dostępnych w interncie w celu poszerzenia i rozwinięcia swoich umiejętności w zakresie programowania objektowego
Odniesienie do efektów kształcenia dla kierunku studiówME_1A_K01Rozumie potrzebę ciągłego uczenia się celem utrzymania poziomu i podnoszenia kompetencji zawodowych, osobistych i społecznych.
Metody nauczaniaM-1wykład informacyjny
M-2wykład problemowy
Sposób ocenyS-4Ocena formująca: Testy wspierane programem komputerowym.
Kryteria ocenyOcenaKryterium oceny
2,0
3,0Student postępuje zgodnie z zasadami etyki określonymi złożonym ślubowaniem i regulaminem studiów.
3,5
4,0
4,5
5,0