Uniwersytet Warszawski, Wydział Fizyki - Centralny System Uwierzytelniania
Strona główna

Programowanie obiektowe

Informacje ogólne

Kod przedmiotu: 1000-212cPO
Kod Erasmus / ISCED: 11.301 Kod klasyfikacyjny przedmiotu składa się z trzech do pięciu cyfr, przy czym trzy pierwsze oznaczają klasyfikację dziedziny wg. Listy kodów dziedzin obowiązującej w programie Socrates/Erasmus, czwarta (dotąd na ogół 0) – ewentualne uszczegółowienie informacji o dyscyplinie, piąta – stopień zaawansowania przedmiotu ustalony na podstawie roku studiów, dla którego przedmiot jest przeznaczony. / (brak danych)
Nazwa przedmiotu: Programowanie obiektowe
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty obowiązkowe dla I roku informatyki
Przedmioty obowiązkowe dla I roku JSIM
Punkty ECTS i inne: 8.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.

zobacz reguły punktacji
Język prowadzenia: polski
Rodzaj przedmiotu:

obowiązkowe

Wymagania (lista przedmiotów):

Wstęp do programowania 1000-211bWPI
Wstęp do programowania (podejście funkcyjne) 1000-211bWPF

Skrócony opis:

Podstawowe pojęcia i zagadnienia występujące w programowaniu obiektowym: klasy, obiekty, kapsułkowanie, dziedziczenie, polimorfizm oraz podstawy projektowania obiektowego oraz formalizmy do zapisywania projektów i programów obiektowych.

Pełny opis:

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

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.

Efekty uczenia się:

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).

Metody i 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.

Zajęcia w cyklu "Semestr letni 2023/24" (zakończony)

Okres: 2024-02-19 - 2024-06-16
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 60 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Janusz Jabłonowski
Prowadzący grup: Paweł Brach, Jacek Chrząszcz, Janusz Jabłonowski, Michał Kutwin, Jarosław Paszek, Karol Pieniący, Przemysław Rutka, Marcin Waniek, Łukasz Wnuk, Artur Zaroda, Marek Zbysiński
Strona przedmiotu: https://moodle.mimuw.edu.pl/course/view.php?id=2104
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin

Zajęcia w cyklu "Semestr letni 2024/25" (jeszcze nie rozpoczęty)

Okres: 2025-02-17 - 2025-06-08
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 60 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Janusz Jabłonowski
Prowadzący grup: Jacek Chrząszcz, Janusz Jabłonowski, Jarosław Paszek, Karol Pieniący, Marcin Przybyłko, Przemysław Rutka, Marcin Waniek, Artur Zaroda, Marek Zbysiński, Wiktor Zuba
Strona przedmiotu: https://moodle.mimuw.edu.pl/course/view.php?id=2104
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski, Wydział Fizyki.
ul. Pasteura 5, 02-093 Warszawa tel: +48 22 5532 000 https://www.fuw.edu.pl/ kontakt deklaracja dostępności USOSweb 7.0.3.0 (2024-03-22)