Pomoc w przygotowaniu się do projektu zaliczeniowego z programowania obiektowego

0

Cześć,

pisałem tu już wcześniej jeden wątek odnośnie propozycji projektów C++ na zaliczenie przedmiotu na studiach, teraz jednak mam pytanie innej natury. Otóż wybrałem sobie projekt zaliczeniowy "Sklep muzyczny", kryteria projektu są następujące: > PROJEKT Z PROGRAMOWANIA OBIEKTOWEGO - WYMAGANIA

  • projekt należy napisać w 2 językach (2 osobne programy) obiektowych, jednym z nich musi być język Java lub C++
  • należy wykorzystać min. 7 klas, w tym min. 5 ułożonych w sensowną i sensownie wykorzystaną hierarchię,
  • należy wykorzystać techniki polimorficzne (metody wirtualne),
  • należy wykorzystać dowolnego typu kolekcję (tablica, stos, zbiór, mapa, kolejka, lista) do przechowywania obiektów należących do różnych klas,
  • należy wykorzystać co najmniej jedn z poniższych elementów:
    • szablon (C++),
    • interfejs (Java),
    • dziedziczenie z klasy abstrakcyjnej (C++,Java),
    • domieszki (Ruby - mixin),
  • w co najmniejm jednym z języków należy użyć wyjątków,
  • należy zastosować techniki hermetyzacji (ukrycie tych elementów, dla których nie ma uzasadnienia, by były upublicznione),
  • program musi liczyć min. 400 linii kodu (200 w Rubym),
  • kod źródłowy powinien być poprawne rozmieszczony w plikach,
  • należy wykorzystać (w dowolnym sensownym celu) zapis danych do pliku i odczyt danych z pliku,
  • program musi działać poprawnie.

Jakie przykładowe mogłyby być klasy w takim projekcie? Jaka hierarchia byłaby "sensowna"? Jak mniej więcej mógłby działać taki projekt? Obiektówka nie jest moją silną stroną, także każda pomoc i wsparcie jest na wagę złota.

Z góry dziękuję za pomoc!

1

Nie cierpię wymagań musisz użyć takiej implementacji. To jest stawianie problemu na głowie: mam rozwiązanie znajdź do niego problem.
Z tych wymagań to liczba linii, ma najwięcej sensu, bo to oznacza tylko: nie może być to "hello world".

A jak ma wyglądać struktura projektu, to jest temat rzeka. Są pewne zasady, ale większość programistów ma problem z ich przestrzeganiem.
Generalnie w samym środku ma być coś co opisuje logikę biznesową, a nie ma pojęcia o UI sieci, bazie danych itp rzeczach.
Dookoła tego ma być obudowana cała reszta.

BTW nauczyli cię pisać testy?

0
MarekR22 napisał(a):

Nie cierpię wymagań musisz użyć takiej implementacji. To jest stawianie problemu na głowie: mam rozwiązanie znajdź do niego problem.
Z tych wymagań to liczba linii, ma najwięcej sensu, bo to oznacza tylko: nie może być to "hello world".

A jak ma wyglądać struktura projektu, to jest temat rzeka. Są pewne zasady, ale większość programistów ma problem z ich przestrzeganiem.
Generalnie w samym środku ma być coś co opisuje logikę biznesową, a nie ma pojęcia o UI sieci, bazie danych itp rzeczach.
Dookoła tego ma być obudowana cała reszta.

BTW nauczyli cię pisać testy?

Ćwiczenia z tego przedmiotu to był jakiś żart, prowadzący przychodził spóźniony, od czasu do czasu opowiedział jakiś żart i to tyle, wszystko co się nauczyłem z obiektowego c++ to była własna praca w domu.

1

W bardzo dużym skrócie:

  1. Robisz bazową klasę z powtarzającymi się w innych klasach funkcjami wirtualnymi, z której każda inna klasa reprezentująca rekord w tabeli dziedziczy.
  2. Każda klasa poza tą z metodami wirtualnymi oraz poza tą, która reprezentuje całą bazę danych jest typem dla pojedynczego rekordu.
  3. Pojedynczą tabelą w bazie będzie kolekcja z obiektami danej klasy. Może to być lista lub tablica dynamiczna.
  4. Robisz klasę "bazaDanych", która zawiera kolekcje z obiektami wszystkich klas, które reprezentują rekord w tabeli oraz metody operujące na tych kolekcjach.
1

Generalnie poczytaj o zasadach SOLID na necie z przykładami(ewentualnie w książce typu "clean code"). Trzaśnij w UML jakiś sobie schemat na początek. Najważniejszy jest jednak pomysł. Nie wiem np. jakiś kalendarz w konsoli. Bo i dane trzeba wczytać, zapisać, zaprezentować(może wzorzec MVC) itd.

1

Napisz program i usuń z niego wszystkie entery i oddaj cały program w jednej linii :D

A na poważnie, to pomyśl jakie funkcje miałby mieć twój program typu:

  • sprzedaż
  • dodawanie nowego towaru na stan
  • zmiana ceny istniejącego towaru

itp.

Rozrysuj to sobie, pomyśl nad klasami, mniejszymi a nie wielkimi kombajnami, które robią wszystko. Jeśli nie miałeś do czynienia z bazami danych, stwórz sobie klasę, która będzie miała jakąś kolekcje i udostępniała metody, dodawania, usuwania, zmiany etc.
Przykład:

class XXX {
    private:
              std::vector <Item> items;
    public:
              Item GetItem(int id) { /* ... */ }
              bool UpdateItem(Item item) { /* ... */ }
              bool DeleteItem(int id) { /* ... */ }
}

Do tego klasa, która będzie przechowywała informacje dot. sprzedaży typu stan kasy, paragony czy coś w tym stylu.
Pomyśl nad jakimś prostym menu chociażby w konsoli, które będzie prowadziło użytkownika do tych funkcji i tyle :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1