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.
#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->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 );
TStudent st( "informatyka", 2, x, "Jean", "N", 21 );
st.Wyswietl();
cout << "--------------------------------------------------" << endl;
Adres z( "XX", "Warszawa", 1 );
TOsoba * wsk = new TStudent( "informatyka", 3, z, "Jan", "Nowak", 21 );
wsk->Wyswietl();
cout << "--------------------------------------------------" << endl;
TOsoba & zmienna( st );
st.Wyswietl();
}
int main()
{
Testuj();
system( "pause" );
return 0;
}