Objektno usmerjen pristop k programiranju: koncept, uporaba in razvoj

Prvi programski jeziki so bili obvezni jeziki ali strojna navodila (kode). Sestavljali so jih binarna koda, ki se je razlikovala glede na stroj. Niz možnih ukazov za tako nizke "jezike" je bil majhen, saj je vsako strojno navodilo izvedlo določeno dejanje (dodajanje, kopiranje strojne besede v register, prehod na naslednji razdelek kode). Seveda, za udobje, so programerji razvili vrsto pisemskih analogov za te strojne ekipe, in ta način komuniciranja s strojnim "železom" se imenuje asembler.

Asembler

Jezik asemblerja je jezik nižje ravni. Njegovo izvajanje in funkcije se razlikujejo od stroja do stroja, od procesorja do procesorja, kar pomeni, da je odvisno od platforme. Toda sestavina sestavine na katerem koli stroju je ena: ukazi za sestavljanje se neposredno ujemajo s podobnimi ukazi stroja ali njihovih zaporedij. Kompleksnost pri proučevanju programiranja na asemblerju je, da je programer prisiljen individualno preučiti dodeljevanje jezikovnih direktiv za vsak stroj, kar poveča vstopni prag, ko se procesor spremeni.


Najbolj znana izvedba sestavljalca:
  • Borland Turbo Assembler (TASM).
  • Microsoftov makro asembler (MASM).
  • Watcom Assembler (WASM).
  • A86.
  • Jeziki na visoki ravni

    Z razvojem procesorjev je obstajala potreba po bolj vsestranskih in široko uporabljenih orodjih za interakcijo z računalnikom. Sčasoma so strojne kode postale zelo dolge in neprimernerazumevanje, zato je bilo odločeno, da upravljajo ekipe, intuitivni ljudje, bere in piše kodo. Prvi jezik na visoki ravni za računalnik, ki je uporabil takšen pristop, je postal Fortran. Strojni ukazi so postali berljivi: tukaj se prvič prikažejo ODPRTO, ZAPRTO, TISKANJE, IF-upravljavec in IF THEN-ELSE.
    Poleg tega je treba opozoriti, da je Fortran po odhodu udarnih kartic v smeti zgodovine začel podpirati strukturno programiranje.

    Strukturno programiranje

    V šestdesetih - zgodnjih sedemdesetih letih se začenja razvoj naslednje paradigme programiranja - strukturno programiranje, ki je še en korak k objektno usmerjenemu pristopu k oblikovanju. Po delu Edgarja Dyckstra "O nevarnostih operaterja goto" v času, ko razvijalci pridejo do razumevanja, da je delo katerega koli programa mogoče opisati z uporabo samo treh kontrolnih struktur:


  • zaporedje;
  • razvejanost;
  • cikel.
  • Operater goto je bil od takrat priznan kot odvečen. To je operater, ki vam omogoča, da greste v kateri koli blok programa. In za začetnike se včasih zdi, da ni nič enostavnejšega od uporabe operaterja goto na določenih področjih kode, da ne bi izumili naslednjih vej in zank. Toda v resnici, uporaba tega operaterja prej ali slej vodi k dejstvu, da se program spremeni v "špageti kodo". Takšne kode ne moremo vzdrževati, neboleče spreminjati, in še slabše, težko je zaznati druge razvijalce, ki bodo nadomestili avtorja kode. To je še posebej nevarno v poslovnem razvoju, kjer so oblikovanivelike baze podatkov na tisoče vrstic kode. Tekočnost je vedno in težko je obravnavati slabo kodo, še posebej za programerja, ki pride v podjetje.

    Programski jezik C

    Največji čas strukturnega programiranja je neločljivo povezan s programskim jezikom C. Ta jezik je bil napisan v jeziku monterja Dennis Ritchie in Ken Thompson in postal izvorni jezik za razvoj operacijskega sistema UNIX. Postala je osnova za številne sodobne operacijske sisteme, kot so GNU /Linux, FreeBSD, MacOS, Posix in mnogi drugi.
    Ker je zasnova jezika C blizu strojnih ukazov, se je razširila predvsem v različno programsko opremo za množico naprav, od grafičnih kartic in operacijskih sistemov do raket in superračunalnikov. Sintaksa za vedno je postala osnova za mnoge sodobne programske jezike (C ++, C #, Java, Objective-C).

    Objektno usmerjeno programiranje (OOP)

    Programi so še naprej postajali bolj zapleteni in namesto imperativne paradigme prihaja do razumevanja potrebe po objektno usmerjenem pristopu k informacijski tehnologiji. Namesto običajnega dela z računalnikom se z uporabo konzole prikažejo grafične aplikacije. Računalnik zdaj ni visoko specializirana naprava za znanstvene in vojaške izračune, ampak instrument, katerega zmogljivosti segajo od avtomatizacije do komunikacije s prijatelji. Glavna strukturna enota pri razvoju objektno usmerjenega pristopa je najavljen razred. Razred je abstrakten tip podatkov, ki ga je ustvaril programer. To je shema ali pogodba, ki opisuje polja in metode predmetov, ki bodov skladu s tipi tega razreda.
    Na primer, oseba, avto, oddelek je abstrakcija, zato jo lahko opišemo kot razred. Ivan Ivanovič, bela "Škoda" s številkami nn123 operativnega oddelka - to so konkretni predstavniki teh abstrakcij, kar pomeni, da je objektno usmerjen pristop k programiranju predmet teh razredov. Naloga razvijalca je opisati abstraktne in konkretne objekte realnega sveta v jeziku OOP-a. Opis razreda je implementiran v opisu polj in metod.

    Polja

    Polja so spremenljivke, to je vrednosti, ki označujejo delo tega razreda. Na primer, če napišemo strojni razred za računalniško igro, lahko zanj definiramo naslednja polja:

    razred Car
    {
    niz blagovne znamke = "Hunday" Solaris ";
    string color = "Yellow";
    dvojna hitrost = 0;
    /* preostanek programske kode * /
    }

    Encapsulation

    Polja lahko spremenijo svoj pomen Če program ne želi, da so polja na voljo izven razreda, nekateri drugi programi (uporabnik) pa lahko spremenijo svoje vrednosti, jih "zaokroži, kar pomeni, da jih ni mogoče uporabiti s ključnimi besedami zasebno, Če Na primer, lahko objavite vse razrede razreda:

    razred Car
    {

    barva javnega niza,
    javna dvojna hitrost,
    *
    preostali del programske kode
    *
    }

    V tem primeru dostop do ta polja ne bodo omejena. V vmesniku lahko pomotoma ali namerno spremenite pomembne podatke na poljih, ki jih želitev prihodnosti nepravilno vplivajo na delo celotnega programa:

    & lt; skript async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

    & lt; skript & gt; (adsbygoogle = window.adsbygoogle || []). push ({});
    razred Glavni razred
    {
    javna statična praznina Glavna ()
    {
    Avto avtomobil = nov avto ();
    car.colour = "Rdeča";
    /* preostali del programske kode * /
    }
    }

    Da bi se izognili nenamernim spremembam podatkov, jih razvijalec zaokroži. V primeru barve avtomobila, namesto javnega, morate pisati zasebno. Potem sprememba barve ne bo mogoča.

    Metode

    Metode so funkcije, ki vam omogočajo delovanje s polji razreda ali z nekaterimi drugimi podatki. Kot vsaka funkcija v proceduralnih programskih jezikih jemljejo podatke in lahko bodisi vrnejo rezultat izračunov bodisi ne vrnejo (na primer, prikažejo nekaj na konzoli). Na primer:

    razred Car
    {
    javni niz blagovna znamka = "Hunday Solaris";
    javni niz barva = "rumena";
    javna dvojna hitrost = 0;

    /* spodaj opisuje metodo "Drive", ki se posreduje Booleovi spremenljivki whatIsTrafficLight (z vrednostmi samo false - rdeča luč ali true - zelena luč, to je, lahko greš) * /
    javni void Drive (bool whatIsTrafficLight)
    {
    če (whatIsTrafficLight == true)
    {
    hitrost = hitrost + 40;
    }
    drugo
    {
    hitrost = 0;
    }
    }

    }

    Na koncu z uporabo metode Drive spreminjamo hitrost razreda stroja.


    & lt; text /javascript "& gt;
    lahko blockSettings = {blockId:" RA-70350-45 ", renderTo:" yandex_rtb_R-A-70350-45 ", async: ! 0};
    if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings.statId = 70350;
    ! funkcija (a, b, c, d, e) {a [c] = a [c] || [], [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings)} ), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex.ru/system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ta, ta.dokument," yandexContextAsyncCallbacks ");

    Polimorfizem

    Drugi "steber" razvoja objektno usmerjenega pristopa je polimorfizem. Bjorn Stroustrup, ustvarjalec jezika C ++, je opredelil polimorfizem, kot sledi: "En vmesnik - veliko izvedb." Skratka, polimorfizem je zmožnost ustvarjanja abstraktnega razreda, ki opisuje celotno zasnovo strukture, in iz nje so že ustvarjeni izvedeni razredi, ki izvajajo manjkajoče mehanizme. Na primer, ko ustvarjamo lik v računalniški igri, z vidika objektno usmerjenega pristopa, je logično najprej izvesti razred abstraktne osebe in iz njega že ustvariti posebne razrede: Archer, Healer, Warrior in tako naprej.

    Ali pa primer z avtomobilom. Če delujemo z enim strojem, z več področji in metodami, ni nujno, da ročno spreminjamo več vrednosti v kodi. Toda koliko takih strojev lahko? Ali, na primer, uporabniki na družabni mreži? Vsakdo ima ime, priimek, zakonski stan, fotoalbum, veliko število vrednot, povezave do drugih strani, druge uporabnike in tako naprej. In če se bodo razvijalci socialnih omrežij odločili za preoblikovanje in nekatere uporabniške nastavitve lahko spremenite ali odstranite, bo s tem pristopom veliko dela. Rešuje ta problemski objektno usmerjen pristop. Razredi so ustvarjeni ne za vsak posamezen predmet, ampak iz abstraktnega razreda in iz njega na začetkunastanejo dediči. Tako kot enkapsulacija je polimorfizem drugo najpomembnejše pravilo OOP.

    Dedovanje

    Pri uporabi objektno usmerjenega pristopa je dedovanje še eno pravilo. Sestavljen je iz sposobnosti razreda dediča, da uporablja funkcije matičnega razreda. Na primer, če želimo imeti v našem voznem parku motorno kolo, potem ni potrebno pisati enakih lastnosti za nov razred. Namesto tega lahko rečete, da je motorno kolo dedič iz avtomobila. Potem postane možno uporabiti podobna polja in metode stroja v razredu motornega kolesa, na primer znamko, barvo, hitrost. V kodi dedovanja je navedeno:

    razred Motocycle: Car
    {
    /* preostanek programske kode * /
    }


    Polja in metode avtomobila nadrejenega razreda so na voljo za uporabo v motociklu razreda dedičev. Skratka, dedovanje je mehanizem za ponovno uporabo kode in je namenjen priročni in logično kompetentni razširitvi programa. Tudi dedovanje pomaga spoštovati načelo DRY (Ne ponavljaj se). V skladu s tem načelom koda ne sme imeti ponavljajočih se lokacij, saj ustvarja nepotrebno breme pri pripravi in ​​izvajanju programa. Če se v kodi pojavljajo ponavljajoča se področja, jo je treba optimizirati - ponovite jih z ločenimi metodami in jih po potrebi vzbudite; uporabiti dedovanje za logično podobne objekte, ki imajo enaka polja in metode.

    Povzetek

    Pojem objektno usmerjenega pristopa k programiranju obstaja že več kot štirideset let, zdaj pa je najbolj zahtevan način razvoja (razenspecifična področja, na primer razvoj programske opreme za krmilnike, kjer prevladuje jezik C). Najpomembnejše paradigme PLO so:
  • Dedovanje.
  • Polimorfizem.
  • Inkapsulacija.
  • Sodobni razvijalec bo s skrbnim raziskovanjem teh močnih orodij lahko pisal hitro, podprto, vizualno prijetno in spremenjeno kodo, ki bo več let podpirala poslovne potrebe, prinašala veselje igralcem, reševala socialne probleme ljudi ali zagotavljala komunikacijo na vseh koncih sveta.

    Sorodne publikacije