Mam do zrobienia zadanie, które ogólnie jest banalne. Jedyne z czym mam problem, to ta hierarchia klas wyjątków. Kompletnie nie mam zielonego pojęcia o co chodzi, ani jak się za to zabrać. Mam dwie klasy - Graf i Kolej. Kolej dziedziczy po Grafie (tak musiałem zrobić). Mógłby mi ktoś powiedzieć o co chodzi? W guglach niestety niewiele na ten temat znalazłem.
Swoją drogą jakby ktoś mi również mógł podpowiedzieć coś odnośnie wczytywania danych. Ogólnie najpierw wczytuję do obiektu Graf ilość wierzchołków oraz krawędzie (tablica), a potem wywołuję konsturktor klasy Kolej z argumentem Graf i przepisuję ilość wierzchołków. Krawędzie w klasie kolej, czyli niejako trasy poruszania się pociągów, muszę wczytać ponownie, ponieważ tym razem potrzebuję również numer pociągu, który porusza się pomiędzy podanymi wierzchołkami. Czy potrzebnie tworzę ten obiekt Graf dodatkowo czy mogę jakość wykorzystać element dziedziczenia? Dodam, że dane muszę wczytywać do obiektu typu Graf, bo takie mam założenie od prowadzącego (no i chociażby po to, żebym mógł gdzieś tą hierarchię klas wyjątków zastosować).
Treść zadania:
System planowania podróży kolejowej
Założenia:
• System powinien umożliwiać planowanie najszybszego połączenia
kolejowego pomiędzy wybranymi stacjami kolejowymi.
• Należy uwzględnić możliwość połączeń bezpośrednich oraz łączenia
przejazdów w ramach jednego połączenia.
• Należy wykonać implementację własnej klasy grafu skierowanego, w
którym połączenia są reprezentowane poprzez krawędzie grafu a stacje
kolejowe poprzez węzły grafu.
W trakcie realizacji projektu należy zwrócić uwagę na wykorzystanie
mechanizmów C++ takich jak: dziedziczenie (w zaproponowanej hierarchii
klas), funkcje wirtualne, dynamiczna alokacja pamięci, iteratory,
przeciążanie operatorów, możliwe wykorzystanie biblioteki STL. Obsługę
błędów należy zrealizować za pomocą mechanizmu wyjątków. W ramach
możliwości należy zaproponować hierarchię klas wyjątków. Program
powinien umożliwiać obsługę wejścia/wyjścia za pomocą konsoli oraz plików.
Projekt powinien posiadać dokumentację końcową z opisem założeń oraz
diagramami stworzonej hierarchii klas.