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

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *