Što je OOP? Osnovni principi objektno orijentiranog programiranja

Zašto je objektno orijentirano programiranje preferirano u većini projekata? OOP nudi učinkovit način rješavanja njihove složenosti. Umjesto razmatranja programa kao slijeda izvršnih uputa, predstavlja ga kao skupinu objekata s određenim svojstvima i obavlja određene akcije s njima. To dovodi do stvaranja jasnijih, pouzdanijih i jednostavnijih aplikacija.

Osnovni principi objektno orijentirano programiranje (OOP) Oni su bili formirani jer su ograničenja otkrivena u ranijim pristupima. Među njima - neograničen pristup podacima i veliki broj veza koje nameću ograničenja na uvođenje promjena. Njihova svijest i razlozi važni su za razumijevanje OOP-a u programiranju i koje su njegove prednosti.

Proceduralni jezici

C, Pascal, FORTRAN i slični jezici su proceduralni. To jest, svaki od njihovih operatora naređuje računalu da nešto učini: dobiti podatke, zbrojiti brojeve, podijeliti s šest, prikazati rezultat. Primjena postupovnog jezika je popis uputa. Ako je mali, nije potreban drugi organizacijski princip (često se naziva paradigma). Programer stvara popis uputa i računalo ih izvršava.

Odvajanje u funkcije

Kad aplikacije postanu veće, popis se čini nezamislivim. Malo ljudi može razumjeti više od nekoliko stotina uputa dok se ne grupiraju zajedno. Zbog toga je funkcija postala način na koji aplikacije postaju razumljivije za svoje kreatore. Na nekim jezicima isti se koncept može nazvati podprogramom ili postupkom.

Aplikacija se dijeli na funkcije, od kojih svaka ima jasno definiranu svrhu i sučelje.

Ideja razdvajanja u postupke može se produžiti grupiranjem u veći objekt nazvan modul, ali princip je sličan: grupiranje komponenti koje izvršavaju popise poučavanja.

Razdvajanje funkcija i modula jedan je od temelja strukturnih programiranja, koji je nekoliko desetljeća prije dolaska OOP bio preduvjetna paradigma.

oop ovo

Problemi strukturiranog programiranja

Kako su aplikacije rasle veće, strukturirano programiranje počinju doživjeti poteškoće. Projekti su postali prekomplicirani. Grafovi su se pomaknuli. Uključen je veći broj programera. Složenost je rasla. Troškovi su porasli skočiti, grafikon se preselio dalje i došlo je do kolapsa.

Analiza uzroka tih kvarova otkrila je nedostatke proceduralne paradigme. Bez obzira na to koliko je dobro implementiran strukturirani pristup programiranju, velike aplikacije postaju pretjerano složene.

Koji su uzroci tih problema vezanih uz proceduralne jezike? Prvo, funkcije imaju neograničen pristup globalnim podacima. Drugo, nepovezani postupci i značenja ne modeliraju stvarni svijet.

Ako uzmemo u obzir te probleme u kontekstu programa stjecanja zaliha, jedan od najvažnijih elemenata globalnih podataka jest skup računovodstvenih jedinica. Različite funkcije mogu im pristupiti da unesu novu vrijednost, prikazuju ga, mijenjaju i tako dalje.

Neograničeni pristup

U programu koji je napisan, na primjer, u C, postoje dvije vrste podataka. Lokalne su skrivene unutar funkcije i druge se procedure ne koriste.

Kada dvije ili više funkcija trebaju pristupiti istim podacima, potonji moraju biti globalni. To su, na primjer, informacije o stavkama koje treba uzeti u obzir. Globalnim podacima moguće je pristupiti bilo kojim postupkom.

U velikom programu postoje mnoge funkcije i mnogi globalni elementi. Problem s proceduralnom paradigmom je da to dovodi do još većeg broja mogućih veza između njih.

Takav veliki broj spojeva uzrokuje nekoliko poteškoća. Prvo, to komplicira razumijevanje strukture programa. Drugo, teško je napraviti promjene. Promjena globalne stavke podataka može zahtijevati prilagodbu svih funkcija koje imaju pristup toj datoteci.

Na primjer, u računovodstvenom programu netko odluči da kôd predmeta ne bi smio sadržavati pet znamenki, već s 12. To će zahtijevati promjenu vrsta podataka od kratkog do duge. Sada se funkcije povezane s kodom moraju mijenjati radi rada s novim formatom.

Kada se elementi mijenjaju u velikoj aplikaciji, teško je reći koje procedure imaju pristup njima. No, čak i ako se to pojasni, njihovo mijenjanje može dovesti do pogrešnog rada s drugim globalnim podacima. Sve je povezano sa svime drugom, pa će promjena na jednom mjestu biti u drugom.

što je oop u programiranju

Modeliranje u stvarnom svijetu

Drugi i važniji problem proceduralne paradigme je da njegovo lociranje pojedinih podataka i funkcija ne oblikuje stvari u stvarnom svijetu. Ovdje se bavimo s takvim predmetima kao što su ljudi i automobili. Ne izgledaju poput podataka ili funkcija. Složeni stvarni objekti imaju atribute i ponašanje.

atributi

Primjeri atributa (ponekad zvane karakteristike) za ljude su boja očiju i naslov posla, za automobile - snagu i broj vrata. Kao što se ispostavilo, atributi u stvarnom svijetu jednaki su podacima u programu. Imaju specifična značenja, kao što su plava (boja oka) ili četiri (broj vrata).

ponašanje

Ponašanje je ono što stvarni objekti stvaraju kao odgovor na neku vrstu utjecaja. Ako zatražite od vlasti da podignu svoje plaće, odgovor je "da" ili "ne". Ako pritisnete kočnicu, automobil se zaustavlja. Izgovor i zaustavljanje su primjeri ponašanja. Ponašanje je poput postupka: pozvano je učiniti nešto, i to čini. Dakle, podaci i funkcije ne sami po sebi učinkovito modeliraju objekte u stvarnom svijetu.

Obraćajući

Objekt u OOP predstavlja zbirku podataka i funkcija. Samo postupci koji se nazivaju funkcije članova u C + + omogućuju vam da dobijete svoje vrijednosti. Podaci su skriveni i zaštićeni od promjena. Vrijednosti i funkcije inkapsulirane su u jednoj jedinici. Encapsulacija i skrivanje glavni su termini u opisu OO jezika.

Ako želite promijeniti podatke, točno znate koje funkcije komunicirati s njima. Nijedan drugi postupak ne može im pristupiti. To pojednostavljuje pisanje, ispravljanje pogrešaka i održavanje programa.

Aplikacija, u pravilu, sastoji se od nekoliko objekata koji međusobno djeluju, pozivajući članove funkcije.

Danas je najčešće korišten jezik OOP (objektno usmjeren programiranje) C ++ (plus-plus). Java nema neke funkcije, kao što su pokazivači, predlošci i višestruka nasljednost, što ga čini manje snažnim i svestranim od C + +. C # još nije dostigao popularnost C + +.

Treba napomenuti da se takozvane funkcije člana u C + + nazivaju metode na nekim drugim OO jezicima, kao što je Smalltalk. Elementi podataka nazivaju se atributi. Pozivanje metode objekta šalje poruku na nju.



Objektno orijentirano programiranje s plusom

analogija

Predmete možete poslati u odjele tvrtke. U većini organizacija, zaposlenici ne rade jedan dan s kadrovima, sljedeći na plaću, a zatim tjedan dana u maloprodaji. Svaki odjel ima svoje osoblje s jasno postavljenim odgovornostima. Postoje i vlastiti podaci: plaće, prodajni podaci, zapisi o zaposlenicima, itd. Ljudi u odjelima rade s njihovim informacijama. Razdvajanje tvrtke, dakle, olakšava kontrolu nad svojim aktivnostima i održava cjelovitost podataka. Za računovodstvo je odgovoran payslips. Ako trebate znati ukupni iznos plaća koji se plaća u južnoj grani u srpnju, ne morate previdjeti u arhivi. Dovoljno je poslati napomenu osobi koja je zadužena, pričekajte da ta osoba dobije pristup podacima i pošalje odgovor s potrebnim informacijama. To osigurava pridržavanje propisa i odsutnost vanjskih smetnji. Na isti način, objekt u OOP osigurava organizaciju aplikacije.

Treba imati na umu da usmjerenost na objekte ne odnosi se na detalje programa. Većina izjava C + odgovara operaterima postupovnog jezika kao što je C. Doista, funkcije članova u C + + vrlo su slične funkcijama u C. Samo širi kontekst omogućit će utvrditi je li instrukcija proceduralna ili objektno orijentirana.

objekt u oopu

Objekt u OOP: definiciji

Prilikom razmatranja problema programiranja na OO jeziku, umjesto pitanja o razdvajanju u zasebne funkcije, javlja se problem razdvajanja u objekte. OOP razmišljanje olakšava razvoj aplikacija. To je zbog sličnosti softvera i stvarnih objekata.

Koje stvari postaju objekti u OOP? Ispod su tipične kategorije.

Fizički objekt u OOP je:

  • transport u uzorku protoka;
  • električni elementi u programima za projektiranje sklopova;
  • zemalja u modelu gospodarstva;
  • zrakoplova u sustavu kontrole zračnog prometa.

Elementi računalnog okruženja korisnika:

  • izbornik;
  • prozori;
  • grafika (linija, pravokutnik, krug);
  • tipkovnice, miša, pisača, diskova.

ljudi:

  • radnici;
  • studenti;
  • korisnici;
  • prodavači.

informacije:

  • računovodstvena knjiga;
  • privatna stvar;
  • rječnika,
  • tablica zemljopisnih širina i dužina naselja.

Veza između stvarnih objekata i OOP-a rezultat je kombinacije funkcija i podataka: revolucionirali su programiranje. Nema tako bliske korespondencije u proceduralnim jezicima.

objekt u definiciji oop

klasa

Objekti u OOP su članovi klase. Što to znači? Programski jezici su ugrađeni vrste podataka. vrsta int, to jest, cijeli broj, unaprijed je definiran u C + +. Možete objaviti bilo koji broj varijabli int.

