Baza danych c++ - przeciazanie

0

Witam, mam problem. Otóż mam do napisania prostą bazę danych. W linku wyslalem moj diagram uml. Moj prowadzacy powiedzial mi, ze klase BazaNauczyciel i BazaDyrektor mozna zastapic jedna klasa, ktora mozna przeciazyc? Jak to zrobic?
http://tinypic.pl/ipdh1xm1w1e9

0

Lista pracowników zamiast wyszczególnienia na poszczególne posady (wykładowca/dyrektor).

0

Jeszcze wypadało by zrobić klasę osoba - po której dziedziczy ewentualnie się jedynie odwołują Pracownik, Student
Nie rozważyłeś dosyć typowych sytuacji kiedy to dyrektor to również wykładowca.
Oraz istnieją co prawda rzadkie sytuacje kiedy student jest również, no może nie wykładowca ale przynajmniej prowadzący ćwiczenia - zdarzają się wybitni przedstawicieli.

0

Prowadzący powiedział, że nie chce nam przeszkadzac w pisaniu, w koncepcji. Jedynie zwrocil mi uwage na to, zeby nie pisac tego samego w bazie nauczycieli i dyrektorow, tylko stworzyc jedna klase z kontenerami na nauczycieli i dyrektorow :). Jak wyglada takie "przeciazenie" ?

0

Możesz to zrobić na dwa sposoby - stricte C++ - czyli zwykłe dziedziczenie Student i Pracownik po Osoba
Albo możesz to zrobić w sposób relacyjny - czyli pracownik i studenty mają jakiś odwołanie do Osoba np wskaźnik.
Wtedy masz automagiczne rozwiązaną sprawę Dyrektor odraz Wykładowca to ta sama osoba.
Zawsze do Osoaba możesz dołożyć wektor "afiliacja" gdzie masz listę odwołań w drugą stronę.

Całkiem łatwo to wszystko się realizuje za pomocą quazy-polimorfizmu.

0

A czy bylibyscie w stanie pokazać mi kak bedzie wygladac deklaracja funkcji w takiej klasie, i w jaki sposob wywolywac w mainie?

0

W takiej czyli w jakiej?

0

Tutaj jest kod klasy BazaDyrektor, BazaWykladowca wygląda podobnie tylko ma zmienne Wykladowcy. http://pastebin.com/Wz52yyyk Dziękuję, że mi pomagacie, ale nie jestem w stanie tego do końca ogarnąć. Nadal nie wiem jak z tych dwóch klas zrobić jedną :(

0

Będzie np BazaPracownik gdzie można dodać dyrektorów i wykładowców.
Ja sugeruję BazaOsoba gdzie można dodać dyrektorów i wykładowców oraz studentów.
Jedynie ma sens dodać metody bool CzyDyrektor(int n); bool CzyWykladowca(int n);.
Dla wersji BazaOsoba dodatkowo bool CzyPracownik(int n); bool CzyStudent(int n);

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