Programowanie obiektowe 1000-212cPO
- https://moodle.mimuw.edu.pl/course/view.php?id=2104 (w cyklu 2023L)
- https://moodle.mimuw.edu.pl/course/view.php?id=2104 (w cyklu 2024L)
Wykład:
• Wprowadzenie do obiektowości, pojęcie klas, UML
• Składnia Javy (identyfikatory, literały, proste instrukcje, typy ref. i wart., tablice, GC, new, null, ref/wart, funkcje (met.), parametry, dokumentacja)
• Kapsułkowanie, konstruktory i inicjalizacja
• Dziedziczenie, klasy abstrakcyjne, interfejsy, polimorfizm
• Wyjątki nadzorowane i nienadzorowane
• Typy uogólnione
• Kolekcje
• GUI
• Wzorce projektowe z przykładami (singleton, fabryka, adapter, dekorator, obserwator i inne)
• Wejście/wyjście
• Wyrażenia regularne
• Opcjonalnie: łączenie z funkcyjnością, JVM, obiektowość w innych językach (C++ czy Python)
Laboratorium:
• Kompilacja, maszyna wirtualna Javy, pakiety, IDE, dokumentacja
• Interfejs dla klasy (tablice opakowane w klasę, kolejka/stos, graf)
• Programowanie imperatywne i tablice, klasy stos/kolejka, listy
• Narzędzia: git, debugger, ew. inne jak np. SpotBugs
• Wyrażenia
• Wyjątki nadzorowane i nienadzorowane
• Rozdzielanie odpowiedzialności między klasy, luźne sprzężenie/wysoka spójność
• JUnit
• Typy uogólnione
• Kolekcje - używanie istniejących
• Kolekcje - tworzenie nowych
• Lambdy oraz java.util.stream
• Wzorce
• Narzędzia np. maven lub google guava
Rodzaj przedmiotu
Wymagania (lista przedmiotów)
Koordynatorzy przedmiotu
Efekty kształcenia
Wiedza - absolwent zna i rozumie:
- teoretyczne podstawy z zakresu programowania, złożoności, wybranych języków i paradygmatów programowania, inżynierii oprogramowania (K_W02),
- w stopniu ogólnym wybrane paradygmaty programowania i języki programowania (m. in. obiektowy), pojęcie maszyny wirtualnej, w stopniu szczegółowym metody projektowania i programowania obiektowego (kapsułkowanie i ukrywanie informacji, klasy i podklasy, dziedziczenie, polimorfizm, hierarchie klas) (W_W09),
- metody z zakresu inżynierii oprogramowania, w tym projektowania (wzorce projektowe, analiza i projektowanie obiektowe), wykorzystania API, narzędzi i środowisk wytwarzania oprogramowania (K_W10).
Umiejętności - absolwent potrafi:
- pozyskiwać informacje z literatury, baz wiedzy, Internetu oraz innych wiarygodnych źródeł, integrować je, dokonywać ich interpretacji oraz wyciągać wnioski i formułować opinie (K_U02),
- pisać, uruchamiać i testować programy w wybranym środowisku programistycznym (K_U05),
- samodzielnie planować i realizować własne uczenie się przez całe życie (K_U09)
- zrealizować projekt informatyczny, w szczególności zaprojektować i zrealizować prosty system informatyczny, używając właściwych metod, technik i narzędzi; efektywnie uczestniczyć w inspekcji oprogramowania; posługiwać się przynajmniej jednym z popularnych systemów zarządzania wersjami (K_U16),
- wykonać analizę wymagań dla systemu informatycznego oraz zaprojektować oprogramowanie zgodnie z metodyką obiektową, w szczególności posługując się wzorcami projektowymi (K_U17).
Kompetencje społeczne - absolwent jest gotów do:
- krytycznej oceny posiadanej wiedzy i odbieranych treści (K_K01),
- pracy z poszanowaniem uczciwości intelektualnej w działaniach własnych i innych osób; przestrzegania zasad etyki zawodowej i wymagania tego od innych oraz dbałości o dorobek i tradycje zawodu informatyka (K_K02),
- uznawania znaczenia wiedzy w rozwiązywaniu problemów poznawczych i praktycznych oraz wyszukiwania informacji w literaturze oraz zasięgania opinii ekspertów (K_K03).
Kryteria oceniania
Ocena końcowa z przedmiotu ustalana jest na podstawie liczby punktów z laboratorium, klasówki i egzaminu. Szczegółowe zasady oceniania opisane są w kursie przedmiotu na wydziałowej platformie Moodle.
Literatura
1. J. Gosling, B. Joy, G. Steele, G. Bracha, A. Buckley, The Java Language Specification, Java SE 8 Edition , Addison-Wesley Professional, 2014.
2. G. Booch, J. Rumbaugh, I. Jacobson, UML przewodnik użytkownika, Wydawnictwa Naukowo-Techniczne, 2001.
3. E. Gamma, R. Helm, R. Johnson, J. Vlissides, Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku , Wydawnictwa Naukowo
-Techniczne, 2005.
4. C. Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, Prentice Hall, 3st edition, 2004.
5. B. Eckel, Thinking in Java, Helion, wydanie 4., 2006.
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: