» »

polimorfizem v c++

polimorfizem v c++

boss-tech ::

a mi lahko kdo prosim razloži polimorfizem s svojimi besedami? k jst razumem da npr neka fukncija podrazreda prekrije isto funk nadrazreda. in lahko to določimo z besedo virtual.

ampak če mi lahko kdo razloži kaj in kako bolj točno ker mi ni ravno jasno?

OwcA ::

Poanta je v tem, da ti polimorfizem omogoča specializacijo neke operacije glede na to kdo in nad čim jo izvaja.
Recimo, midva oba znava pisati, ampak imava različne sloge pisanja (in frekvenco slovničnih napak ;)). Ali, ko pišem za računalnikom uporabljam druge gibe, kot ko pišem na papir.
Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()

Vesoljc ::

class Base {
 virtual void print() { cout << "base"; }
};

class Extended: public Base {
 virtual void print() { cout << "extended"; }
};

Base*   arr[2];

arr[0] = new Base;
arr[1] = (Base*)new Extended;     // Extended je tudi Base

// in ker sta oba VSAJ Base tipa, lahko klices print funkcijo
arr[0]->print();  // klic osnovne func
arr[1]->print();  // klic "povozene" func

// lahko pa reces tudi tole
class Extended: public Base {
 virtual void print() { Base::print(); cout << "extended"; }
};
Abnormal behavior of abnormal brain makes me normal...

Jean-Paul ::

Owca: Odlična razlaga. Mislim, da bi sedaj boss-techu moral biti polimorfizem kristalno jasen. ;)

boss-tech ::

sam upam da bom znal razložit profesorju :\

se pravi:

imam razred oseba: ime,priimek, davcna, funkciji vnos in izpis
in podrazred student: vse kar ima oseba + številka indeksa, vnos in izpis-isto kot pri osebi

ko definiram vnos in izpis v studentu mi ta prekrijeta vnos in izpis osebe. če pa dam virtual mi pa more pogledat če je še kakšna podobna funkcija in gre potem v funk vnos in izpis ki je v razredu oseba.

to nej bi bil zj polimorfizem?

rokpok ::

Življenjski primer.Imaš ovco, kravo in psa. Vse naštete stvari so živali. In vse živali izpuščajo glasove, vse živali imajo svojo težo, velikost... So pa stvari, ki so za posamezne živali specifične. Recimo: pes zna pomoliti taco, krava daje mleko in ovca daje volno. Kako bi sedaj to implementiral pri objektnem programiranju?
class Zival {
	function izpustiGlas () {
		//funkcija bo definirana v podrazredu
	}
	function povejTezo () {
		echo "Moja teza je $this -> teza kilogramov";
	}
	function povejVisino () {
		echo "Moja visina je $this -> visina centimetrov";
	}
}
class Ovca extends Zival {
	$this -> teza = 30;
	$this -> visina = 45;
	function izpustiGlas () {
		echo "Meeeee";
	}
	function dajVolno () {
		//nevem kako bi dejansko implementiral to funkcijo :)
	}
}
class Pes extends Zival {
	$this -> teza = 45;
	$this -> visina = 40;
	function izpustiGlas () {
		echo "Haw";
	}
	function pomoliTaco () {
		//nevem kako bi dejansko implementiral to funkcijo :)
	}
}
class Krava extends Zival {
	$this -> teza = 150;
	$this -> visina = 90;
	function izpustiGlas () {
		echo "Muuuu";
	}
	function dajMleko () {
		//nevem kako bi dejansko implementiral to funkcijo :)
	}
}
Koda sicer ni pisana v C++ (jezik je PHP) ampak princip je enak. Tehnično/strokovno bistvo polimorfizma pa je povedal že Owca.

Lep pozdrav
Rad bi bil pingvin.

64202 ::

I am NaN, I am a free man!

OwcA ::

Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Razlika med oklepaji in vprašanja o sintaksi

Oddelek: Programiranje
271637 (940) Rias Gremory
»

[c#] Vprasanje glede eventov

Oddelek: Programiranje
101396 (1110) Looooooka
»

Fibonacci in čas računanja

Oddelek: Šola
81411 (1195) Pegaz
»

[C++] Problem z dedovanjem šablon (template inhieritance)

Oddelek: Programiranje
131653 (1531) Gundolf
»

[c++] stil kodiranja, informativno

Oddelek: Programiranje
171930 (1746) CCfly

Več podobnih tem