Slično tome, određen je skup objekata iste klase. Ona definira funkcije i podatke koji su uključeni u njezine objekte bez da ih stvara, baš kao što int ne stvara varijable.

Klasa u OOP je opis brojnih sličnih objekata. Prince, Sting i Madonna su pjevači. Ne postoji nijedna osoba s tim imenom, ali ljudi se mogu nazvati ako imaju odgovarajuće karakteristike. OOP objekt je primjer klase.

baština

U životu, razredi su podijeljeni u podrazrede. Na primjer, životinje su podijeljene na vodozemce, sisavce, ptice, insekte itd.

Načelo ove vrste podjele je da svaka podklasa ima zajedničke karakteristike s klasom iz koje se pojavljuje. Svi automobili imaju kotače i motor. To su obilježja vozila. Uz opće značajke, svaka podrazreda ima svoje osobine. Autobusi imaju mnogo mjesta, a kamioni imaju mjesta za nošenje teških tereta.

Slično tome, osnovna klasa može postati roditelj nekoliko izvedenih podklasa koje se mogu definirati tako da će dijeliti svoje karakteristike dodatkom vlastitih. Nasljeđivanje je slično funkciji koja pojednostavljuje proceduralni program. Ako je nekoliko dijelova koda gotovo jednako, možete izvući zajedničke elemente i staviti ih u jedan postupak. Tri dijela aplikacije mogu nazvati funkciju za obavljanje zajedničkih akcija, ali mogu proizvesti i vlastite operacije. Slično tome, baza klase sadrži podatke zajedničke izvedenoj skupini. Poput funkcija, nasljeđivanje smanjuje program OO i pojašnjava međusobno povezivanje njegovih elemenata.

objekt u oopu

recikliranje

Nakon stvaranja klase i debugiranja, može se proslijediti drugim programerima za ponovnu upotrebu u vlastitim aplikacijama. Ovo je slično knjižnici funkcija koje mogu biti uključene u različite aplikacije.

U OOP, baština je proširenje ideje višestruke upotrebe. Iz postojeće klase, bez mijenjanja, možete stvoriti novi s dodatkom drugih funkcija. Jednostavnost ponovnog korištenja postojećeg softvera važna je prednost OOP-a. Vjeruje se da to omogućuje povećanje prinosa od početne investicije.

Stvaranje novih vrsta podataka

Predmeti su pogodni za stvaranje novih vrsta podataka. Pretpostavimo da program upotrebljava dvodimenzionalne vrijednosti (na primjer, koordinate ili zemljopisne širine i dužine), a postoji želja da izrazi akcije s njima aritmetičke operacije:

položaj1 = pozicija + podrijetlo,

gdje položaj1, položaj i podrijetlo - parova nezavisnih numeričkih vrijednosti. Stvaranje klase koja uključuje ove dvije vrijednosti i deklariranje varijabli sa svojim objektima stvara novu vrstu podataka.

osnovna načela objektno orijentiranog programiranja

Polimorfizam, preopterećenje

Operatori = (jednaki) i + (plus) koji se koriste u gornjoj pozicijskoj aritmetičkoj ne djeluju na isti način kao kod ugrađenih tipova, kao što je int. Položaji objekata i sl. Nisu unaprijed definirani, ali su programirani. Kako ti operatori znaju kako se njima nositi? Odgovor je da za njih možete definirati nove obrasce ponašanja. Te će operacije biti funkcije članova klase pozicije.

Korištenje operatora ili postupaka, ovisno o tome što rade, zove se polimorfizam. Kada postojeći operater, primjerice + ili =, može raditi s novom vrstom podataka, kažu da je preopterećen. Preopterećenje u OOP je vrsta polimorfizma. To je njegova važna značajka.

Knjiga OOP-a "Objektno orijentirana programiranje za lutke" omogućit će svima da se detaljnije upoznaju s ovom temom.

Dijelite na društvenim mrežama:

Povezan
Modularno programiranjeModularno programiranje
Strukturirana programiranjeStrukturirana programiranje
Što je jаvascript? Povijest izgleda i glavne značajkeŠto je jаvascript? Povijest izgleda i glavne značajke
Objektno orijentirano programiranje (OOP): polimorfizamObjektno orijentirano programiranje (OOP): polimorfizam
Informatika. Osnove algoritma i programiranjaInformatika. Osnove algoritma i programiranja
Što je to encapsulation? Inkapsuliranje u programiranjuŠto je to encapsulation? Inkapsuliranje u programiranju
DB je ... Vrste i svojstva baze podatakaDB je ... Vrste i svojstva baze podataka
Najpopularniji programski jezici. Programski jezici za početnikeNajpopularniji programski jezici. Programski jezici za početnike
PHP konstrukt: stvaranje primjeraka klasePHP konstrukt: stvaranje primjeraka klase
Paralelni programiranje: opis, tehnologija, zadaci i prednostiParalelni programiranje: opis, tehnologija, zadaci i prednosti
» » Što je OOP? Osnovni principi objektno orijentiranog programiranja
LiveInternet