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

Prijava

Predloge razredov

 

 

Predloga razreda deluje enako kot predloga funkcije, le da prevajalnik namesto funkcij naredi razrede. Tako npr. iz predloge razreda seznam tvorimo seznam celih števil, seznam znakov, seznam oseb itd..

 

Predlogo razredov imenujemo tudi parameterizirani tip, ker z enim ali več parametrov določimo konkretno predlogo (konkretni razred, torej “abstraktni tip”).

 

Primer definicije predloge razreda seznam z enim parametrom, ki določa tip  elementov seznama:

// datoteka seznam.h

template
<class tip> // določa, da je to predloga; sledijo formalni parametri


class
seznam

{


seznam(); // konstruktor

void
VstaviZaTrenutno(tip element);

void
VstaviPredTrenutno(tip element);



vozlisce<tip>* k_zacetek; // vozlisce<tip> je predloga vozlisca, definirana drugje




};



template
<class tip> // to vrstico ponovimo pred vsako definicijo funkcije predloge!

seznam<tip>::seznam()

{

k_zacetek=NULL;};


…itd.


 

Primer uporabe predloge razreda seznam:

// datoteka seznam.cpp


#include "seznam.h"


int
main()

{


seznam<int> moj_seznam1; // objekt seznama celih števil

seznam <float> moj_seznam2; // objekt seznama realnih števil



moj_seznam1.VstaviPredTrenutno(6);

moj_seznam2.VstaviPredTrenutno(3.145926);

… itd.


return
0;

}

 

Primer definicije predloge razreda sklad, kjer drugi parameter določa vrednost  - največjo velikost sklada:

// datoteka sklad.h

template
<class tip, int max_elem> // drugi formalni parameter je vrednost


class
sklad

{


bool
JePoln();

void
Vstavi (tip element);



tip polje_sklada[max_elem];

int
vrh;



};




// "template" s formalnimi parametri ponovimo pred definicijo funkcije predloge!

template
<class tip, int max_elem>

sklad<tip,maxelem>::JePoln()

{
if (vrh==max_el) return true else return false;};


 

 

Primer uporabe predloge razreda sklad:

// datoteka sklad.cpp

#include "sklad.h"


Int main()

{


sklad<int,100> moj_sklad; // objekt sklada celih števil (največ 100)


if
(moj_sklad.JePoln()==false)

moj_sklad.Vstavi (6); // vstavi element na sklad


… itd.

return
0;

}


Predloge razredov in dedovanje

Dedovanje omogoča prilagajanje že napisanih šablon.

 

Primer izpeljave predloge razreda sklad iz šablone razreda seznam:

 

// datoteka skladizp.h


#include "seznam.h"


template
<class tip>

class
sklad: private seznam<tip> // sklad deduje po šabloni seznam


{
public:

void
Vstavi (tip element) {VstaviZaTrenutno(element);};





};