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.

  1. Atvērt failu lab15.cpp (nepieciešamības gadījumā pievienot rindiņu system ("pause");), nokompilēt un darbināt.

#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