Celem projektu jest stworzenie systemu łączącego:
- Moduł niskopoziomowy w języku C – odpowiedzialny za operacje na pamięci, struktury danych, parsowanie oraz przetwarzanie danych.
- Warstwę obiektową (Java lub C++) – implementującą logikę aplikacji, wzorce projektowe oraz interfejs użytkownika (konsolowy lub GUI).
Projekt musi demonstrować spójność architektury, integrację warstw oraz zastosowanie dobrych praktyk programistycznych.
📦 pbl-hybrid-project/
│
├── c_module/ # moduł niskopoziomowy (C)
│ ├── src/ # kod źródłowy C
│ ├── include/ # pliki nagłówkowe
│ ├── tests/ # testy modułów C
│ ├── Makefile
│ └── README.md # opis modułu C
│
├── oop_app/ # aplikacja obiektowa (Java/C++)
│ ├── src/
│ ├── tests/
│ └── README.md # dokumentacja warstwy OOP
│
├── integration/ # integracja C ↔ OOP
│ ├── formats/ # dokumentacja formatów wymiany danych
│ └── converters/ # ewentualne narzędzia pomocnicze
│
├── docs/
│ ├── UML/ # diagramy klas, sekwencji
│ ├── architecture.md # opis projektu
│ └── final_report_template.md
│
├── .gitignore
├── LICENSE (opcjonalnie)
└── README.md # główny opis projektu (poniżej)
Każdy projekt musi zawierać:
- minimum dwóch struktur danych (np. lista, kolejka, tablica mieszająca),
- operacje na pamięci (alokacja dynamiczna, walidacja wskaźników),
- parsowanie lub przetwarzanie danych (np. tekst, binaria, rekordy),
- testy modułowe.
- klasy, dziedziczenie, interfejsy, polimorfizm,
- zastosowanie co najmniej dwóch wzorców projektowych, np.
Strategy, Factory, Observer, Singleton, Composite, Command, - testy jednostkowe,
- logika aplikacji oparta o założenia projektu.
- przekazywanie danych z modułu C do warstwy OOP, np. poprzez:
- pliki tekstowe/binarne,
- JSON/CSV,
- bufor pośredni,
- pełna dokumentacja sposobu integracji.
W pliku integration/formats/ umieść dokument opisujący:
- strukturę danych wejściowych/wyjściowych,
- format pliku wymiany,
- przykład danych,
- specyfikację konwertera (jeśli wymagany).
- testy implementowane w C (np. Ceedling, Unity lub własny framework),
- testy pokrywające struktury danych i krańcowe przypadki.
- Java → JUnit
- C++ → GoogleTest
- testy klas, strategii, relacji między obiektami.
W katalogu /docs powinny znaleźć się:
- diagram klas UML,
- diagram sekwencji,
- opis architektury systemu,
- opis integracji,
- końcowy raport (szablon:
final_report_template.md).
cd c_module
make./bin/module input.txt output.txt(Java)
cd oop_app
./run.sh(C++)
cd oop_app
mkdir build && cd build
cmake ..
make- Low-level Engineer (C) – implementacja modułów i struktur danych
- Object-oriented Developer (Java/C++)
- Architecture Designer (UML)
- QA & Integration Engineer
- Documentation Manager
| Element | Waga |
|---|---|
| Moduł C | 30% |
| Warstwa OOP | 25% |
| Integracja | 15% |
| Dokumentacja | 15% |
| Prezentacja | 10% |
| GitHub aktywność | 5% |
dr.inz. Serhii Baraban Instytut Informatyki PP