Laboratorijas
darbs 15. Mantošana
Šajā laboratorijas darbā tiks izveidotas, kopīga bāzes klase divām klasēm, un šīs divas klases pārveidotas, lai tās būtu atvasinātās klases no jaunizveidotās klases.
#include <iostream>
using namespace std;
class charchar
{
char x;
char y;
public:
charchar (char a, char b) { x=a; y=b; };
void print ()
{
cout << x << endl;
cout << y << endl;
};
void change (char a, char b) { x=a; y=b; };
};
class charint
{
char x;
int y;
public:
charint (char a, int b) { x=a; y=b; };
void print ()
{
cout << x << endl;
cout << y << endl;
};
void change (char a) { x=a; y++; };
};
int main()
{
charchar cc ('A', 'B');
cc.print ();
cc.change ('X', 'Y');
cc.print ();
cout << endl;
charint *ci = new charint ('G', 99);
ci->print ();
ci->change ('K');
ci->print ();
delete ci;
system ("pause");
return 0;
}
Izdruka uz ekrāna:
A
B
X
Y
G
99
K
100
Šeit tiek darbinātas 2
klases viena sastāv no 2 simboliem (char),
bet otra no viena simbola un viena skaitļa (int),
tātad abu klašu kopīgais lauks ir pirmais simbols (char
x). Bez tam abās klasēs ir definēts konstruktors, kā arī metodes print() un change().
Metode change() darbojas atšķirīgi uz char un int vērtībām
char vērtību tiek nomainīta ar citu (tātad, prasa
papildus parametru), bet int vērtība tiek
vienkārši palielināta par 1.
2. Izveidot klasi charsimple, kurā būtu tikai kopīgais lauks (char x) un atbilstošās metodes konstruktors ar vienu parametru, change() ar vienu parametru un print(). Laukam x obligāti jābūt privātam.
3. Pārveidot klases charchar un charint tā, lai tās tiktu mantotas no charsimple.
4. Klase charchar un charint metodēm change() un print() obligāti jāizmanto attiecīgās metodes no klases charsimple (bet savādāk jau nemaz nevar jo char x klasē charsimple ir jābūt slēptam laukam (private)).
5. Jāpanāk, lai pēc pārveidošanas programma strādātu identiski sākotnējai, nemainot funkciju main().
lab15a.cpp
6. Pārveidot funkcijā main() rindiņu
charint *ci = new charint ('G', 99);
par
charsimple *ci = new charint ('G', 99);
(norādes tips ir norāde uz bāzes klasi)
7. Ar izmaiņām klasēs panākt, ka programm atkal strādā identiski sākotnējai izdrukā 8 un pareizas vērtības.
lab15b.cpp