Politechnika Warszawska - Centralny System Uwierzytelniania
Strona główna

Programowanie obiektowe

Informacje ogólne

Kod przedmiotu: 103A-ELxxx-ISP-PROO
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Programowanie obiektowe
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Programowanie )-Elektronika-inż.-EITI
( Przedmioty podstawowe )-Elektronika i informatyka w medycynie-mgr.-EITI
( Przedmioty podstawowe )-Systemy elektroniczne i wbudowane-mgr.-EITI
( Przedmioty podstawowe obieralne )-Systemy zintegrowanej elektroniki i fotoniki-mgr.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 3.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.
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

PROO

Numer wersji:

1

Skrócony opis:

Celem przedmiotu jest pogłębienie wiedzy studentów na temat programowania obiektowego, zaznajomienie ich ze składnią wybranego języka obiektowego oraz nauka praktycznego wykorzystywania nabytej wiedzy implementacji rozwiązań problemów programistycznych w języku Java.

Pełny opis:

Opis wykładu:

  1. (2h) Elementy inżynierii oprogramowania dla programowania obiektowego
    • Metody projektowania programu obiektowego: zstępująca i wstępująca
    • Zasady SOLID
    • Zasady programowania techniką TDD
    • Implementacja paradygmatu obiektowego w języku Java
  2. (2h) Środowisko
    • Maszyna wirtualna
    • Bezpieczeństwo kodu
    • Gospodarka pamięcią (odśmiecanie)
    • Program w języku Java: Styl programowania, Organizacja projektu, Pliki Jar, Manifest, Pakiety, Dokumentacja
  3. (1h) Podstawy składni
    • Typy danych
    • Obiekty niereferencyjne i referencyjne
    • Tablice, łańcuchy znakowe, itp.
    • Operatory, wyrażenia, organizacja pętli
  4. (2h) Podstawy obiektowości
    • Klasa, obiekt, metoda
    • Enkapsulacja, ukrywanie danych
    • Konstrukcja obiektu
    • Relacje między obiektami – asocjacje i agregacje
    • Dziedziczenie
    • Klasa Object
    • Klasy abstrakcyjne
    • Interfejsy
    • Polimorfizm
  5. (1h) Obsługa sytuacji wyjątkowych
    • Klasy i obiekty z interfejsem Throwable
  6. (1h) Wejście/wyjście
    • Koncepcja klas obudowujących
    • Strumienie
    • Serializacja obiektów
    • Sieciowość – gniazda
  7. (1h) Przetwarzanie współbieżne
    • Interfejsy Runnable i Callable
    • Obiekty wątków i uruchamianie zadań w wątkach
    • Egzekutory
    • Synchronizacja wątków
  8. (2h) Interfejs graficzny (GUI) – programowanie zdarzeniowe
    • Hierarchia klas interfejsu graficznego
    • Rodzaje komponentów
    • Rodzaje zdarzeń
    • Wzorzec Obserwator - nasłuchiwanie i obsługa zdarzeń
    • Metodologia JavaBeans
  9. (2h) Przykładowy projekt (studium przypadku):
    • Wielowątkowy sieciowy serwer z klientami wyposażonymi w GUI
  10. (2h) Programowanie mobilne
    • Java a system Android
    • Podstawowe konstrukcje i zasady
    • Przykładowa aplikacja
  11. (2h) Implementacja paradygmatu obiektowego w innych językach programowania na przykładzie C++
    • Obiektowość w języku C++ – porównanie z językiem Java
    • Wieloparadygmatowość programowania w C+++


Laboratorium:

  • (2h) Pierwsza aplikacja w Javie – kompilacja i uruchamianie z poziomu konsoli. Używanie zmiennych typów podstawowych. Definiowanie klas, tworzenie obiektów, wywoływanie metod i przekazywanie do nich argumentów. IDE i praca z debuggerem.
  • (2h) Zadany problem programistyczny: model obiektowy, UML, tworzenie testów jednostkowych. Wykorzystanie metodyki SOLID – klasy abstrakcyjne i interfejsy.
  • (2h) GUI, mechanizmy wielowątkowości.
  • (2h) Obsługa operacji wejścia/wyjścia, serializacja obiektów, komunikacja sieciowa
  • (2h) Aplikacja mobilna na platformę android.


Projekt:

Zadania programistyczne realizowane zespołowo (grupy dwuosobowe – skład losowany).
Tematyka zadań ustalana indywidualnie dla każdej z grup:

  • tematy pochodzące od studentów – po akceptacji opiekuna
  • tematy narzucone przez opiekuna – np. symulacja i wizualizacja wybranego zjawiska fizycznego z dziedziny szeroko rozumianej elektroniki

Tematy rozdanie lub zatwierdzenie – 2 tydzień semestru

Etapy kontrolne – zatwierdzane przez opiekuna:

  • Specyfikacja w formie dokumentu README.md (opis funkcjonalności, scenariusz użycia, diagram UML, prototyp GUI ) – w formie repozytorium git - 4 tydzień semestru
  • Wersja testowa – 8 tydzień semestru
  • Wersja ostateczna – 14 tydzień semestru
Literatura:

  • Cay S. Horstmann Java. Podstawy. Wydanie X
  • Bruce Eckel Thinking in Java. Edycja polska. Wydanie IV
  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku
  • Robert C. Martin Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki

Zajęcia w cyklu "rok akademicki 2023/2024 - sem. letni" (w trakcie)

Okres: 2024-02-19 - 2024-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 10 godzin, 108 miejsc więcej informacji
Projekt, 15 godzin, 108 miejsc więcej informacji
Wykład, 20 godzin, 108 miejsc więcej informacji
Koordynatorzy: Dominik Kasprowicz
Prowadzący grup: Marcin Bączyk, Michał Borecki, Bartosz Dec, Dominik Kasprowicz, Maciej Linczuk, Marek Niewiński, Marek Sutkowski
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103500 - Instytut Mikroelektroniki i Optoelektroniki

Zajęcia w cyklu "rok akademicki 2022/2023 - sem. letni" (zakończony)

Okres: 2023-02-20 - 2023-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 10 godzin, 108 miejsc więcej informacji
Projekt, 15 godzin, 108 miejsc więcej informacji
Wykład, 20 godzin, 108 miejsc więcej informacji
Koordynatorzy: Dominik Kasprowicz
Prowadzący grup: Marcin Bączyk, Michał Borecki, Bartosz Dec, Dominik Kasprowicz, Maciej Linczuk, Marek Niewiński, Marek Sutkowski
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103500 - Instytut Mikroelektroniki i Optoelektroniki

Zajęcia w cyklu "rok akademicki 2021/2022 - sem. letni" (zakończony)

Okres: 2022-02-23 - 2022-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 10 godzin, 108 miejsc więcej informacji
Projekt, 15 godzin, 108 miejsc więcej informacji
Wykład, 20 godzin, 108 miejsc więcej informacji
Koordynatorzy: Dominik Kasprowicz
Prowadzący grup: Marcin Bączyk, Michał Borecki, Bartosz Dec, Dominik Kasprowicz, Maciej Linczuk, Marek Niewiński
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103500 - Instytut Mikroelektroniki i Optoelektroniki

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Politechnika Warszawska.
pl. Politechniki 1, 00-661 Warszawa tel: (22) 234 7211 https://pw.edu.pl kontakt deklaracja dostępności USOSweb 7.0.2.0-2 (2024-03-29)