Smiður (tölvunarfræði)
Í flestum forritunarmálum geta verið fleiri en einn smiður í hverjum klasa og hefur þá hver smiður mismunandi færibreytur. Sum forritunarmál taka tillit til sérstakra tegunda smiða.
Default smiður tekur engar færibreytur.
Afritunar smiður getur tekið eina færibreytur fyrir hverja tegund af klasa.
Smiðir í Java
[breyta | breyta frumkóða]Smiðir taka frá minni fyrir hlutinn og frumstilla gildi á gagnaliðum. Þegar um afleiddan klasa er að ræða kallar smiður í smið frá grunnklasa. Smiðir hafa sama nafn og klasinn og skila ekki gildi.
public class Example { //Lýsum yfir tilviki á breytu protected int data; //skilgreining á smið. public Example() { data = 1; } //setjum inn færibreytu. public Example(int input) { data = input; } }
This í smið:
Táknar klasann sjálfan. This er hægt að nota til að kalla á annan smið í sama klasa.
Super í smið:
Það er notað þegar smiður þarf að kalla á smið í yfirklasa. Super verður að vera fyrsta aðgerð í smið og einungis er hægt að kalla einu sinni í smiðinn.
Smiðir í C#
[breyta | breyta frumkóða]Smiðir í C# virka ekki ósvipað og í C++ og Java. Smiður í C# er fall sem heitir sama nafni og klasinn og hefur ekkert skilagildi. Ef enginn smiður er skilgriendur er sjálfgefin n færibreytulaus smiður búinn til. Hægt er að skilgreina eins marga smiði og þarf með mismunandi færibreytum.
public class Tugabrot { private int m_nTeljari; private int m_nNefnari; // smiður sem einungis kallar í annan smið með sjálfgefnfum gildum. public Tugabrot( ) : this( 0, 1 ) { } //Smiður sem frumstilllir breytur klasans með skilgreindum gildum. public Tugabrot( int nTeljari, int nNefnari ) { m_nTeljari = nTeljari; m_nNefnari = nNefnari; } }
This í smið:
C# notar this eins og C++, þ.e. til að vísa í “current object”. Einnig er hægt að nota this til að kalla í annan smið með öðrum færibreytum.
Smiðir í C/C++
[breyta | breyta frumkóða]Hægt er að skilgreina eins marga smiði og þörf er á, til dæmis: færibreytulausan smið, afritatökusmið (copy constructor) og smið sem tekur inn færibreytur.
Smiður er frumstillingarfall: Ef við skilgreinum engan smið sér þýðandinn um að búa til default smið sem tekur engar færibreytur. Ef við skilgreingum einn eða fleiri smið er enginn sjálfgefinn smiður búinn til.
class reikningur { public: reikningur(); private: double stada; double vextir; int timabil; }; reikningur::reikningur() { stada = 0; timabil = 5; vextir = 6.0; }
Heimildir
[breyta | breyta frumkóða]Frá kennurum í Háskólanum í Reykjavík
- Daníel Brandur Sigurgeirsson
- Hallgrímur Arnalds