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

7 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors