Oglas

objektno orijentirano programiranjeObjektno orijentirano nije samo slučajna glasina koju čujete u krugovima programiranja. Postoji razlog iza imena - ali što? Pridružite mi se dok istražujem neke osnove programskog koncepta i objasnim zašto je to orijentirano na objekt programiranje pokreće tehnologiju koja stoji iza bilo kojeg modernog softvera i uspoređuje je s procesnim i logičkim temeljenim Programiranje.

Povijest postupovnog programiranja

Kad su računala prvi put izumljena, trebalo ih je izričito programirati pomoću jednostavnih uputa - a "softver" je bio samo skup ovih krajnje jednostavnih komandi sastavljenih zajedno koje bi se mogle pokrenuti u nizu.

objektno orijentirano programiranje

U početku se zahtijevani strojni kod koji treba napisati - premjestite ovaj "bit" iz ove memorije na ovo mjesto i izvršiti logičku operaciju "i" na njemu s ovim bitom, itd. - ali ubrzo su bili apstrahirani na višu razinu koristeći OSNOVNI, TEMELJNI.

objektno orijentirana softverska arhitektura

Pretpostavljam da je većina vas u školi naišla na BASIC (svenamjenski kodeks simboličke upute). To je savršen primjer proceduralnog programskog jezika. Čak je i moj prvi programski korak koristio BASIC na Amstrad CPC-64. Svaki redak započinje brojem retka, nakon čega slijedi jednostavna uputa na ljudskom razumljivom jeziku.

instagram viewer

Budući da proceduralni jezici slijede naredbe jednu za drugom, ljudima je općenito lako slijediti ono što se događa u programu. Međutim, također je teško napraviti išta izvan jednostavne vježbe učenja - što nas dovodi do stvaranja objektno orijentiranog programiranja.

Objektno orijentirano?

S objektno orijentiranim programiranjem ideja je grupirati povezane varijable i funkcionalnosti u jedan objekt, što predstavlja neku vrstu složene strukture podataka. Taj se objekt potom može više puta upotrijebiti ili proširiti kao nešto još složenije.

Na primjer, igra može imati objekt igrača. Svaki objekt igrača u igri predstavlja jedinstven igrač u stvarnom životu u našoj imaginarnoj multiplayer online igri. Svaki objekt igrača ima nadimak, trenutnu lokaciju, inventar i brzinu kretanja. Iako je svaki igrač jedinstven, i dalje želimo da dijele istu funkcionalnost na osnovnoj razini. Svaki igrač može imati svoj pomicati funkcija koja uzrokuje da igrač pomakne naprijed X broj kvadrata. Svaki igrač može imati različitu brzinu pomicanja, ali kad kažemo igraču da se kreće u jednoj naredbi, on će znati kako reagirati u skladu s vlastitom internetskom mehanikom.

Zašto je ovo korisno? Uzimajući primjer iz stvarnog života - jer bi suvremena grafička korisnička sučelja bila nemoguća bez objekata - svi operativni sustavi nude objekt Window. Stoga je lako imati novi "prozor" zajedno s tipkama za zatvaranje i preko cijelog zaslona i mogućnošću pomicanja - bez da to sami programirate. Sve što trebate je reći stvoriti prozor.

U stvari, suvremeni softver sastoji se od tisuća do tisuća objekata - ne samo prozora, već i gumba i polja obrasca, kao i upozorenja (koji su sami posebnu vrstu prozorskog objekta) - i to je softver različit samo zbog načina na koji su raspoređeni i logike interakcije među njima drugima. To znači da su programeri i dizajneri softvera slobodni da se usredotoče na izradu jezgra mehanike svog programa, bez da svaki put iznova moraju izmisliti kotač.

objektno orijentirano programiranje

Još jedna prednost objektno orijentiranog dizajna je ta da su funkcionalnosti međusobno odvojene i nevidljive. Kada igrač pritisne tipku za naprijed u našoj igri, to pozivi funkcija pomicanja u objekt igrača. Ako napravimo malu promjenu u načinu na koji se ta poteza izvodi u objektu igrača - poput skakanja umjesto hodanja - ne moramo prilagođavati slušatelja tipkovnice. Još uvijek naziva "potez", bez obzira na to što se događa interno u objektu igrača, tako da možemo promijeniti funkcionalnost bez narušavanja svega ostalog.

Isto je i u operativnim sustavima - ako korisnik iznenada odluči promijeniti svoju boju prozora crveno, onda to ne trebate otkrivati ​​i prozor učiniti crvenim - sve je ugrađeno u prozor objekt.

baština

Nakon što imamo objekte, možemo ih proširiti i naslijediti kako bismo proizveli korisnije predmete različitog ponašanja ili dodatne funkcionalnosti. Vas limenka ponovno izmislite kotač - ako želite. U našem primjeru igrača možda želimo stvoriti objekt "nadčovjeka". Superman je još uvijek igrač, isti kao i svi ostali - i on želi nadimak i želi biti naveden na istim pločama s vodećim igračima - ali umjesto na standardni potez poteza koji hoda objekt X prostora pomiče se prema naprijed, želimo da on umjesto toga leti - pomiče se 10 kvadrata istovremeno preko vrha bilo kojeg predmeta u put. Proširenjem osnovnog objekta igrača možemo "naslijediti" svu korisnu funkcionalnost bez potrebe prepisati sve opet - ali još uvijek možemo „nadjačati“ funkciju pokreta s našim specijalnim letećim supermanom pomicati!

Objektno orijentirano programiranje apsolutno je otkriće ako ste ikada iskusili samo proceduralno programiranje, i osobno mislim da je sramota što se jednostavna vrsta OOP jezika ne uči u mlađim razredima škola.

Posljednja stvar: jezici programiranja na temelju logike

Mene to posebno zanimaju jer su općenito najkorisnije za sve što se tiče umjetne inteligencije. Programski jezici temeljeni na logici, kao što je Prolog, ne koriste naredbe i upute u tradicionalnom smislu. Umjesto toga, oni će riješiti problem s obzirom na skup pravila i uvjeta.

Zamislite večeru koju organizirate za svoju obitelj. Tvoja teta ne može sjediti pored ujaka jer će se svađati; ne želite da dvoje djece sjede zajedno jer će biti mali prevaranti; sigurno ne želite sjediti između dvoje djece. To je tamo - to je vaš program Prolog napisan. Sada mu samo dodajte popis djece i odraslih koji dolaze na zabavu, a ona će vam dati popis mogućih prijedloga za sjedenje!

Nadam se da ste uživali u ovom uvodu početničke razine u koncepte programiranja. Žao mi je što nisam mogao podrobnije objasniti i naravno, postoje milijuni stvari koje nisam dirao. Ako želite saznati više, javite mi u komentarima. Možda bismo mogli napraviti niz početnih objektno orijentiranih programskih tutorijala za razne jezike ako postoji dovoljno interesa? Obavezno provjerite naše programiranje povezanih arhiva također sadrži razne alate i web stranice za programiranje.

Kreditna slika: Shutterstock

James je diplomirao iz umjetne inteligencije i certificiran je CompTIA A + i Network +. Vodeći je programer MakeUseOf-a, a svoje slobodno vrijeme provodi igrajući VR paintball i boardgames. Gradio je računala još od djeteta.