Skip to content

zacniewski/materials-about-OOP-in-Java-and-Python

Repository files navigation

Materials about OOP in Java and Python

Wstęp do programowania zorientowanego obiektowo z wykorzystaniem języków Java i Python.

Cel repozytorium

Repozytorium porządkuje komplet materiałów do nauki OOP w dwóch ekosystemach:

  • Java - ścieżka bardziej formalna, klasowa i silniej oparta na typach,
  • Python - ścieżka wieloparadygmatowa, bardziej elastyczna i oparta o konwencje, duck typing oraz praktykę projektową.

Celem jest równoległe pokazanie:

  • wspólnych fundamentów OOP,
  • różnic językowych i projektowych,
  • praktyki laboratoryjnej dopasowanej do obu środowisk.

Struktura repozytorium

Obszar Folder Liczba plików .md Opis
Wykłady Java lectures-OOP-in-Java 15 Pełny kurs OOP w Javie
Laboratoria Java labs-OOP-in-Java 15 Ćwiczenia praktyczne do kursu Java
Wykłady Python lectures-OOP-in-Python 15 Pełny kurs OOP w Pythonie
Laboratoria Python labs-OOP-in-Python 15 Ćwiczenia praktyczne do kursu Python

Efekty uczenia

Po przerobieniu materiału student powinien:

  • rozumieć model obiektowy w Javie i Pythonie,
  • projektować klasy, interfejsy, protokoły i relacje między obiektami,
  • stosować enkapsulację, dziedziczenie, polimorfizm i kompozycję,
  • znać idiomy obu ekosystemów: property, dataclass, Protocol, pytest, venv w Pythonie oraz klasyczną strukturę OOP, biblioteki standardowe, wyjątki i testowanie w Javie,
  • rozumieć podstawy SOLID i ich praktyczne zastosowanie w obu językach.

Wykłady Java

Nr Temat Plik
1 Środowisko języka Java 01-srodowisko-javy.md
2 Paradygmaty obiektowości 02-paradygmaty-obiektowosci.md
3 Klasy, obiekty i metoda main 03-klasy-i-metody-main.md
4 Modułowość, pakiety i importy 04-modulowosc-pakiety-i-importy.md
5 Modyfikatory dostępu i enkapsulacja 05-modyfikatory-dostepu-i-enkapsulacja.md
6 Pola klas i stan obiektu 06-pola-klas-i-stan-obiektu.md
7 Konstruktory i inicjalizacja obiektów 07-konstruktory-i-inicjalizacja-obiektow.md
8 Dziedziczenie i polimorfizm 08-dziedziczenie-i-polimorfizm.md
9 Interfejsy i klasy abstrakcyjne 09-interfejsy-i-klasy-abstrakcyjne.md
10 Podstawowe klasy biblioteki Java 10-podstawowe-klasy-biblioteki-java.md
11 Wyrażenia lambda i interfejsy funkcyjne 11-wyrazenia-lambda-i-interfejsy-funkcyjne.md
12 Testowanie kodu 12-testowanie-kodu.md
13 SOLID - zasady projektowania obiektowego 13-solid-zasady-projektowania-obiektowego.md
14 Wyjątki i obsługa błędów 14-wyjatki.md
15 Referencje do obiektów i niemutowalność 15-referencje-do-obiektow.md

Laboratoria Java

Nr Temat Plik
1 Środowisko języka Java 01-srodowisko-jezyka-java.md
2 Paradygmaty obiektowości 02-paradygmaty-obiektowosci.md
3 Klasy i metody 03-klasy-i-metody.md
4 Modułowość, pakiety i importy 04-modulowosc-pakiety-i-importy.md
5 Modyfikatory dostępu i enkapsulacja 05-modyfikatory-dostepu-i-enkapsulacja.md
6 Pola klas i stan obiektu 06-pola-klas-i-stan-obiektu.md
7 Konstruktory i inicjalizacja obiektów 07-konstruktory-i-inicjalizacja-obiektow.md
8 Dziedziczenie i polimorfizm 08-dziedziczenie-i-polimorfizm.md
9 Interfejsy i klasy abstrakcyjne 09-interfejsy-i-klasy-abstrakcyjne.md
10 Podstawowe klasy biblioteki Java 10-podstawowe-klasy-biblioteki-java.md
11 Wyrażenia lambda i interfejsy funkcyjne 11-wyrazenia-lambda-i-interfejsy-funkcyjne.md
12 Testowanie kodu 12-testowanie-kodu.md
13 SOLID - zasady projektowania obiektowego 13-solid-zasady-projektowania-obiektowego.md
14 Wyjątki 14-wyjatki.md
15 Referencje do obiektów 15-referencje-do-obiektow.md

