Dziedziczenie klas, trzy klasy.

0

Witam, mam takie klasy:

Osoba {
imie, nazwisko;
paszport;
}
Student:Osoba {
legitymacja;
}

Z jakimis tam metodatmi itd., ale to akurat nie jest istotne.

I teraz potrzebuję klasy Uzytkownik:

Uzytkownik {
login, strona, haslo;
}

Ale w taki sposób dziedziczącą, żebym mógł odwołać się do legitymacji jeżeli to jest student no ale wiadomo, nie wszystkie osoby są studentami.
W jaki sposób to zrobić?

1

Osoba:Uzytkownik {
...
}

1

Nie dziedzicz. Dziedziczenie w tym przypadku to nie jest dobry pomysł: jak sam zauważasz no ale wiadomo, nie wszystkie osoby są studentami.

Możesz na przykład tak:

Uzytkownik 
{
    osoba : Osoba
    login, strona, haslo;

    GetLogin()
    {
        if (osoba.GetType() == typeof(Student)) { return ((Student)osoba).login; }
        else { error("To nie student"); }
    }
}
0

Zadziałałoby, ale za mało napisałem wcześniej.

Nie zawsze potrzebuje, żeby osoba miała elementy Uzytkownika, głównie program używa Osoby, bez loginu i hasla, po prostu dane osobowe.
Login i hasło zajmowałyby tylko pamięć niepotrzebnie.

Jakiś inny pomysł?

// Nie rozumiem tego zapisu, jakbym miał np.
((Student)osoba).login;

To jest konstruktor jakoś dziwnie wywołany? Jak to wgle nazwać, żebym mógł poszukać na ten temat?
// Rzutowanie :P Nie domyśliłem się

0

W takim razie:
class CosLubKtos {
virtual string UserInfo() { return "Brak informnacji"; }
};

Uzytkownik:CosLubKtos {
...
};

Osoba:CosLubKtos {
virtual string UserInfo() { return Nazwisko+' '+Imie; }
};

0

Zrobiłem tak:

Uzytkownik {
Osoba osoba;
haslo;
}

main {

Uzytkownik uzytkownik;
Student studencik;

//I teraz przypisuje

uzytkownik.osoba=studencik;
}

No i to jest źle, nawet jak pisałem, to mi coś nie pasowało, a błąd potem potwierdził.

///Znowu wcześniej napisałem niż przeczytałem ...

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