offline
- BugA

- Građanin
- Pridružio: 28 Sep 2007
- Poruke: 39
- Gde živiš: Bor, Srbija
|
Klasa A ima svoje atribute (podatak1, podatak2, podatak3) i svoje metode (funkcija 1(), funkcija2(), funkcija3()).
Kao sto si rekao, A1 i A2 su objekti klase A, tj. i A1 i A2 ce sadrzati sve sto sadrzi i sama klasa A.
Jedan primer iz svakodnevnog zivota - covek je klasa (nesto uopsteno, sadrzi svoje atribute i metode), Marko i Pera su objekti klase covek. Ako covek ima svoje atribute (bojaOciju, bojaKose) i metode (farbanjeKose()), to znaci da ce sve ovo imati i Marko i Pera. U prevodu, obojica ce imati atribut bojaKose (koji na primer za Marka moze imati vrednost plava, a za Peru braon). Isto tako, obojica imaju metod farbanjeKose(), kojim recimo mogu promeniti boju svoje kose, promeniti vrednost atributa bojaKose (dok atributi sadrze neke vrednosti, metodi/metode sluze za izvrsavanje neke radnje, npr. radnjom farbanjeKose mozemo menjati atribut bojaKose).
int, char, float su tipovi atributa ili metode. Ako je podatak1 tipa int (integer), to znaci da on moze biti celoborojna vrednost odredjenog opsega (npr. od −32768 do +32767, ili od 0 do +65535). U takav atribut ne mozemo upisati slovo/slova, jer smo rekli da ce taj atribut sadrzati neki (ceo) broj. float (floating point) predstavlja brojnu vrednost sa pokretnim zarezom, ili usprosceno - neki realni broj (npr. 25.56871). char predstavlja podatak tipa jedan karakter (broj, slovo, znak, primer - p, 0, !, G).
void pre imena funkcije (metode) znaci da ta funkcija ne vraca vrednost, tj. nakon njenog izvrsenja funkcija1() nece imati nikakvu vrednost. Ipak, ono sto je unutar same funkcije (izmedju { } zagrada) ce biti izvrseno pozivom funkcije).
Ovakve funkcije mozemo pozvati sa funkcija1(); nakon cega ce funkcija biti izvrsena.
Sa druge strane, int i char pre imena funkcije znace da ce po izvrsavanju funkcije, ta funkcija dobiti odredjenu vrednost koja ce biti tipa int, odnostno char.
Ovakve funkcije mozemo pozvati i sa int Broj = funkcija2(); sto znaci da ce promenljiva Broj (tipa int) uzeti vrednost funkcije funkcija2 po njenom izvrsavanju (vrednost funkcije ce isto biti tipa int).
E sad, u primeru koji si naveo, ono sto moze zbuniti jeste cinjenica da za nijednu od funkcija ne znamo sta one rade. To je zato sto su dati samo prototipovi funkcija. Prototip funkcije opisuje funkciju koja je definisana u nekom drugom delu programa. Prototip sadrzi tip vrednosti koju funkcija vraca (void ako ne vraca nista, int, char, string, bool...), ime funkcije (obicno neko smisleno ime koje nam pomaze da zapamtimo sta funkcija radi) i argumente koji se prosledjuju funkciji (u tvom primeru sve funkcije se pozivaju bez argumenata, zato nakon imena imaju praznu zagradu () ).
U nekom drugom delu koda funkcije moraju biti definisane, pa cemo (mi, ali i sam program) znati sta funkcija zapravo radi. Tako na primer, definicija funkcije void funkcija1() moze biti:
- void funkcija1()
- {
- podatak1 = podatak1 + 2;
- }
, sto nam kazuje da pozivom funkcije funkcija1() zapravo u vrednost promenljive podatak1 upisujemo novu vrednost koja ce biti jednaka staroj vrednosti uvecanoj za 2.
Da se vratimo na klase... Ako smo rekli da su Marko i Pera objekti klase covek, onda znaci da mozemo uraditi nesto ovako:
- Marko.bojaOciju = plava;
- Pera.bojaOciju = braon;
Ovime smo dodelili vrednosti atributima bojaOciju objekata Marko i Pera (jedan ima plave, drugi braon oci).
Isto je tako i sa primerom koji vam je profesorica napisala - objekti A1 i A2 imace sve atribute i metode klase A, pa tako mozemo napisati:
- A1.podatak1 = 5;
- A2.podatak1 = 12;
, cime cemo atributima podatak1 oba objekta dodeliti odredjene vrednosti. Mozemo i pozvati metodu (funkciju) funkcija1() objekta kog zelimo, npr. napisemo:
- A1.funkcija1();
, cime ce se izvrsiti metoda (funkcija) funkcija1() objekta A1. Ponavljamo, objekat A1 je klase A, pa zato sadrzi sve osobine - atribute i metode - klase A.
Eto, nisam bas znao koji te je tacno deo zbunio, pa sam sve po malo objasnio. Nadam se da si nesto mogao da razumes Ukoliko te jos nesto zanima pitaj, samo naglasi o kom delu tacno pricamo.
Ukoliko neko od iskusnijih kolega zeli da me dopuni ili ispravi, bez ustrucavanja
Pozdrav, BugA
|