Programowanie obiektowe 1000-212cPO
- https://moodle.mimuw.edu.pl/course/view.php?id=2190 (w cyklu 2024L)
- https://moodle.mimuw.edu.pl/course/view.php?id=2763 (w cyklu 2025L)
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, metody, parametry, dokumentacja),
• Kapsułkowanie, konstruktory i inicjalizacja,
• Dziedziczenie, klasy abstrakcyjne, interfejsy, polimorfizm,
• Wyjątki nadzorowane i nienadzorowane,
• Typy uogólnione,
• Kolekcje,
• Wzorce projektowe z przykładami (Singleton, Fabryka, Adapter, Dekorator, Obserwator i inne),
• Wejście/wyjście ,
• Wyrażenia regularne,
• Opcjonalnie: graficzny interfejs użytkownika,
• 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, D. Smith,
G. Bierman; The Java Language Specification; https://docs.oracle.com/javase/specs/.
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, On Java 8, https://leanpub.com/onjava8, 2021.
6. J. Bloch, Java. Efektywne programowanie, wyd. III, Helion, 2018.
7. C. Horstmann, Core Java for the Impatient, Addison-Wesley Professional, 4th ed., 2024.
7a. C. Horstmann, Java. Przewodnik doświadczonego programisty, Helion, wyd. III, 2023.
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: