Kako radi oop?

poruka: 6
|
čitano: 3.098
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Kako radi oop?
evo sad učim c++, i cjeli demistificirani c++ je samo o običnom programiranju, tek zadnja tema je o objektno orjentiranom. ima koji logičar koji bi mi mogao bez trunke koda objasniti kako oop zapravo funkcionira? tek tako da se ne naučim previše na proceduralno programiranje, jer to je zamka (tako kaže knjiga)
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Kako radi oop?

Ne kužim, kak je cijela knjiga o "običnom" programiranju? A kaj je s razredima? Nasljeđivanje razreda? Objektima? Sve ti je to OOP.

http://3.141592653589793238462643383279502884197169399375105820974944592.com/index314.html
 
1 0 hvala 0
16 godina
neaktivan
offline
Kako radi oop?

A vjerojatno ga zanima sam način OOPa, a ne kako se u jeziku realizira.

 

Npr. uzmeš auto. Auto ima motor, kotače, volan, gas i kočnicu. Auto se može upaliti, ugasiti, voziti i promjeniti brzina (1, 2, 3.. ne 20-30km/h). Auto ima svojstvo brzine, boje, marka i model, ali osim brzine nas sad ovo ostalo ne zanima. Motor se može upaliti, ugasiti i ubrzat mu rad. Svojstvo mu je broj obrtaja u sekundi (nek me ispravi netko ak ovo nije točno, nisam dobro upoznat s mehanikom automobila O_o). Imamo volan, koji se može okretati. Svojstvo mu je kut zaokreta. Kotači se mogu okretati ili zaustaviti. Svojstvo im je kut, deblijna gume itd, al nas sad samo zanima kut za ovaj primjer. Gas možemo pritisnuti određenom silom da se poveća broj obrtaja na motoru. Nema neka svojstva (valjda O_o). Kočnica smanjuje broj obrtaja motora.

E sad, umjesto da imaš cijelo čudo nekih funkcija i varijabli razbacano svugdje, koristiš objekte. Objekt je zapravo instanca klase. Klasa je predložak objekta, kao npr. kalup za kolače, uvijek su isti (teoretski, ako ih napraviš od npr. gipsa). Znači svi objekti jedne klase imaju ista svojstva, koja su različita (jeej, paradoks!!). Znači svaki auto ima svoju brzinu, boju, marku itd, ali jedan auto ima trenutnu brzinu 200km/h, a neki 0km/h (miruje, jel), jedan je plav, drugi je crven, treći je #FF00CC itd. Znači svaki auto je neovisan, ak sad jedan kreten nagari, drugi i dalje može voziti istom brzinom.

Teorijski, objekt je podatkovna struktura koja ti olakšava rad. U kodu možeš onda pričati o autu, volanu itd, što je puno čitljivije i lakše za koristiti. Svaki objekt ima svoje metode, znači funkcije specifične za taj objekt.

 

Nadam se da ti je malo jasnije, i da te nisam totalno zbunio. Ako netko ima neki prigovor nek me ispravi (feedback ftw!) :)

 
4 0 hvala 1
15 godina
neaktivan
offline
RE: Kako radi oop?
DragonSoul kaže...

A vjerojatno ga zanima sam način OOPa, a ne kako se u jeziku realizira.

 

Npr. uzmeš auto. Auto ima motor, kotače, volan, gas i kočnicu. Auto se može upaliti, ugasiti, voziti i promjeniti brzina (1, 2, 3.. ne 20-30km/h). Auto ima svojstvo brzine, boje, marka i model, ali osim brzine nas sad ovo ostalo ne zanima. Motor se može upaliti, ugasiti i ubrzat mu rad. Svojstvo mu je broj obrtaja u sekundi (nek me ispravi netko ak ovo nije točno, nisam dobro upoznat s mehanikom automobila O_o). Imamo volan, koji se može okretati. Svojstvo mu je kut zaokreta. Kotači se mogu okretati ili zaustaviti. Svojstvo im je kut, deblijna gume itd, al nas sad samo zanima kut za ovaj primjer. Gas možemo pritisnuti određenom silom da se poveća broj obrtaja na motoru. Nema neka svojstva (valjda O_o). Kočnica smanjuje broj obrtaja motora.

E sad, umjesto da imaš cijelo čudo nekih funkcija i varijabli razbacano svugdje, koristiš objekte. Objekt je zapravo instanca klase. Klasa je predložak objekta, kao npr. kalup za kolače, uvijek su isti (teoretski, ako ih napraviš od npr. gipsa). Znači svi objekti jedne klase imaju ista svojstva, koja su različita (jeej, paradoks!!). Znači svaki auto ima svoju brzinu, boju, marku itd, ali jedan auto ima trenutnu brzinu 200km/h, a neki 0km/h (miruje, jel), jedan je plav, drugi je crven, treći je #FF00CC itd. Znači svaki auto je neovisan, ak sad jedan kreten nagari, drugi i dalje može voziti istom brzinom.

Teorijski, objekt je podatkovna struktura koja ti olakšava rad. U kodu možeš onda pričati o autu, volanu itd, što je puno čitljivije i lakše za koristiti. Svaki objekt ima svoje metode, znači funkcije specifične za taj objekt.

 

Nadam se da ti je malo jasnije, i da te nisam totalno zbunio. Ako netko ima neki prigovor nek me ispravi (feedback ftw!) :)

ma odlično si to objasnio!!! puno mi je pomoglo!

samo da si sam malo pojasnim: dakle kad bi radio tetris, napravio bih za svaku onu kocku jednu klasu, te svaki potez stvorit jedan objekt po toj klasi (tj. jednu kocku) i naredit mu pomoću funkcije da ide dole. kad se skupe kocke u jednom redu, drugom fnkcijom ih uništim i umjesto njih stvorim one manje (one djelove koji nisu bili u redu koji se uništio). samo na primjer :) znam da je mnogo kompleksnije u stvarnosti

jesam dobro shvatio?

16 godina
neaktivan
offline
Kako radi oop?

Hm.. zanimljivo pitanje. Možeš napraviti samo klasu bloka, i onda samo objektu definirati kako izgleda, tj. kojeg je tipa (duguljasti, L, T itd). Ta klasa bi mogla npr. držat trenutnu poziciju objekta (bloka) i njegov tip. Imao bi funkciju za pomak dolje i za rotaciju bloka.

E sad, blok možeš definirati na više načina. Npr. 2D polje sa 0 i 1 popunjeno, nad kojim vršiš operaciju rotacije i oduzimanja likvidiranih blokova. Onda kad ti je matrica kompletno 0 (zbroj svih članova matrice je 0), ubiješ objekt. Ili imati matricu "palih" blokova, onda ti je lakše likvidirati i checkirati ima li likvidacije. Ne znam, trebalo bi detaljnije razmisliti, ali u globalu mislim da je to to O_o (nek me netko ispravi ak griješim, feedback ftw!)

 
0 0 hvala 1
15 godina
neaktivan
offline
RE: Kako radi oop?
DragonSoul kaže...

Hm.. zanimljivo pitanje. Možeš napraviti samo klasu bloka, i onda samo objektu definirati kako izgleda, tj. kojeg je tipa (duguljasti, L, T itd). Ta klasa bi mogla npr. držat trenutnu poziciju objekta (bloka) i njegov tip. Imao bi funkciju za pomak dolje i za rotaciju bloka.

E sad, blok možeš definirati na više načina. Npr. 2D polje sa 0 i 1 popunjeno, nad kojim vršiš operaciju rotacije i oduzimanja likvidiranih blokova. Onda kad ti je matrica kompletno 0 (zbroj svih članova matrice je 0), ubiješ objekt. Ili imati matricu "palih" blokova, onda ti je lakše likvidirati i checkirati ima li likvidacije. Ne znam, trebalo bi detaljnije razmisliti, ali u globalu mislim da je to to O_o (nek me netko ispravi ak griješim, feedback ftw!)

 

super, hvala, sad sam siguran da kužim. i ova ideja s poljem ti je odlična. hvala na svoj pomoći

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice