E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj programskih aplikacij > Objektno programiranje > Dedovanje

Prijava

Dedovanje

 

 

Z uporabo dedovanja iz obstoječih razredov tvorimo nove razrede.

 

Takšno tvorjenje razredov imenujemo izpeljava in razrede, ki tako nastanejo izpeljani razredi ali podrazredi. Izpeljani razred ima torej svoj nadrazred, tj. razred, iz katerega je izpeljan. Dedovanje je lahko enkratno ali večkratno – v tem primeru je razred izpeljan iz dveh ali več nadrazredov.

 

Izpeljani razred podeduje vse elemente svojega nadrazreda. K tem elementom pa lahko doda še svoje elemente (podatke in metode) inponovno definira metode iz svojega nadrazreda. Zato lahko izpeljane razrede razumemo kot posebne primere svojih nadrazredov. Tako izpeljani razredi predstavljajo specializacijo, nadrazredi pa posplošitev.

 

Ker izpeljani razred podeduje vse elemente svojega nadrazreda, je objekt izpeljanega razreda hkrati tudi objekt nadrazreda. Obratno pa ne velja, kajti objektu nadrazreda manjkajo podatki in metode, ki so definirani v izpeljanem razredu.

 

 

Primer:

 

Razred student predstavlja sprecializacijo razreda oseba.

 

K podatkom o določeni osebi bomo torej dodali podatke,ki določajo, da je ta oseba pravzaprav študent. Zaradi enostavnosti smo izbrali podatek "smer", ki predstavlja smer študija posameznega študenta.

 

  1. #include <iostream.h>

    enum
    spol {moski, zenski};


    class
    oseba
    {

    public
    :
    oseba(char im[], char p[], spol s, char dat_r[]);

    oseba() {};
    void
    Vpisi();
    void
    Izpisi();
    private
    :

    char
    ime[15];
    char
    priimek[15];
    spol spol_o;

    char
    datum_r[10];
    };

  2. Beseda public, ki je zapisana pri izpeljavi nam pove, da so javni ("public") elementi nadrazreda (oseba) javni tudi v izpeljanem razredu (student).

    class student : public oseba

    {

    public
    :
    void
    Vpisi();
    void
    Izpisi();

    private
    :
    char
    smer[20];
    };

  3. oseba :: oseba(char im[], char p[], spol s, char dat_r[])
    {



    for
    (int i=0; i<15; i++)

    ime[i] = im[i];

    for
    (i=0; i<15; i++)

    priimek[i] = p[i];

    spol_o = s;


    for
    (i=0; i<10; i++)
    datum_r[i] = dat_r[i];
    }



    void
    oseba :: Vpisi()
    {

    int
    sp;

    cout << endl;
    cout << " Vpisi ime: ";
    cin >> ime;

    cout << " Vpisi priimek: ";
    cin >> priimek;
    cout << " Vpisi spol 1 - zenski, 2 - moski: ";

    cin >> sp;

    if
    (sp == 1)

    spol_o = zenski;
    else

    spol_o = moski;


    cout << " Vpisi datum rojstva: ";
    cin >> datum_r;
    }



    void
    student :: Vpisi()
    {


    cout << " Vpisi smer: ";
    cin >> smer;
    }




    void
    oseba :: Izpisi()
    {

    cout << endl << " Ime: " << ime;

    cout << endl << " Priimek: " << priimek;
    if
    (spol_o == zenski)

    cout << endl << " Spol: Zenski";
    else

    cout << endl << " Spol: Moski";


    cout << endl << " Datum rojstva: " << datum_r << endl;
    }


    void
    student :: Izpisi()
    {

    cout << " Smer: " << smer << endl;
    }


  4. int main()
    {

    student luka;

    luka.oseba::Vpisi();
    luka.Vpisi();
    luka.oseba::Izpisi();

    luka.Izpisi();
    return
    0;
    }

 

Vprašanja

 

Kateri operator uporabljamo za dostop do metod ali podatkov v objektih, ki so dinamično generirani?

Odgovor je pravilen

Odgovor žal ni pravilen

 

 

Kaj je konstruktor?

Odgovor je pravilen

Odgovor žal ni pravilen

Konstruktor mora imeti enako ime kot razred.

Odgovor je pravilen

Odgovor žal ni pravilen

 

 

Katere vrste konstruktorjev poznamo?

Odgovor je popolnoma pravilen

Odgovor žal ni popolnoma pravilen

Namig: Odkljukati je potrebno 3 alineje

 

 

Kaj je destruktor?

Odgovor je pravilen

Odgovor žal ni pravilen

 

 

Katere funkcije lahko dostopajo do privatnih metod ali podatkov razreda, čeprav niso člani razreda?

Odgovor je pravilen

Odgovor žal ni pravilen

Dedovanje je lahko ali .

Dedovanje je lahko ali .

 

 

Kaj je dedovanje razredov?

Odgovor je pravilen

Odgovor žal ni pravilen

 

 

Pri dedovanju ima vsak izpeljani razred svoj .

Pri dedovanju ima vsak izpeljani razred svoj .

 

 

Izpeljani razred podeduje vse elemente svojega nadrazreda.

Odgovor je pravilen

Odgovor žal ni pravilen

 

 

Ali je objekt nadrazreda tudi objekt podrazreda?

Odgovor je pravilen

Odgovor žal ni pravilen

Poleg javnih in privatnih elementov lahko v razredih definiramo tudi zaščitene elemente z določilom .

Poleg javnih in privatnih elementov lahko v razredih definiramo tudi zaščitene elemente z določilom .

in sta dve najpomembnejši lastnosti objektnega programiranja.

in sta dve najpomembnejši lastnosti objektnega programiranja.

 

 

Kaj je polimorfizem?

Odgovor je pravilen

Odgovor žal ni pravilen

 

 

Kako omogočimo polimorfno redefinicijo?

Odgovor je pravilen

Odgovor žal ni pravilen

 

 

Kaj je abstrakten razred?

Odgovor je pravilen

Odgovor žal ni pravilen

 

 

Ali lahko naredimo primerek abstraktnega razreda?

Odgovor je pravilen

Odgovor žal ni pravilen

 

 

Pri večkratnem dedovanju se podatki podvajajo. Včasih je to potrebno, v večini primerov pa se želimo nepotrebnemu podvajanju podatkov izogniti. V ta namen lahko definiramo nadrazrede.

Pri večkratnem dedovanju se podatki podvajajo. Včasih je to potrebno, v večini primerov pa se želimo nepotrebnemu podvajanju podatkov izogniti. V ta namen lahko definiramo nadrazrede.

 

 

Kaj pomeni prekrivanje metod?

Odgovor je pravilen

Odgovor žal ni pravilen

 

 

Kaj omogoča polimorfizem?

Odgovor je popolnoma pravilen

Odgovor žal ni popolnoma pravilen

Namig: Odkljukati je potrebno 3 alineje

 

 

Katere ključne besede dostopnosti uporabljamo pri definiciji razreda?

Odgovor je popolnoma pravilen

Odgovor žal ni popolnoma pravilen

Namig: Odkljukati je potrebno 3 alineje

 

 

Kaj velja za spodnjo definicjo razreda:

class student : public oseba
{
public:
void Vpisi();
void Izpisi();
private:
char smer[20];
};

Odgovor je popolnoma pravilen

Odgovor žal ni popolnoma pravilen

 

 

Namig: Odkljukati je potrebno 4 alineje

 

 

Kaj so konstantni objekti?

Odgovor je pravilen

Odgovor žal ni pravilen