Što je objektno orijentirano programiranje? Osnove pojašnjene u uvjetima laika

  • Joseph Goodman
  • 0
  • 4313
  • 785
Oglas

Ako ste radili početničko programiranje ili čak počeli gledati različite jezike, vjerojatno ste naišli na frazu “objektno orijentirano programiranje” (ili “OOP”).

Postoje razne vrste tehničkih objašnjenja o tome o čemu se radi, ali danas ćemo pogledati definiranje objektno orijentiranog programa na jednostavan način.

Prije nego što započnemo: Proceduralni jezici

Da biste razumjeli što je objektno orijentirani programski jezik, morate razumjeti što ga je zamijenilo. Rani programski jezici bili su proceduralni, jer je programer definirao vrlo specifičan skup postupaka koje bi računalo izvršilo.

U najranijim danima postupci su pisani na bušilicama. Ti su koraci poduzeli podatke, izveli niz postupaka na tim podacima, a zatim ispisali nove podatke.

Proceduralni jezici jedno su vrijeme dobro funkcionirali (a neki se i dalje koriste). Ali kada želite programirati nešto izvan osnovnog slijeda koraka, procesni jezici mogu postati teški za upravljanje. Tu dolazi objektno orijentirano programiranje.

Objektno objektno programiranje

Dakle, što je objektno orijentirano programiranje?

Prvi objektno orijentirani jezik (općenito prihvaćen kao Simula) uveo je ideju objekti. Objekti su zbirka podataka koja se tretiraju kao jedinstvena cjelina.

Zaronit ćemo dublje u ono što to zapravo znači u sekundi s primjerom, ali prvo moramo razgovarati klase. Razredi su poput predobjekata. Sadrže popis atributa koji, kada su definirani, postaju objekt.

Uzmimo za primjer programiranje igre u šahu. Možda imamo klasu koja se zove Piece. Unutar Piece-a imamo popis atributa:

  • Boja
  • Visina
  • Oblik
  • Kretanje je dopušteno

Objekt jednostavno definira jedan određeni primjerak stvari koja pripada toj klasi.

Tako bismo mogli imati objekt zvan WhiteQueen. Taj bi objekt imao definicije za sva četiri atributa (bijeli, visoki, cilindrični s crepelacijama, bilo koji broj razmaka u bilo kojem smjeru). Također može imati metode ili funkcije.

Što je ovo puno bolje od proceduralnog pristupa?

Ukratko, objektno orijentirani programski jezici (poput Java) olakšavaju organiziranje podataka i koda na način koji je svestraniji za veći projekt.

Da bismo to malo detaljnije raspravljali, govorit ćemo o četiri osnove objektno orijentiranog programiranja.

Objektno programirano: apstrakcija

Samo zato što želite nešto koristiti ne znači da morate znati kako to funkcionira. Na primjer, stroj za espresso je složen. Ali ne trebate znati kako to funkcionira. To jednostavno morate znati kad udarite “Na,” ideš po espresso.

Isto je i s objektima u objektno orijentiranom programiranju. U našem šahovskom primjeru možda imamo potez (). Ta metoda može zahtijevati puno podataka i drugih metoda. Možda će trebati varijable početnog i krajnjeg položaja. Mogla bi se upotrijebiti druga metoda za utvrđivanje je li uhvaćen komad.

Ali to ne trebate znati. Sve što trebate znati je da kada kažete komadu da se kreće, on se kreće. To je apstrakcija.

Objektno orijentirano programiranje: kapsulacija

Inkapsulacija je jedan od načina da objektno orijentirano programiranje stvara apstrakciju. Svaki je objekt skup podataka koji se tretiraju kao jedinstvena cjelina. A unutar tih objekata su i podaci i varijable i metode.

Varijable unutar objekta obično se čuvaju kao privatne, što znači da im drugi objekti i metode ne mogu pristupiti. Na objekte može utjecati samo primjenom njihovih metoda.

Bishop predmet može sadržavati nekoliko informacija. Na primjer, mogla bi imati varijablu koja se zove “položaj.” Ta je varijabla nužna za upotrebu poteza (move). I, naravno, ima boju.

Čineći varijablu položaja privatnom, a metoda move () javnom, programer štiti pomičnu varijablu od bilo čega drugog. A ako je boja privatna varijabla, ne postoji način da je drugi objekt promijeni, osim ako nema metode koja dopušta promjenu. (Što vjerojatno ne biste imali, jer boja komada treba ostati konstantna.)

Te se varijable i metode čuvaju unutar objekta Bishop. Budući da su u kapsuli, programer može promijeniti strukturu ili sadržaj objekta bez brige o javnom sučelju..

Objektno orijentirano programiranje: nasljeđivanje

Pored klasa, objektni programski jezici imaju i podklase. Sadrže sve atribute iz nadređene klase, ali mogu sadržavati i druge atribute.

U našoj šahovskoj igri komadima zalagaonice treba metoda koja ih može pretvoriti u druge komade ako ih dovedu do kraja ploče. Nazvat ćemo ga metodom transformPiece ().

TransformPiece () nije potreban svaki dio. Pa ga ne bismo željeli svrstati u razred Piece. Umjesto toga, možemo stvoriti podklasu koja se zove Zalagaonica. Budući da je podklasa, nasljeđuje sve atribute iz Piece-a. Dakle, instanca podklase Zalog uključuje boju, visinu, oblik i dopušteno kretanje.

Ali također uključuje metodu transformPiece (). Sada se više ne moramo brinuti da li ćemo slučajno upotrijebiti tu funkciju na potezu. Evo tehničkog objašnjenja:

Stvaranje potklasa također štedi puno vremena. Umjesto da za sve stvore nove klase, programeri mogu stvoriti bazu i potom je proširiti na nove podklase kad to trebaju. (Međutim, vrijedno je napomenuti da je pretjerano oslanjanje na nasljedstvo loše 10 osnovnih principa programiranja svaki programer mora slijediti 10 osnovnih načela programiranja svaki programer mora slijediti. Uvijek napišite kod koji može zadržati svatko tko može završiti rad na vašem softveru. za kraj, evo nekoliko programskih principa koji će vam pomoći da očistite svoj čin.)

Objektno orijentirano programiranje: polimorfizam

Polimorfizam je rezultat nasljeđivanja. Potpuno razumijevanje polimorfizma zahtijeva određeno znanje programiranja, tako da ćemo se ovdje držati osnova. Ukratko, polimorfizam omogućava programerima da koriste metode istog naziva, ali s njima različitih predmeta.

Na primjer, naša klasa Piece može imati metodu move () koja pomiče komad jedan prostor u bilo kojem smjeru. To djeluje za kraljev komad, ali ne za ništa drugo. Da biste riješili taj problem, možemo definirati novu metodu move () u podklasi Rook koja definira kretanje kao neograničeni broj razmaka naprijed, natrag, lijevo ili desno.

Sada, kada programer pozove metodu move () i koristi komad kao argument, program će točno znati kako se komad treba kretati. To štedi tonu vremena tijekom pokušaja otkrivanja koje od mnogo različitih metoda trebate koristiti.

Objektno orijentirano programiranje u matici

Ako vam se glava malo vrti nakon one posljednje četiri definicije, ne brinite se previše. Evo glavnih stvari koje morate zapamtiti:

  • Objektno orijentirano programiranje prikuplja informacije u pojedinačne jedinice koje se nazivaju objekti.
  • Svaki je objekt pojedinačna klasa klase.
  • Apstrakcija skriva unutarnja djelovanja predmeta kad ih nije potrebno vidjeti.
  • Inkapsulacija pohranjuje povezane varijable i metode unutar objekata i štiti ih.
  • Nasljeđivanje dopušta podklasama korištenje atributa iz roditeljskih klasa.
  • Polimorfizam omogućuje predmetima i metodama da se bave s više različitih situacija s jednim sučeljem.

Ako se sjećate tih točaka, dobro ćete se baviti onim što je objektno orijentirano programiranje. Kao što sam spomenuo, četiri osnove objektno orijentiranog programiranja mogu biti malo teške za rješavanje. Ali kad započnete s programiranjem, postat će jasniji.

Ne zaboravite da smo u ovom članku raspravljali samo o općenitostima. Različiti objektno orijentirani jezici imat će svoje osobine i načine da se stvari dogode. Jednom kada odaberete pravi jezik za koji tražite najbolje jezike za programiranje? Započni ovdje! Tražite najbolje jezike za programiranje? Započni ovdje! Bez obzira jeste li potpuno novi u programskim jezicima ili želite uskočiti u novu vrstu programiranja, jedno od najvažnijih pitanja koje treba postaviti je: "Koji programski jezik je prikladan za mene?" , počet ćete učiti kako to primjenjuju OOP načela.




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.