Projekt jest praktycznym podsumowaniem przedmiotu Programowanie obiektowe. Tematem projektu ma być desktopowa aplikacja Java wspierająca pracę z danymi ekonomicznymi lub ekonometrycznymi, a nie ogólny system CRUD bez uzasadnienia merytorycznego.
Projekt powinien pokazać, że student potrafi zaprojektować i wykonać aplikację w Javie, wykorzystać programowanie obiektowe, zbudować graficzny interfejs użytkownika, połączyć go z relacyjną bazą danych oraz udokumentować rozwiązanie. Kontekst ekonometryczny powinien być widoczny w danych, zmiennych, modelu analizy i interpretacji wyników.
| Efekt | Jak jest demonstrowany w projekcie |
|---|---|
| EK_01 | Poprawne użycie składni Javy, typów, struktur danych, kolekcji, strumieni, wyjątków i standardowych bibliotek. |
| EK_02 | Świadome użycie klas, obiektów, hermetyzacji, dziedziczenia, polimorfizmu, klas abstrakcyjnych i interfejsów. |
| EK_03 | Utworzenie GUI oraz interfejsu komunikującego się z relacyjną bazą danych. |
| EK_04 | Zaprojektowanie i wykonanie działającej aplikacji Java, analiza jej poprawności oraz wykorzystanie bibliotek standardowych i zewnętrznych. |
| EK_05 | Aplikacja GUI korzystająca z relacyjnej bazy danych, użycie narzędzi Java oraz kompletna dokumentacja projektu. |
Zaliczenie projektu w semestrze III weryfikuje przede wszystkim EK_05, ale podczas obrony student powinien również wykazać znajomość EK_01–EK_04.
Projekt należy sformułować jako desktopowe narzędzie do analizy określonego problemu ekonomicznego. Użytkownik uruchamia program na swoim komputerze, wybiera lokalny plik danych albo korzysta z danych demonstracyjnych dołączonych do projektu, a następnie wykonuje analizę w GUI.
Nie jest wymagane tworzenie aplikacji webowej, API ani bezpośrednie łączenie z serwisem GUS, Eurostatem lub innym zewnętrznym serwisem. GUS, Eurostat, NBP czy World Bank mogą być jedynie źródłem pochodzenia danych, które wcześniej przygotowano i dostarczono aplikacji jako CSV, SQLite albo dane demonstracyjne.
Przykładowe pytania ekonomiczne:
Źródłem danych może być między innymi GUS/Bank Danych Lokalnych, Eurostat, NBP, World Bank, dane samorządowe albo inny uzasadniony zbiór publiczny. Dane należy dostarczyć razem z projektem w postaci pliku lub skryptu inicjalizującego bazę. W dokumentacji trzeba opisać źródło, jednostkę obserwacji, okres, częstotliwość, jednostki miary i sposób przygotowania.
Nie wystarczy zapisać rekordów w tabeli. Aplikacja musi umożliwiać wykonanie analizy i interpretację jej wyników.
Każdy projekt musi zawierać:
Jeżeli projekt wykorzystuje regresję, należy podać co najmniej równanie modelu, znaki i interpretację parametrów, współczynnik dopasowania oraz podstawową miarę błędu. Jeżeli wykorzystywany jest szereg czasowy, należy uwzględnić kolejność obserwacji, zmianę w czasie i sposób oceny prognozy. Jeżeli projekt wykorzystuje ranking lub indeks, należy opisać normalizację, wagi i wpływ zmiany wag na wynik.
Aplikacja powinna zapewniać:
Operacje CRUD mogą być częścią aplikacji, ale nie mogą być jej jedynym celem. Formularz do ręcznego dodawania rekordów bez analizy nie spełnia wymagań projektu.
Wszystkie projekty, również na ocenę podstawową, spełniają wymagania responsywności, HiDPI i motywów:
Automatyczne dopasowanie do motywu systemu jest rozszerzeniem. Zmiana samego tła lub motywu IDE nie spełnia wymagań. Kontrolki systemowe, takie jak natywny wybór pliku, mogą zachować wygląd systemowy — opisz to w dokumentacji.
Model musi być przedstawiony na diagramie ERD. Minimalnie powinien obejmować trzy powiązane tabele, np.:
erDiagram
DATASET ||--o{ VARIABLE : definiuje
DATASET ||--o{ OBSERVATION : zawiera
DATASET ||--o{ ANALYSIS : analizowany_przez
VARIABLE ||--o{ OBSERVATION_VALUE : ma_wartosci
OBSERVATION ||--o{ OBSERVATION_VALUE : zawiera
DATASET {
long id PK
string name
string source
string frequency
}
VARIABLE {
long id PK
long dataset_id FK
string name
string unit
}
OBSERVATION {
long id PK
long dataset_id FK
string period
string region
}
OBSERVATION_VALUE {
long observation_id PK,FK
long variable_id PK,FK
double numeric_value
}
ANALYSIS {
long id PK
long dataset_id FK
string method
string configuration
string result
}
W modelu długim dopilnuj, aby obserwacja i zmienna w jednym rekordzie wartości należały do tego samego zbioru danych. Samo istnienie dwóch niezależnych kluczy obcych tego nie gwarantuje; zastosuj odpowiednie klucze złożone lub kontrolę integralności w schemacie. Diagram jest punktem wyjścia do projektu, a nie kompletnym DDL.
Dokładny model zależy od tematu. Można zastosować model szeroki, w którym zmienne są kolumnami, albo model długi, w którym wartości zmiennych są przechowywane w osobnej tabeli. W obu przypadkach należy uzasadnić wybór.
Wymagane są:
NOT NULL, UNIQUE, CHECK;Projekt musi być wykonany w Javie z użyciem Mavena i JDK 27 GA, z maven.compiler.release=27. Dla interfejsu JavaFX używaj JavaFX 27. Wersje i ustawienia IntelliJ określa konfiguracja środowiska; nie używamy wydań prerelease ani funkcji preview. Można wykorzystać Swing, JDBC, Hibernate i biblioteki pomocnicze, o ile ich użycie jest uzasadnione. Aplikacja desktopowa powinna działać po instalacji bez dostępu do Internetu; zewnętrzne źródło danych nie może być wymagane do demonstracji.
Zalecany podział:
src/main/java/pl/uczelnia/projekt/
├── model/ # encje i obiekty domenowe
├── repository/ # JDBC DAO albo repozytoria Hibernate
├── service/ # reguły biznesowe i walidacja
├── analysis/ # statystyki, modele i raporty ekonometryczne
├── controller/ # obsługa zdarzeń GUI
└── view/ # widoki JavaFX/Swing
src/main/resources/
├── db/ # skrypty SQL i dane demonstracyjne
├── fxml/ # widoki JavaFX, jeżeli są używane
└── application.properties
W szczególności:
Projekt posiada działające GUI, bazę relacyjną, import danych, podstawowe statystyki, jedną metodę analizy ekonometrycznej oraz dokumentację uruchomienia. Student potrafi wyjaśnić klasy, kolekcje, przepływ danych i podstawowe zapytania.
Projekt ma czytelny podział na warstwy, co najmniej cztery sensownie powiązane tabele, filtrowanie danych, kilka widoków, wykresy, analizę dla różnych podzbiorów danych, walidację, obsługę wyjątków i testy najważniejszych reguł. Wyniki są interpretowane ekonomicznie, a nie tylko wyświetlane.
Projekt jest spójnym narzędziem analitycznym. Obsługuje rozbudowany model danych, zapis konfiguracji analiz, porównanie modeli lub okresów, eksport raportu, dopracowany interfejs i testy. Student potrafi uzasadnić dobór danych, zmiennych, metody, architektury i technologii oraz samodzielnie zmodyfikować aplikację podczas obrony.
| Obszar | Kryteria oceny | Maks. pkt. |
|---|---|---|
| Baza danych | Poprawność i złożoność schematu, relacje, integralność, dane ekonometryczne i zapytania | 10 |
| Struktura i jakość kodu | OOP, podział na pakiety, biblioteki, logika analizy, walidacja, wyjątki i poprawność działania | 20 |
| Użyte technologie | JavaFX - 10 pkt., Hibernate - 10 pkt., Swing - 5 pkt., JDBC - 5 pkt.; maksymalnie 20 pkt. | 20 |
| Interfejs użytkownika | Adaptacyjny układ i dostępność akcji — 5; HiDPI i skalowanie tekstu — 4; pełne jasny/ciemny motywy — 4; spójność wizualna i czytelność tabel/wykresów — 4; płynność działania i komunikaty — 3 | 20 |
| Dokumentacja | Problem ekonomiczny, źródła danych, opis zmiennych, model, metoda, uruchomienie i instrukcja użytkownika | 10 |
| Obrona projektu | Prezentacja działania, wyjaśnienie kodu, bazy, metody i interpretacji wyników | 20 |
| Razem | 100 |
Przygotuj instrukcję uruchomienia w IntelliJ IDEA według konfiguracji środowiska.
Diagramy zapisuj w blokach mermaid, a obrazy GUI wykonaj w swojej działającej aplikacji.
Scenariusz końcowego sprawdzenia zawiera Lab 6.
Dokumentacja powinna zawierać:
Podczas obrony student powinien:
Brak orientacji we własnym kodzie, brak możliwości uruchomienia projektu albo brak interpretacji wyników może znacząco obniżyć ocenę z obrony.
Poniższe tematy nie spełniają wymagań bez wyraźnego komponentu ekonometrycznego:
| Punkty | Ocena |
|---|---|
| 0-50 | 2.0 |
| 51-60 | 3.0 |
| 61-70 | 3.5 |
| 71-80 | 4.0 |
| 81-90 | 4.5 |
| 91-100 | 5.0 |