Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dziedziczenie Zadanie

Ostatnio zmodyfikowano 2013-01-31 12:22
Autor Wiadomość
alek44
Temat założony przez niniejszego użytkownika
Dziedziczenie Zadanie
» 2013-01-29 16:48:00
Zdefiniuj klas TOsoba posiadajc nastpujce pola:
- imie
- nazwisko
- wiek
- adres (obiekt niezalenej klasy o polach: miasto, ulica, numer z konstruktorem ustawiajcym
pola na podstawie parametrów, destruktorem oraz metod Wyswietl).
Klasa zawiera nastpujce metody:
- konstruktor ustawiajcy wszystkie pola na podstawie swoich parametrów,
- Wyswietl – wywietlajc informacje o osobie,
- PodajImie – zwraca imi,
- PodajNazwisko – zwraca nazwisko,
- destruktor.
Zdefiniuj klas TStudent dziedziczc po klasie TOsoba. Klasa TStudent posiada dodatkowo pola:
- kierunek
- rok
oraz metody:
- konstruktor ustawiajcy wszystkie pola na podstawie swoich parametrów,
- Wyswietl – wywietlajc informacje o studencie,
- PodajKierunek – zwraca kierunek,
- destruktor.
Dla kadej klasy zdefiniuj konstruktory i destruktory tak, aby wywietlały komunikaty informujce o swoim
działaniu.
Napisz funkcj Testuj, która:
a) definiuje zmienn lokalna st typu TStudent, wywietla dane studenta,
b) wykorzystujc wskanik na typ bazowy tworzy zmienn dynamiczn typu TStudent, wywietla dane
studenta,
c) definiuje zmienn referencyjn typu TOsoba, inicjalizuje j zmienn st wywietla wartoci pól,
d) wywietla nazwiska i kierunki studentów z podpunktu a) i b),
e) usuwa zmienn dynamiczn z podpunktu b).

Witam Mam pytaniemoze ktos wie  jak zrobić punkt  d i e bo nie wiem jak zrobić żeby mieć tam dostęp ..
i wytłumaczył czemu tak. 

C/C++
#include<iostream>
using namespace std;

class Adres
{
    string ulica;
    string miasto;
    int numer;
public:
    Adres( string, string, int );
    void Wyswietl();
};
Adres::Adres( string ulica, string miasto, int numer )
{
    this->ulica = ulica;
    this->miasto = miasto;
    this->numer = numer;
}
void Adres::Wyswietl()
{
    cout << "Ulica : " << ulica << endl;
    cout << "Miasto : " << miasto << endl;
    cout << "Numer : " << numer << endl;
}
//--------------------------------------------------------------------------------
class TOsoba
{
protected:
    string imie;
    string nazwisko;
    int wiek;
    Adres xz;
public:
   
   
    TOsoba( Adres, string, string, int );
    virtual void Wyswietl();
    string PodajImie() { return imie; }
    string PodajNazwisko() { return nazwisko; }
};
TOsoba::TOsoba( Adres x, string imie, string nazwisko, int wiek )
    : xz( x )
{
    this->xz = x;
    this->imie = imie;
    this->nazwisko = nazwisko;
    this->wiek = wiek;
}
void TOsoba::Wyswietl()
{
   
    cout << "Imie :" << this->imie << endl;
    cout << "Nazwisko :" << this->nazwisko << endl;
    cout << "wiek : " << wiek << endl;
}
//--------------------------------------------------------------------------------------
class TStudent
    : public TOsoba
{
    string kierunek;
    int rok;
   
public:
    TStudent( string, int, Adres, string, string, int );
    string PodajKierunek() { return kierunek; }
    void Wyswietl();
};
TStudent::TStudent( string kierunek, int rok, Adres x, string imie, string nazwisko, int wiek )
    : TOsoba( x, imie, nazwisko, wiek )
{
    //this->wiek = wiek;
    this->xz = x;
    this->kierunek = kierunek;
    this->rok = rok;
}
void TStudent::Wyswietl()
{
    TOsoba::Wyswietl();
    xz.Wyswietl();
    cout << "Kirunek :" << this->kierunek << endl;
    cout << " Rok :" << rok << endl;
   
}
void Testuj()
{
   
    Adres x( "XX", "Warszawa", 1 );
   
    //Punkt A
    TStudent st( "informatyka", 2, x, "Jean", "N", 21 );
    st.Wyswietl();
   
   
    // Punkt B
    cout << "--------------------------------------------------" << endl;
    Adres z( "XX", "Warszawa", 1 );
    TOsoba * wsk = new TStudent( "informatyka", 3, z, "Jan", "Nowak", 21 );
    wsk->Wyswietl();
   
   
    // Punkt C
    cout << "--------------------------------------------------" << endl;
    TOsoba & zmienna( st );
    st.Wyswietl();
   
    //delete wsk;
   
}



int main()
{
    Testuj();
   
    system( "pause" );
    return 0;
}
P-75310
jsc
» 2013-01-29 17:57:45
Sądzę, że zastosowanie w punkcie b) wzorca projektowego opisanego w » Wzorce projektowe » Wzorce kreacyjnebudowniczy wzorzec projektowy.
P-75319
alek44
Temat założony przez niniejszego użytkownika
» 2013-01-30 13:05:30
nie za bardzo mi to pomogło... Jak ktoś by wiedział jak to by było fajnie.
P-75373
DejaVu
» 2013-01-30 13:54:06
@jsc: Raczej mu tamten tekst nie pomoże :P

Co do problemu - wkleiłeś treść zadania, a nie z czym konkretnie masz problem. Opis jest raczej chaotyczny i trudno domyślić się z czym tak na dobrą sprawę masz problem bez dogłębnej analizy napisanego przez Ciebie tekstu. Postaraj się przeredagować tekst i precyzyjnie napisać "co chcesz zrobić".
P-75381
alek44
Temat założony przez niniejszego użytkownika
» 2013-01-31 12:22:45
Myślałem ze trzeba to jakoś wyświetlić bez użycia metod .. o których zapomniałem.
C/C++
cout << "punkt A :" << endl;
cout << st.PodajKierunek();
cout << endl;
cout << st.PodajNazwisko();

cout << "punkt B: " << endl;
cout << wsk->PodajNazwisko();
cout << endl;
Zostało mi tylko "wyświetlenie kierunku studiów  z podpunktu B" nie wiem jak to za bardzo zrobić. Myślę , że sprecyzowałem ...
P-75443
« 1 »
  Strona 1 z 1