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
Wymagania wstępne
KOD | Wymaganie wstępne |
---|---|
W-1 | Opanowanie języka programowania C. |
Cele przedmiotu
KOD | Cel modułu/przedmiotu |
---|---|
C-1 | Opanowanie technik programowania obiektowego. |
C-2 | Opanowanie języka Java jako języka programowania obiektowego. |
Treści programowe z podziałem na formy zajęć
KOD | Treść programowa | Godziny |
---|---|---|
laboratoria | ||
T-L-1 | Programowanie proceduralne w Javie, zapoznanie się ze środowiskiem programistycznym (IDE). | 4 |
T-L-2 | Tworzenie 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-3 | Testy jednostkowe. | 4 |
T-L-4 | Tworzenie programów z graficznym interfejsem użytkownika (Swing). Używanie wątków do zapewnienie płynnego działania aplikacji. | 8 |
T-L-5 | Zastosowanie UML, dobrych praktyk i wzorców GoF do refaktoryzacji oprogramowania. | 8 |
30 | ||
wykłady | ||
T-W-1 | Podstawy 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-2 | Poję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-3 | Dziedziczenie: 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-4 | Rzutowanie. 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-5 | Wstęp do metodyk zwinnych. Testy jednostkowe. | 1 |
T-W-6 | Biblioteki 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-7 | Programowanie wielowątkowe w Javie. Synchronizacja wątków. Operacje atomowe. Wątek EDT. | 1 |
T-W-8 | Refaktoryzacja. 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-9 | Wzorce 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-10 | Java 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-11 | Zastosowanie języka Java do tworzenia programów przeznaczonych dla systemu Android. | 1 |
15 |
Obciążenie pracą studenta - formy aktywności
KOD | Forma aktywności | Godziny |
---|---|---|
laboratoria | ||
A-L-1 | uczestnictwo w zajęciach | 30 |
A-L-2 | przygotowanie do zajęć | 6 |
A-L-3 | realizacja projektów | 30 |
A-L-4 | Konsultacje | 2 |
68 | ||
wykłady | ||
A-W-1 | Uczestnictwo w zajęciach | 15 |
A-W-2 | Instalacja i konfiguracja środowisk programistycznych | 2 |
A-W-3 | Przygotowanie do zaliczenia semestralnego | 6 |
A-W-4 | Wykonanie zadań własnych | 8 |
A-W-5 | Zaliczenie semestralne | 2 |
33 |
Metody nauczania / narzędzia dydaktyczne
KOD | Metoda nauczania / narzędzie dydaktyczne |
---|---|
M-1 | wykład informacyjny |
M-2 | wykład problemowy |
M-3 | ćwiczenia laboratoryjne |
M-4 | metoda projektów |
Sposoby oceny
KOD | Sposób oceny |
---|---|
S-1 | Ocena 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-2 | Ocena 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-3 | Ocena formująca: Ocena prezentacji sprawozdań o zrealizowanych projektach. |
S-4 | Ocena formująca: Testy wspierane programem komputerowym. |
S-5 | Ocena podsumowująca: Test, zaliczenie pisemne/ustne. |
Zamierzone efekty kształcenia - wiedza
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposó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_W03 | — | — | C-1, C-2 | T-W-7, T-W-11, T-W-2, T-W-4, T-W-1, T-W-3, T-W-8, T-W-9, T-W-10, T-W-6 | M-2, M-1, M-3, M-4 | S-2, S-3, S-4, S-1, S-5 |
Zamierzone efekty kształcenia - umiejętności
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposó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_U07, ME_1A_U13 | — | — | C-1, C-2 | T-L-1, T-L-5, T-L-4, T-L-2 | M-2, M-1, M-3, M-4 | S-1 |
Zamierzone efekty kształcenia - inne kompetencje społeczne i personalne
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposó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_K01 | — | — | — | — | M-2, M-1 | S-4 |
Kryterium oceny - wiedza
Efekt kształcenia | Ocena | Kryterium 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,0 | Student 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,0 | Student 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,5 | Student 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,0 | Student 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,5 | Student 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,0 | Student 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łcenia | Ocena | Kryterium 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,0 | Student 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,0 | Student 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,5 | Student 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,0 | Student 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,5 | Student 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,0 | Student 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łcenia | Ocena | Kryterium 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,0 | Student 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
- Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides, Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku., Hellion, 2010, ISBN 9788324626625
- Kathy Sierra, Bert Bates, Java. Rusz głową!, Hellion, 2011, II, ISBN 9788324627738
- Cay S. Horstmann, Gary Cornell, Java. Podstawy. Wydanie IX., Helion, 2013, IX, ISBN 9788324677580
- Cay S. Horstmann, Gary Cornell, Java. Techniki zaawansowane. Wydanie IX., Hellion, 2013, IX, ISBN 9788324677627
- Ian F. Darwin, Java. Receptury. Wydanie III, Hellion, 2015, ISBN 9788324695737
Literatura dodatkowa
- Krzysztof Barteczko., Podstawy programowania w języku Java, e-książka, 2008, http://edu.pjwstk.edu.pl/wyklady/poj/scb/
- Dokumentacja (Java API), API specification for version 8 of the Java™ Platform, Standard Edition, http://docs.oracle.com/javase/8/docs/api/