Pomoc oko C++ (sto prije-to bolje)

Pomoc oko C++ (sto prije-to bolje)

offline
  • RA$ 
  • Građanin
  • Pridružio: 29 Jan 2006
  • Poruke: 124
  • Gde živiš: Taipei

E ovako,profesorica nam je pricala o klasama i objektima,i doticna je napisala sledece :

class A{
public:
int podatak1;
char podatak2;
float podatak3;

void funkcija 1();
int funkcija2();
float funkcija3();
}A1,A2;

Problem je u tome sto ona tu nije objasnila kako ovo (i sta) radi.....E sad ako neko moze da to "protumaci" ,bio bih veoma zahvalan....Znam sta je public, A1 i A2 (koliko sam skontao iz nekog dijagrama,to su objekti klase A ),float,void,char itd,nego mi nije jasno kako te klase rade,znaci totalno ne razumijem ovo sto je ona napisala.....

Hvala unaprijed !! Pozdrav



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Igor Đorđević
  • 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 Smile 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 Wink

Pozdrav, BugA



Ko je trenutno na forumu
 

Ukupno su 1399 korisnika na forumu :: 32 registrovanih, 13 sakrivenih i 1354 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., bankulen, cenejac111, doktor123, dushan, flash12, FOX, jackreacher011011, janbo, Karla, kjkszpj, ladro, laurusri, MB120mm, mercedesamg, Metanoja, mikrimaus, milutin134, mocnijogurt, ozzy, Petarvu, radoznao, raptorsi, Romibrat, Srle993, stegonosa, TheBeastOfMG, Webb, wizzardone, Zoca, |_MeD_|, šumar bk2