Objektno orijentirani pristup programiranju: koncept, primjena i razvoj

Prvi programski jezici bili su imperativni jezici ili strojne upute (kodovi). Sastojali su se od binarnog koda koji se razlikovao ovisno o stroju. Skup mogućih naredbi za takve "jezike" niske razine bio je mali, budući da je svaka strojna naredba izvršila određenu radnju (dodavanje, kopiranje riječi stroja u registar, pomicanje na sljedeći odjeljak koda). Naravno, za praktičnost, programeri su razvili niz analognih pisama za ove timove strojeva, a ovaj način komuniciranja s strojom "željezo" naziva se asembler.

Asembler

Jezik asemblera je jezik niskog stupnja. Njegova implementacija i značajke variraju od stroja do stroja, od procesora do procesora, tj. Ovisno o platformi. Međutim, suština montaže na svakom stroju je jedna: naredbe asemblera izravno odgovaraju sličnim naredbama stroja ili njihovih sekvenci. Složenost u proučavanju programiranja na asembleru je da je programer prisiljen proučavati dodjelu jezičnih smjernica pojedinačno za svaki stroj, što povećava ulazni prag kada se procesor mijenja.


Najpoznatija implementacija asemblera:
  • Borland Turbo Assembler (TASM).
  • Microsoftov makro asembler (MASM).
  • Watcomov asembler (WASM).
  • A86.
  • Jezici na visokoj razini

    Uz razvoj procesora, postojala je potreba za svestranijim i široko korištenim alatima za interakciju s računalom. Vremenom su strojni kodovi postali vrlo dugi i nezgodnirazumijevanja, pa je odlučeno da se upravlja timovima, intuitivnim ljudima, čita i piše kod. Prvi jezik visoke razine za računalo, koristeći takav pristup, postao je Fortran. Naredbe strojeva su postale čitljive: ovdje se po prvi puta pojavljuju OPEN, CLOSE, PRINT, IF operator i IF THEN-ELSE.
    Nadalje, treba napomenuti da je Fortran nakon odlaska bušenih kartica u smeće povijesti počeo podržavati strukturno programiranje.

    Strukturno programiranje

    Šezdesetih - ranih 1970-ih počinje razvoj sljedeće paradigme programiranja - strukturno programiranje, što je još jedan korak prema objektno orijentiranom pristupu dizajnu. Nakon rada Edgara Dyckstra "O opasnostima operatora goto" u vrijeme razvijatelji dolaze do shvaćanja da se rad bilo kojeg programa može opisati koristeći samo tri kontrolne strukture:


  • slijed;
  • grananje;
  • ciklus.
  • Operator goto je od tada prepoznat kao suvišan. To je operater koji vam omogućuje da idete na bilo koji blok programa. A za početnike se ponekad čini da ne postoji ništa jednostavnije od korištenja operatora goto u određenim područjima koda, kako ne bi izmislili sljedeće grane i petlje. No, u stvari, korištenje ovog operatera prije ili kasnije dovodi do činjenice da je program pretvara u "špageti kod". Takav kod se ne može održavati, bezbolno mijenjati, i još gore, teško je uočiti druge programere koji će zamijeniti autora koda. To je posebno opasno u poslovnom razvoju, gdje su dizajniranivelike baze podataka na tisućama redaka koda. Fluidnost je uvijek i teško je nositi se s lošim kodom, pogotovo za programera koji dolazi u tvrtku.

    Jezik programiranja C

    Rasteg strukturnog programiranja neraskidivo je povezan s programskim jezikom C. Taj je jezik pisan na jeziku asemblera Dennisa Ritchiea i Kena Thompsona i postao je izvorni jezik za razvoj UNIX operativnog sustava. Postao je temelj mnogih modernih operativnih sustava, kao što su GNU /Linux, FreeBSD, MacOS, Posix i mnogi drugi.
    S obzirom na činjenicu da je dizajn jezika C blizak strojnim naredbama, proširio se uglavnom u različitim aplikacijskim programima za mnoštvo uređaja, od grafičkih kartica i operacijskih sustava do raketa i superračunala. Sintaksa je zauvijek postala osnova mnogih modernih programskih jezika (C ++, C #, Java, Objective-C).

    Objektno orijentirano programiranje (OOP)

    Programi su i dalje postajali sve kompliciraniji, a umjesto imperativne paradigme dolazi do razumijevanja potrebe za objektno orijentiranim pristupom informacijskoj tehnologiji. Umjesto uobičajenog rada s računalom pojavljuju se grafičke aplikacije konzole. Računalo sada nije visoko specijalizirani uređaj za znanstvene i vojne izračune, već instrument čije se mogućnosti protežu od automatizacije do komunikacije s prijateljima. Glavna strukturna jedinica pri razvoju objektno orijentiranog pristupa je najavljena klasa. Klasa je apstraktna vrsta podataka koju kreira programer. To je shema ili ugovor koji opisuje polja i metode objekata koji će bitikreirana prema tipovima ove klase. Na primjer, osoba, automobil, odjel je apstrakcija, pa se može opisati kao klasa. Ivan Ivanovič, bijeli "Škoda" s brojevima nn123 operativnog odjela - to su konkretni predstavnici ovih apstrakcija, to jest, govorimo o objektno orijentiranom pristupu programiranju koji su objekti ovih klasa. Zadatak programera je opisati apstraktne i konkretne objekte stvarnog svijeta na jeziku OOP-a. Opis klase implementiran je u opisu polja i metoda.

    Polja

    Polja su varijable, tj. Vrijednosti koje karakteriziraju rad ove klase. Na primjer, ako napišemo klasu Stroj za računalnu igru, za nju možemo definirati sljedeća polja:

    klasa Car
    {
    string brand = "Hunday" Solaris ";
    string color = "Yellow";
    dvostruka brzina = 0;
    /* ostatak programskog koda * /
    }

    Encapsulation

    Polja mogu promijeniti svoje značenje u tijeku programa, ako ga je osigurao programer.Ako autor ne želi da polja budu dostupna izvan klase, a neki drugi program (korisnik) može promijeniti svoje vrijednosti, on "oblaže podatke, tj. čini ih nedostupnima koristeći ključne riječi privatne, zaštićena. Yaksch Na primjer, sve klase u razredu možete učiniti javnim:

    klasa Car
    {
    javna marka niza,
    javna boja niza,
    javna dvostruka brzina,
    *
    ostatak programskog koda
    *
    }

    U ovom slučaju pristup ova polja neće biti ograničena. U sučelju možete slučajno ili namjerno promijeniti važne podatke u poljima koja su tonastaviti raditi ispravno utjecati na cijeli program

    & lt; script Async = „//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

    & lt; skripta & gt; (adsbygoogle = window.adsbygoogle || []). push ({});
    klasa MainClass
    {
    javna static void Main ()
    {
    Car Automobil = new Car ();
    car.colour = "red";
    /* Ostatak aplikacijskog koda * /
    }
    }

    , kako bi se spriječilo slučajno promjene podataka, razvijen ih enkapsulira. U slučaju strojeva u boji, umjesto da napiše javno privatno. Tada je promjena boje je izravno nemoguće.

    Postupci

    , postupak - alat koji omogućuje rad s margine klase ili s nekim drugim podacima. Kao i bilo funkcija u proceduralnim programskim jezicima, oni uzeti podatke i može vratiti rezultat izračuna ili ne da se vrate (npr prikaza nešto na konzoli). Na primjer:

    , klasa Car
    {
    javna niz marke = "Hunday" Solaris "
    , javna niz color =" Yellow „,
    , javna dvostruka brzina = 0;

    /* Ovdje su rješenja «Drive», koji se prenosi logičku vrijednost whatIsTrafficLight (vrijednosti samo lažne - crveno svjetlo ili istina - zeleno svjetlo, moguće je da se vozimo) * /
    public void pogon (bool whatIsTrafficLight )
    {
    ako je (whatIsTrafficLight == istina)
    {
    brzine = brzina + 40,
    }
    drugi
    {
    brzine = 0,
    }
    }

    }

    Kao rezultat, primjenom postupka pogon se promijeni brzina klase


    "uređaj". tipa skripta = " tekst /javascript "& gt;
    var blockSettings = {blockId" RA-70350-45 "renderTo" yandex_rtb_R-A-70.350 do 45”, asinkroni: ! 0},
    , ako je (document.cookie.indexOf ("abmatch =") & gt; = 0) = 70,35 tisuća blockSettings.statId,
    Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings)} ), e = b.getElementsByTagName ("skripta") , d = b.createElement ("skripta"), d.type = "text /javascript", d.src = "//an.yandex.ru/system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ovo, ovaj.dokument," yandexContextAsyncCallbacks ");

    Polimorfizam

    Drugi "stup" razvoja objektno orijentiranog pristupa je polimorfizam. Bjorn Stroustrup, tvorac jezika C ++, formulirao je definiciju polimorfizma na sljedeći način: "Jedno sučelje - mnoge implementacije." Ukratko, polimorfizam je sposobnost stvaranja apstraktne klase koja opisuje cjelokupni dizajn strukture, a iz nje su već kreirane izvedbene klase koje implementiraju mehanizme koji nedostaju. Primjerice, pri stvaranju lika u računalnoj igri, sa stajališta objektno orijentiranog pristupa, logično je prvo primijeniti apstraktnu klasu Osobe, a iz nje se već stvaraju posebne klase: Strijelac, Iscjelitelj, Ratnik i tako dalje.

    Ili primjer s automobilom. Ako radimo s jednim strojem, s nekoliko polja i metoda, nije potrebno da ručno mijenjamo nekoliko vrijednosti u kodu. Ali koliko takvih strojeva može biti? Ili, na primjer, korisnici na društvenoj mreži? Svatko ima ime, prezime, bračni status, fotoalbum, veliki broj vrijednosti, veze na druge stranice, druge korisnike i tako dalje. A ako se programeri društvenih mreža odluče na redizajn, a neke korisničke postavke mogu biti promijenjene ili uklonjene, onda će biti mnogo posla s ovim pristupom. Rješava ovaj problemski objektno orijentirani pristup. Nastava se ne stvara za svaki pojedini objekt, nego iz apstraktne klase, a iz nje se u početkustvoreni su nasljednici. Kao i kapsuliranje, polimorfizam je drugo najvažnije pravilo OOP-a.

    Nasljeđivanje

    Nasljeđivanje je drugo pravilo kada se koristi objektno-orijentirani pristup. Ona se sastoji u sposobnosti klase nasljednika da koristi značajke roditeljske klase. Na primjer, ako želimo imati motor u našoj floti, onda nije potrebno pisati ista svojstva za novu klasu. Umjesto toga, možete reći da je motocikl nasljednik klase iz automobila. Tada postaje moguće koristiti slična polja i metode stroja u klasi motocikla, na primjer, marka, boja, brzina. U kodu nasljeđivanja naznačeno je kako slijedi:

    klasa Motocycle: Car
    {
    /* ostatak programskog koda * /
    }


    Polja i metode automobila klase-roditelj su dostupni za uporabu u klasi-nasljednici motocikla. Ukratko, nasljeđivanje je mehanizam za ponovno korištenje koda, a namijenjen je prikladnom i logično kompetentnom proširenju programa. Isto tako, nasljeđivanje pomaže u pridržavanju načela DRY (Nemojte se ponavljati). Prema ovom principu, kod ne bi trebao imati repetitivne stranice, jer stvara nepotrebno opterećenje prilikom kompajliranja i izvršavanja programa. Ako se u kodu pojavljuju ponavljajuća područja, potrebno ju je optimizirati - ponoviti ih zasebnim metodama i po potrebi prouzročiti; primijeniti nasljeđivanje na logički slične objekte koji imaju identična polja i metode.

    Sažetak

    Pojam objektno orijentiranog pristupa programiranju postoji već više od četrdeset godina, a sada je to najtraženiji način razvoja (osim zaspecifična područja, na primjer, razvoj softvera za kontrolore, gdje dominira jezik C). Najvažnije paradigme PLO-a su:
  • Nasljeđivanje.
  • Polimorfizam.
  • Inkapsulacija.
  • Nakon što je pažljivo istražio ove moćne alate, moderni developer moći će pisati brz, podržan, vizualno ugodan i modificirani kôd koji će dugi niz godina podržavati poslovne potrebe, donijeti radost igračima, rješavati socijalne probleme ljudi ili pružati komunikaciju u svim krajevima svijeta.

    Povezane publikacije