Wykłady Python

Nr Temat Plik
1 Środowisko języka Python 01-srodowisko-pythona.md
2 Paradygmaty obiektowości w Pythonie 02-paradygmaty-obiektowosci.md
3 Klasy, obiekty i punkt wejścia programu 03-klasy-obiekty-i-entry-point.md
4 Modułowość, pakiety i importy 04-modulowosc-pakiety-i-importy.md
5 Enkapsulacja, atrybuty i property 05-enkapsulacja-atrybuty-i-properties.md
6 Atrybuty klasy i stan obiektu 06-atrybuty-klasy-i-stan-obiektu.md
7 Inicjalizacja obiektów i dataclass 07-inicjalizacja-obiektow-i-dataclasses.md
8 Dziedziczenie i polimorfizm 08-dziedziczenie-i-polimorfizm.md
9 Protokoły, ABC i klasy abstrakcyjne 09-protokoly-abc-i-klasy-abstrakcyjne.md
10 Podstawowe moduły standard library 10-podstawowe-moduly-standard-library.md
11 Funkcje lambda i callables 11-funkcje-lambda-i-callables.md
12 Testowanie kodu 12-testowanie-kodu.md
13 SOLID w Pythonie 13-solid-w-pythonie.md
14 Wyjątki w Pythonie 14-wyjatki.md
15 Referencje, mutowalność i niemutowalność 15-referencje-mutowalnosc-i-niemutowalnosc.md

Laboratoria Python

Nr Temat Plik
1 Środowisko języka Python 01-srodowisko-pythona.md
2 Paradygmaty obiektowości 02-paradygmaty-obiektowosci.md
3 Klasy, obiekty i punkt wejścia programu 03-klasy-obiekty-i-entry-point.md
4 Modułowość, pakiety i importy 04-modulowosc-pakiety-i-importy.md
5 Enkapsulacja, atrybuty i property 05-enkapsulacja-atrybuty-i-properties.md
6 Atrybuty klasy i stan obiektu 06-atrybuty-klasy-i-stan-obiektu.md
7 Inicjalizacja obiektów i dataclass 07-inicjalizacja-obiektow-i-dataclasses.md
8 Dziedziczenie i polimorfizm 08-dziedziczenie-i-polimorfizm.md
9 Protokoły, ABC i klasy abstrakcyjne 09-protokoly-abc-i-klasy-abstrakcyjne.md
10 Podstawowe moduły standard library 10-podstawowe-moduly-standard-library.md
11 Funkcje lambda i callables 11-funkcje-lambda-i-callables.md
12 Testowanie kodu 12-testowanie-kodu.md
13 SOLID w Pythonie 13-solid-w-pythonie.md
14 Wyjątki 14-wyjatki.md
15 Referencje, mutowalność i niemutowalność 15-referencje-mutowalnosc-i-niemutowalnosc.md

Proponowana kolejność realizacji

  1. Najpierw przejście wykład + laboratorium w jednym języku od modułu 1 do 15.
  2. Następnie porównanie analogicznych tematów Java vs Python, szczególnie dla modułów 4-15.
  3. Szczególną uwagę warto zwrócić na różnice:
    • Java: interfejsy, klasy abstrakcyjne, silniejsze formalne typowanie,
    • Python: property, dataclass, Protocol, duck typing, pytest, mutowalność i model importów.

Uwagi organizacyjne

  • Repozytorium zawiera obecnie 60 plików Markdown materiałów dydaktycznych: 15 wykładów i 15 laboratoriów dla Javy oraz 15 wykładów i 15 laboratoriów dla Pythona.
  • Ścieżki Java i Python mają celowo podobną numerację, aby można było łatwo porównywać te same tematy między językami.
  • Dodatkowe PDF-y i materiały pomocnicze w folderach językowych zostały pozostawione jako uzupełnienie, ale głównym torem nauki są pliki Markdown wskazane powyżej.

About

Introduction to Object Oriented Programming in Java and Python languages

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages