[ Pera_Anarhista @ 23.11.2002. 11:58 ] @
Imam jedno pomalo arogantno pitanje, vezano za praksu... Vidim da se tu i tamo spominju streamovi, vektori, klase itd. Da li mi to sve treba u zivotu, tj., da li je to neka prednost u brzini / komfornosti kada se radi sa tim ?? Pretpostavljam da je to onaj deo objektivnog u C++u... Do sada sam sasvim ok izlazio na kraj sa C-om, znaci bez neke prevelike "objektivnosti"... Bilo bi lepo ako bi neko stavio prednosti i mane...
[ Lord Storm @ 23.11.2002. 12:28 ] @
Stvari stoje ovako:
Ako ti pises program u kome se koristi niz, a ne znas velicinu niza, a pri tom treba da sa njim obavljas slozene operacije, zar nije jednostavnije koristiti vektore?
Sto se klasa tice, to ne vredi ni pominjati, jer C++ NE POSTOJI BEZ KLASA!
Naravno u C-u imas struck, ali su ti tu svi clanovi javni(tj. dostupni svima). Ako zelis da napises program u kome ces zastititi podatke tu su klase. Dalje, klase imaju osobine sa kojima se lako resavaju slozeni problemi i slicno.
Bez svega toga nema C++, a nema ni govora o praksi!
[ Pera_Anarhista @ 23.11.2002. 13:08 ] @
koristim i ja klase, samo ne volim da preterujem... Da li mozda mozes da navedes jedan konkretan problem gde bi klase bile neophodne ? Meni klase sluze vise da uprostim program & razmisljanje & kod priblizim stvarnom svetu, ali nista vise od toga... Zato i pitam, mozda treba promeniti filozofiju
[ Dragi Tata @ 23.11.2002. 18:53 ] @
Klase, i uopšte OO pristup uopšte nisu neophodni. Ljudi su programirali decenijama pre nego što je OO zaživelo u praksi. I danas postoje veliki i složeni sistemi koji se razvijaju korišćenjem proceduralnog programiranja - primer su većina popularnih operativnih sistema, kao što je Windows i sve verzije i klonovi Unix-a. Međutim, činjenica je da je lakše projektovati, razviti, a posebno održavati sisteme koji su razvijani korišćenjem OO tehnika, pa se u praksi to itekako koristi.

E, što se tiče vektora i uopšte STL-a, tu dolazimo do jednog još modernijeg koncepta koji se zove generičko programiranje. Tu je suština razviti algoritme i kontejnere koji će na isti način raditi sa različitim tipovima promenljivih. Da bih to ilustrovao, daću primer generičke funkcije max u c++u:

template <class T>
const T& max(const T& lhs, const T& rhs)
{
return lhs > rhs ? lhs : rhs;
}

Ovu funkciju možeš da koristiš sa bilo kojim tipom koji radi sa operatorom >. Ovako nešto je nemoguće izvesti u "čistim" OO jezicima kao što su Java ili C#.