OOP je kaj? Osnovna načela objektno usmerjenega programiranja
Zakaj je v večini projektov prednostno ciljno usmerjeno programiranje? OOP ponuja učinkovit način za reševanje njihove kompleksnosti. Namesto da bi program obravnaval kot zaporedje izvedljivih navodil, ga predstavlja kot skupino objektov z določenimi lastnostmi in z njimi izvaja določene ukrepe. To vodi k ustvarjanju jasnejših, zanesljivih in enostavnejših aplikacij.
Vsebina
Osnovna načela objektno orientirano programiranje (OOP) Oblikovane so bile, ker so bile v predhodnih pristopih odkrite omejitve. Med njimi - neomejen dostop do podatkov in veliko povezav, ki omejujejo uvedbo sprememb. Njihova ozaveščenost in razlogi so pomembni za razumevanje, kaj je OOP v programiranju in kakšne so njegove koristi.
Procesni jeziki
C, Pascal, FORTRAN in podobni jeziki so postopkovni. To pomeni, da vsak od svojih operaterjev naroči računalniku, da naredi nekaj: pridobi podatke, dodaš številke, razdeli za šest, prikaže rezultat. Aplikacija proceduralnega jezika je seznam navodil. Če je majhna, ni potrebno nobeno drugo organizacijsko načelo (pogosto imenovano paradigma). Programator ustvari seznam navodil in računalnik jih izvaja.
Ločevanje v funkcije
Ko aplikacije postanejo večje, se seznam izkaže za težavno. Malo jih lahko razume več kot nekaj sto navodil, dokler jih ne združijo. Zaradi tega je funkcija postala način, kako postati aplikacije bolj razumljive za svoje ustvarjalce. V nekaterih jezikih se isti koncept lahko imenuje podprogram ali postopek.
Aplikacija je razdeljena na funkcije, od katerih ima vsaka jasno določen namen in vmesnik.
Zamisel o ločitvi v postopke lahko razširimo z združevanjem v večji objekt, imenovan modul, vendar je načelo podobno: združevanje komponent, ki izvajajo sezname navodil.
Ločevanje v funkcije in moduli je eden od temeljev strukturnega programiranja, ki je že nekaj desetletij pred prihodom OOP-a prevladujoča paradigma.
Problemi strukturiranega programiranja
Ker so se vloge povečale, strukturirano programiranje ki se začnejo soočati s težavami. Projekti so postali preveč zapleteni. Grafi so se premaknili. Vključeno je bilo večje število programerjev. Kompleksnost se je povečala. Stroški so se povečali, grafikon se je premaknil še naprej in prišlo je do propada.
Analiza vzrokov teh napak je pokazala pomanjkljivosti procesne paradigme. Ne glede na to, kako dobro se izvaja strukturiran pristop k programiranju, velike aplikacije postanejo preveč zapletene.
Kateri so vzroki za te težave, povezane s procesnimi jeziki? Prvič, funkcije imajo neomejen dostop do globalnih podatkov. Drugič, nepovezani postopki in pomeni ne ustvarjajo resničnega sveta.
Če te težave obravnavamo v okviru programa za pridobivanje zalog, je eden od najpomembnejših globalnih podatkovnih elementov agregat računovodskih enot. Različne funkcije imajo dostop do njih, da vnesejo novo vrednost, jo prikažejo, spremenijo in tako naprej.
Neomejen dostop
V programu, napisanem na primer v C, obstajata dve vrsti podatkov. Lokalni so skriti znotraj funkcije in drugi postopki se ne uporabljajo.
Ko dve ali več funkcij potrebuje dostop do istih podatkov, mora biti slednja globalna. Te so na primer informacije o elementih, ki jih je treba upoštevati. Dostop do globalnih podatkov je možen s katerimkoli postopkom.
V velikem programu je veliko funkcij in veliko globalnih elementov. Problem s proceduralno paradigmo je, da to vodi do še večjega števila potencialnih povezav med njimi.
Tako veliko število spojin povzroča več težav. Prvič, to otežuje razumevanje strukture programa. Drugič, oteži spremembe. Sprememba v globalni podatkovni postavki lahko zahteva prilagoditev vseh funkcij, ki imajo dostop do nje.
Na primer, v računovodskem programu se nekdo odloči, da koda predmeta ne bi smela biti sestavljena iz petih številk, temveč od 12. To bo zahtevalo spremembo vrsta podatkov od kratkega do dolgega. Zdaj je treba spremeniti funkcije, povezane s kodo, ki bodo delovale z novim formatom.
Ko se elementi spremenijo v veliki aplikaciji, je težko reči, kateri postopki imajo dostop do njih. Toda tudi če je to pojasnjeno, lahko spreminjanje le-teh vodi do nepravilnega dela z drugimi svetovnimi podatki. Vse je povezano z vsem drugim, zato bo sprememba na enem mestu v drugem.
Modeliranje v realnem svetu
Drugi in pomembnejši problem procesne paradigme je, da njegova lokacija posameznih podatkov in funkcij ne ustvarja stvari v resničnem svetu. Tu se ukvarjamo s predmeti, kot so ljudje in avtomobili. Ne izgledajo kot podatki ali funkcije. Kompleksni resnični predmeti imajo atribute in vedenje.
Atributi
Primeri atributov (včasih imenovane značilnosti) za ljudi so barva oči in naziv delovnega mesta, za avtomobile - moč in število vrat. Izkazalo se je, da so atributi v resničnem svetu enakovredni podatkom v programu. Imajo posebne pomene, kot so modra (barva oči) ali štiri (število vrat).
Vedenje
Obnašanje je tisto, kar stvarni predmeti proizvajajo kot odziv na nekakšen vpliv. Če zaprosite oblasti, da dvignejo svoje plače, je odgovor "da" ali "ne". Če pritisnete zavoro, se avtomobil ustavi. Izgovorjava in ustavitev sta primeri vedenja. Vedenje je kot postopek: pozvano je, da naredi nekaj in to naredi. Tako samo podatki in funkcije ne ustvarjajo modelov realnega sveta učinkovito.
Odpravljanje težav
Objekt v OOP je predstavljen kot zbirka podatkov in funkcij. Samo postopki, ki se imenujejo člani funkcije v C + +, vam omogočajo, da pridobite svoje vrednosti. Podatki so skriti in zaščiteni pred spremembami. Vrednosti in funkcije so enake v eno enoto. Inkapsulacija in skrivanje sta glavni izrazi v opisu jezikov OO.
Če želite spremeniti podatke, natančno vedite, katere funkcije so z njimi povezane. Noben drug postopek nima dostopa do njih. To poenostavi pisanje, odpravljanje napak in vzdrževanje programa.
Aplikacija praviloma sestavlja več predmetov, ki medsebojno komunicirajo in pokličejo funkcije člana.
Danes je najbolj razširjen jezik OOP (objektno orientiranega programiranja) C + + (plus-plus). Java nima nekaterih funkcij, kot so kazalci, predloge in večkratna dedovanja, zaradi česar je manj zmogljiv in vsestranski kot C + +. C # še ni dosegel priljubljenosti C + +.
Opozoriti je treba, da se tako imenovane funkcije članov v C + + imenujejo metode v nekaterih drugih jezikih OO, kot je Smalltalk. Podatkovni elementi se imenujejo atributi. Klicanje metode predmeta pošilja sporočilo nanj.
Analogija
Predmete lahko predložite oddelkom podjetja. V večini organizacij zaposleni ne delajo en dan s kadri, naslednji na plačilni listi in teden dni delajo na drobno. Vsak oddelek ima svoje osebje z jasno dodeljenimi odgovornostmi. Obstajajo tudi lastni podatki: plače, podatki o prodaji, evidenca zaposlenih itd. Osebe v oddelkih delujejo s svojimi podatki. Ločitev družbe tako olajša nadzor nad svojimi dejavnostmi in ohranja celovitost podatkov. Računovodstvo je odgovorno za plačilni list. Če morate v juliju seznaniti celotni znesek plač, plačan v južni veji, v arhivu ni treba brati. Dovolj je, da odgovorni osebi pošljete sporočilo, počakajte, da ta oseba dobi dostop do podatkov in pošlje odgovor z zahtevanimi podatki. To zagotavlja skladnost s predpisi in odsotnost zunanjih motenj. Na enak način objekt v OOP-u zagotavlja organizacijo aplikacije.
Upoštevati je treba, da usmeritev na predmete ne zadeva podrobnosti programa. Večina izjav C ++ ustreza proceduralnim jezikovnim operaterjem, kot je C. Dejansko so funkcije članov v C ++ zelo podobne funkcijam v C. Samo širši kontekst bo omogočil ugotavljanje, ali je navodilo procesno ali objektno usmerjeno.
Objekt v OOP: definicija
Pri problematiki programiranja v jeziku OO namesto vprašanj o ločitvi v ločene funkcije nastane problem ločevanja v objekte. OOP razmišljanje olajša razvoj aplikacij. To je posledica podobnosti programske opreme in stvarnih predmetov.
Katere stvari postanejo predmeti v OOP? Spodaj so tipične kategorije.
Fizični objekt v OOP-u je:
- transport v vzorcih tokov;
- električni elementi v programih načrtovanja vezij;
- države v gospodarskem modelu;
- zrakoplovov v sistemu kontrole zračnega prometa.
Elementi računalniškega okolja uporabnika:
- meni;
- okna;
- grafika (linija, pravokotnik, krog);
- tipkovnico, miško, tiskalnik, diskovne diske.
Ljudje:
- zaposleni;
- študenti;
- stranke;
- prodajalci.
Podatki:
- računovodska knjiga;
- zasebna zadeva;
- slovar;
- tabela širin in dolžin naselij.
Povezava med objekti iz stvarnega sveta in OOP je bila rezultat kombinacije funkcij in podatkov: spremenili so programiranje. V proceduralnih jezikih ni tako blizu korespondence.
Razred
Objekti v OOP so člani razredov. Kaj to pomeni? Programski jeziki so vgrajeni vrste podatkov. Tip int, to je celo število, je predefinirano v C + +. Lahko razglasi poljubno število int spremenljivk.
Podobno je definiran niz predmetov istega razreda. Določa funkcije in podatke, ki so vključeni v njene objekte, ne da bi jih ustvarili, tako kot int ne ustvarja spremenljivk.
Razred v OOP-u je opis številnih podobnih predmetov. Princ, Sting in Madonna sta pevci. Ni nobene osebe s tem imenom, ljudje pa se lahko imenujejo, če imajo ustrezne značilnosti. Objekt OOP je primer razreda.
Dedovanje
V življenju so razredi razdeljeni v podrazrede. Na primer, živali so razdeljene na dvoživke, sesalce, ptice, žuželke itd.
Načelo te vrste delitve je, da ima vsak podrazred skupne značilnosti z razredom, iz katerega se pojavlja. Vsi avtomobili imajo kolesa in motor. To so opredeljevalne značilnosti vozil. Poleg splošnih značilnosti ima vsak podrazred lastne značilnosti. Avtobusi imajo veliko sedežev, tovornjaki pa imajo prostor za prevoz težkih tovorov.
Podobno lahko osnovni razred postane matično podjetje več izpeljanih podrazredov, ki jih je mogoče opredeliti tako, da bodo svoje značilnosti delili z dodajanjem lastnih. Dedovanje je podobno funkciji, ki poenostavlja proceduralni program. Če je več delov kode skoraj enako, lahko skupne elemente izvlečete v enega postopka. Trije razdelki aplikacij lahko pokličejo funkcijo za izvajanje skupnih akcij, lahko pa tudi izdelajo lastne operacije. Podobno bazni razred vsebuje podatke, ki so skupni izpeljani skupini. Kot funkcije, dedovanje zmanjša program OO in pojasnjuje medsebojno povezovanje njegovih elementov.
Ponovna uporaba
Po ustvarjanju in razhroščevanju razreda se lahko prenesejo na druge programerje za ponovno uporabo v lastnih aplikacijah. To je podobno knjižnici funkcij, ki jih je mogoče vključiti v različne aplikacije.
V OOP je dediščina razširitev zamisli o večkratni uporabi. Iz obstoječega razreda, ne da bi ga spremenili, lahko ustvarite novo z dodatkom drugih funkcij. Enostavnost ponovne uporabe obstoječe programske opreme je pomembna prednost OOP-a. Menimo, da to zagotavlja povečanje donosa od začetne naložbe.
Ustvarjanje novih podatkovnih tipov
Objekti so primerni za ustvarjanje novih vrst podatkov. Recimo, da program uporablja dvodimenzionalne vrednosti (na primer, koordinate ali zemljepisno širino in dolžino), in obstaja želja po izražanju dejanj z njimi aritmetičnih operacij:
position1 = položaj + izvor,
kjer položaj1, položaj in izvorni pari neodvisnih numeričnih vrednosti. Ustvarjanje razreda, ki vključuje te dve vrednosti in deklariranje spremenljivk s svojimi predmeti, ustvarja novo vrsto podatkov.
Polimorfizem, preobremenitev
Operaterji = (enak) in + (plus), uporabljeni v zgoraj navedeni aritmetični poziciji, ne delujejo enako kot pri vgrajenih vrstah, na primer int. Položaj objektov itd. Niso vnaprej določeni, ampak so programirani. Kako ti upravljavci vedo, kako ravnati z njimi? Odgovor je, da lahko zanje določite nove vedenjske vzorce. Te operacije bodo člane funkcije razreda Position.
Uporaba operaterjev ali postopkov, odvisno od tega, kaj delajo, se imenuje polimorfizem. Če obstoječi operater, kot je + ali =, lahko deluje z novo vrsto podatkov, se pravi, da je preobremenjen. Preobremenitev v OOP je vrsta polimorfizma. To je njena pomembna značilnost.
Knjiga o OOP-u "Object-Oriented Programming for Dummies" bo omogočila vsakomur podrobneje seznaniti s to temo.
- Objektno programiranje
- Modularno programiranje
- Strukturirano programiranje
- Java programski jezik
- Linearni algoritmi - shema, struktura in izračun
- Kako se naučiti programiranja iz nič v priljubljenih programskih jezikih
- Informatika. Osnove algoritmizacije in programiranja
- Kakšna je encapsulation? Inkapsulacija v programiranju
- Kaj je Pascal. Programiranje v Pascalu
- Najbolj priljubljeni programski jeziki. Programski jeziki za začetnike
- Ocena programskih jezikov 2016
- PHP konstrukt: ustvarjanje primerkov razredov
- Spremenljivka v programiranju je v celoti označena s tem, kaj?
- Vzporedno programiranje: opis, tehnologija, naloge in prednosti
- Algoritem rekurziven: opis, analiza, funkcije in primeri
- Kaj je proceduralno programiranje?
- Dinamično programiranje, osnovna načela
- Nelinearno programiranje je ena od sestavin matematičnega programiranja
- Linearno programiranje
- Standardne C ++ knjižnice
- Razvrščanje programskih jezikov po ravneh