
Jednym z moich projektów edukacyjnych w języku C++ była konsolowa aplikacja książki adresowej. Program pozwala na rejestrację użytkowników oraz zarządzanie kontaktami (tzw. adresatami). W tym wpisie opiszę funkcjonalność aplikacji, strukturę kodu, sposób organizacji klas oraz podejście obiektowe, jakie zastosowałem – łącznie z dziedziczeniem, kompozycją i zależnościami. Na końcu znajdziesz również diagram UML obrazujący strukturę klas.
Funkcjonalność aplikacji
Aplikacja uruchamiana jest w konsoli i prezentuje dwa poziomy menu:
- Menu główne (dla niezalogowanego użytkownika):
- Rejestracja
- Logowanie
- Zakończenie programu
- Menu użytkownika (po zalogowaniu):
- Dodanie nowego adresata
- Wyszukiwanie adresatów po imieniu lub nazwisku
- Wyświetlanie wszystkich adresatów
- Edycja i usuwanie kontaktów
- Zmiana hasła
- Wylogowanie
Dane są przechowywane w plikach tekstowych: Uzytkownicy.txt i Adresaci.txt.

Podejście obiektowe
Projekt został zrealizowany w oparciu o zasady programowania obiektowego, co oznacza, że każda odpowiedzialność została przypisana konkretnej klasie.
Przykładowe klasy:
- Uzytkownik, Adresat – klasy reprezentujące dane użytkownika i kontaktów
- PlikZUzytkownikami, PlikZAdresatami – klasy odpowiedzialne za zapis i odczyt danych z plików
- UzytkownikMenedzer, AdresatMenedzer – klasy zarządzające logiką biznesową dotyczącą użytkowników i adresatów
- KsiazkaAdresowa – główna klasa aplikacji, spinająca wszystko w całość
Dziedziczenie
W projekcie zastosowałem również dziedziczenie. Klasy odpowiedzialne za zapis i odczyt danych z plików (PlikZUzytkownikami, PlikZAdresatami) dziedziczą po klasie PlikTekstowy. Dzięki temu mogłem wydzielić wspólną logikę do klasy bazowej, np. sprawdzanie, czy plik istnieje lub wczytywanie danych wiersz po wierszu.
Kompozycja i zależności
Program bazuje na kompozycji – np. KsiazkaAdresowa zawiera obiekty klas AdresatMenedzer i UzytkownikMenedzer. Dzięki temu każda instancja tych menedżerów działa razem z główną klasą aplikacji.
Z kolei w miejscach, gdzie używam klas narzędziowych takich jak MetodyPomocnicze, mam do czynienia z luźną zależnością – korzystam z metod statycznych bez tworzenia obiektów.
Diagram UML
Poniżej prezentuję diagram UML obrazujący strukturę klas i relacje między nimi:

Kod źródłowy dostępny jest w repozytorium: https://github.com/milbalwierczak/KsiazkaAdresowaObiektowo
Zapraszam do obejrzenia filmu poniżej przedstawiającego aplikację lub do odwiedzenia strony z moimi pozostałymi projektami.

Dodaj komentarz