Objektno usmerjeno programiranje (PLO): polimorfizem

Programiranje je proces razvoja rešitev za "žive", dinamične naloge v obliki toge strukture kode, podatkov, funkcij in algoritmov. Postopek oblikovanja stroge sintakse z negotovo semantiko. Resnična naloga je dobro znani problem v smislu algoritemizacije: za doseganje želene rešitve je treba nalogo postaviti v natančne sintaktične konstrukcije.

PLO je dvakrat poskušal "razbiti" ta dolgoletni koncept programiranja, vendar so "okovi" klasičnega stila kodiranja podatkov in algoritmov še vedno močni.

Raven in kvalifikacija

Računalniški primer se je začel z izračuni, vendar hitrost, s katero se pospeševanje gibanja na področju obdelave informacij povečuje, še ni dovolj velika, da bi klasično programiranje postalo nemogoče in prenehalo obstajati.


Objektivno in dejstvo, da nosilec projekta ne vztraja, stranka pa ne potrebuje prave rešitve resničnih težav. Obe strani sta navajeni, da se omejujeta na razpoložljiva orodja in navade. Oblike polimorfizma OOP-a, zamisel o enkapsulaciji kode in dedovanje lastnosti (metod) ležijo na področju programiranja, ne pa tudi na področju problema, ki ga je treba rešiti. Prikazni primer je knjižnica PHPOffice /PHPWord. Če ga želite uporabiti kvalifikacijo razvijalca, morate ustvariti svoj sistem objektov, vendar sedanji ravni kupca (zahteve kupcev) - trivialna sestava, ki se programer prekriva z njegovim razvojem (sicer ne izpolnjujejo zahtev). Stanje, kot je ta:
BV primeru uporabe knjižnice je treba problem oblikovanja dokumentov, na primer diplome ali disertacije, oblikovati v skladu s standardom. Stranka je predstavila svoje zahteve, programer pa je šel na svoj način še dlje.


Popolna analiza dokumenta, njegova zbirka v pravem formatu, delo s tabelami katere koli stopnje gnezdenja, združevanja in ločevanja celic, tiskanje v katero koli smer itd.

Polimorfizem in OOP Boljša definicija za polimorfizem ni razmišljanje o tem, kako se zanašati na zgodovino razvoja ideje objektno usmerjenega programiranja, ki je tako priljubljena danes, tako pogosto uporabljena, ampak v svojem bistvu neizvedena do danes. Vsak avtor ima svoj koncept začetka in narave OOP-a. Za vsakega pozornega bralca je ta koncept zanesljiv in objektiven. Vse do danes pa kot brezpogojni aksiom sprejemamo le tri položaje:
  • enkapsulacijo;
  • polimorfizem;
  • dedovanje.
  • Nekateri dodajajo več: abstrakcija, in predvsem to, in pravzaprav glavna točka, se uporablja kot osnova za opisovanje narave OOP-a.
    Zato so stališča PLO polimorfna: opisujejo eno, konstruirana drugače ali, nasprotno, opisujejo drugačno, vendar temeljijo na štirih enakih položajih. Demokratični izvor ni tipičen za področje informacijske tehnologije, vendar je treba spoštovati: kombinacija in sožitje mnogih idej o isti stvari je pravi polimorfizem v akciji.

    Popularne definicije polimorfizma

    OOP - naslednja stopnja razvoja informacijske tehnologije. Ste redke trdijo, vendar so njegovi temeljni aksiomi in določbe tako različni v smislu semantike, ki ne zaslužijo pozornosti zunaj njihove celote.
  • Polimorfizem pri programiranju je zmožnost zagotavljanja istega vmesnika za različne osnovne oblike (vrste podatkov).
  • Polimorfizem - možnost, da imajo predmeti drugačno izvedbo.
  • Polimorfizem je zmožnost funkcije
  • Klasike (od ustvarjalca C /C ++): "en vmesnik - veliko izvedb."
  • Parametrični polimorfizem pomeni
  • Polimorfizem - položaj teorije tipov
  • Abstrakcija je nemogoča brez inkapsulacije in dedovanja, saj je nemogoč polimorfizem brez dedovanja
  • . in isto: vendar oblika izražanja misli, bistva in pomena - ni podobna. Toda nekaj je skupnega.

    Bistvo: razvijalec - stranka

    Klasična razvoj programske opreme vključuje prisotnost programerja in naloge (odjemalec, stranka). Programer pregleda nalogo, jo formalizira in naredi kodo, ki vodi do izvršitve. Stranka zanika vse predlagane ali le del tega, kar kaže na pomanjkljivosti, in programer ponovno opravlja svoje delo. Tak cikel procesa reševanja problema kaže, da obstajajo očitno dva povsem različna entiteta:
  • računalnik ne more rešiti samega problema;
  • zahteva program, da lahko računalnik »razume« in »reši problem«.
  • Naloga - področje pristojnosti kupca, program je algoritem za "prilagajanje" naloge računalniku - kompetenca programerja. Vlogaslednji je, da računalnik prilagodi zahtevam naloge, kar ni potrebno! Objektno usmerjeno programiranje predlaga abstrakcijo. Obstajajo predmeti - to je področje stranke; je realizacija objektov - to je polje programerja. Med stranko in razvijalcem ni "tehnološke" povezave. Ideja je kardinalna, do sedaj se ne izvaja, vendar nekaj že deluje stabilno.

    Okna, gumbi in drugi predmeti

    Zgodovina Air Art tehnologije, revije Object, Turbo Vision, Graph Vision je zgodovina. Malo se jih spomni teh implementacij OOP-jev, so skoraj neuporabljene in pozabljene, vendar je vmesnik za Windows poznan na milijone uporabnikov, predmeti v PHP, javascriptu in drugih jezikih internetnih tehnologij pa uporabljajo na stotine tisoč razvijalcev kod, milijoni obiskovalcev ve o njih. spletnih virov
    Verjetno je to edini pravilen način za razvoj OOP-a: inkapsulacija, dedovanje, polimorfizem za razvijalca, ne pa tudi za uporabnika. Značilno je, da je bil ta položaj osrednjega pomena pri oblikovanju vizualnega oblikovanja (vmesnika) programskih aplikacij Windows, kot sta Turbo Vision in Graph Vision.
    Koncept, ki temelji na izdelkih tipa Air Art Technology in Object Magazine, se je bistveno razlikoval. Tukaj je bil abstraktni objekt prvi prednik informacijske strukture, ki je na abstraktni ravni vseboval kodo obdelave informacij. Predmeti oken, gumbi, elementi vizualizacije so bili sekundarni. V prvi različici (Windows in itd.) Se je paradigma PLO: inkapsulacija, dedovanje, polimorfizem odražala na abstraktni ravniprednik, in izvajanje kode je bilo oblikovano na ravni vsakega posameznega potomca v veji dedovanja v skladu z želeno strukturo in vsebino. V drugi različici (Air Art Technology in Object Magazine) je pomembna raven abstraktnega objekta. Kaj se bo zgodilo z določenim potomcem - ni bistvo, glavna stvar je, da njegova veja dedovanja izpolnjuje zahteve vseh staršev do korenine.

    Objekt in sistem objektov: algoritem

    Idealen objektno usmerjen koncept lahko manipulira samo s sistemi objektov in objektov. V sodobnih programskih jezikih pod objektom (razredom) običajno razumemo opis predmeta in primer objekta, in, da uporabimo opis predmeta, jeziki omogočajo programerju delo s statičnimi objekti, medtem ko dinamični objekt - To je primer opisa z edinstveno vsebino in strukturo, vendar uporablja iste lastnosti opisa (opisa).
    Sedanja praksa se nanaša na koncept predmeta na instrument, to je na programski jezik, vmesnik, dostop do podatkovne baze, omrežno povezavo, vendar nič ne kaže na interese stranke glede rešljivega problema. To je idealno za preprosto OOP: polimorfizem omogoča, da naredimo zlasti različne elemente oblikovanja, vendar jih upravljamo z isto kodo. Vendar tu ne gre za predmete naloge, ki se sploh ne obravnava kot objekt objektno usmerjene analize. Programerji so OOP uporabili kot sredstvo za izboljšanje kakovosti in uspešnosti njihovega dela, vendar niso odstopili pred stranko. Osnovni koncepti OOP - kapsulacije,dedovanje, polimorfizem - ostala na področju razvoja, in ne presaditi v obseg naloge.

    Objekt in sistem objektov: naloge in rešitve

    Računalnik - programer - naloga. Srednja povezava je odveč. V idealnem primeru naj bi obstajale le dve relativno odvisni konturi: (računalnik - programer) - naloga. To pomeni, da ima uporabnik, stranka ali obiskovalec orodje za reševanje svojega problema. Kot uveljavljeno orodje kupcu ni mar.
    V idealnem primeru gre le za računalnik, ki lahko razume, kaj stranka želi, in dela, kar hoče. Kako bi to izgledalo: lokalni program ali spletna stran, dostopna prek brskalnika, poseben program porazdeljene obdelave informacij, informacijski sistem za stranko - ni pomembno. Bistveno je, da med nalogo in računalnikom ni nepotrebnih povezav, ampak najprej razumljivo in rešiti drugo. Da bi dosegli ta cilj, morata biti računalnik in stranka povezana z enim sistemom objektov, vsebino, strukturo in vsebino vsakega predmeta pa določi kupec, metode in lastnosti objektov, ki jih izvaja programer. Idealno, ko delo stranke, da ustvari objektni sistem, ki ga potrebuje, in delo na izvedbi metod in lastnosti teh objektov se razporedi v času. Bolj ko se bo zagovarjala implementacija sistemskih objektov (programer) iz vsebinske vsebine (stranke), boljši bo proces. Stranka in programer ne preprečujeta interakcije v procesu reševanja problema, vendar je pomembno, da imamo jasno ločitev semantike. Vsakdo mora opraviti svoje podjetje, programerju ni treba obvladovati območjaStranka ne bi smela razumeti kodeksa, še posebej pa se stranki ne bi smeli medsebojno svetovati, ker se ne ukvarjata.

    Tradicionalno in objektno programiranje

    Osnovni postulati PLO: enkapsulacija, dedovanje, polimorfizem v obliki, v kateri postanejo običajni in povpraševalni, vodijo k opaznim izboljšavam kakovosti in zanesljivosti kode, bistveno pospešujejo delo programerja in imajo veliko drugih pozitivne lastnosti.
    Vendar pa so tudi na poti: klasično programiranje ni slabše od njihovih položajev, veliko objektno usmerjenih idej pa se izvaja s klasično kodo. Vendar pa so ideje OOP-a in rekurzije vodile k ustreznemu vplivu na sintakso klasičnih sintaktičnih operaterjev, na logiko konstruiranja pravilne kode, ki nima nič skupnega s objektno usmerjenim slogom pisanja in razmišljanja. Seznami in čakalne vrste so se spremenili, pojavil se je koncept prvega in zadnjega elementa polja, pojavili so se cikli "za vsakega" in zgledne različice poimenovanja, uporabe in izvrševanja so postale še bolj priljubljene kot prej. Pravzaprav je dejstvo, da so spremenljivke izgubile svojo "jasno" osebo (tip spremenljivke se lahko spreminja, kot je potrebno, vendar opis spremenljivke sploh ni potreben), pravi, da je klasika že dolgo objektno usmerjena in priznava osnovna načela PLO: enkapsulacija , dedovanje, polimorfizem kot ideje, ki imajo pomemben pomen.

    Podlaga: predmet ali sistem

    Odvzem, kot glavni konceptualni položaj PLO, ne glede na to, kje se nahaja območje odgovornosti (izvajanje)predmet - na ravni prvega abstraktnega predmeta ali na ravni določenega potomca - pušča odprto vprašanje: kje začeti, iz predmeta ali sistema?
    Če je temelj dati predmet, potem ne bo nikoli postal sistem, ker bo sistem v njem, in postal bo togo popolnoma konkreten začetek. Tukaj, z abstrakcijo, obstajajo problemi: prvotni objekt natančno zajema glavni problem v rešitvi, torej ni več prenosljiv na drugo nalogo. Če je osnova za postavitev sistema objektov, potem sistem sistemov. Težko si je predstavljati v povezavi z določeno nalogo in od katere začeti razvoj - prav tako je težko razumeti. Na splošno, polimorfizem OOP-a s svojimi razlikami v bistvu, obliko implementacije, številom dejanskih parametrov v funkcijah daje idejo o sistemu, ki je na začetku, kot:
  • o možnostih reševanja problemov (npr. Meni);
  • o začetnih pogojih (uporaba naloge v različnih pogojih, podatki);
  • ​​
  • o načinih delovanja (preskušanje, konfiguracija, delo). Toda to in podobno mu ne daje nobenega razloga, da bi postavil osnovo za reševanje problema sistema objektov. Pogosto je dovolj, da definiramo en sam predmet.

    Zgodovina procesa reševanja problema

    Najpomembnejša načela PLO: polimorfizem in abstrakcija - določata prednostni objekt kot sistem objektov. V sporu, ki bi moral biti prej, piščanca ali jajce, zmaga tukaj postane kadilec. Nobenega dvoma ni, da bi se vse moralo začeti z abstraktnim predmetom, ne pa s sistemom objektov. Todače upoštevamo faktor časa in ga uporabimo na ravni vsakega predmeta, začenši s prvim abstraktom, je protislovna misel postaviti rešitev in predmet na začetku, sistem pa je edini inteligenten. Če klasični koncept programiranja med reševanjem problema spremeni podatke, vsebina baze podatkov, spremembe datotek itd., Koncept polimorfizma PLO, enkapsulacija in časovni faktor spremenijo vsebino, strukturo in lastnosti objektnih objektov, ki jih je treba rešiti. Programer v OOP-ju se najmanj zanima za koncept datoteke, baze podatkov, algoritem - to je še posebej, tukaj programer misli predmete, vendar objekti obstajajo v času in spremembe v smeri doseganja želene.
    Tako se na začetku objekt nahaja kot sistem objektov in logika tega sistema - časovna premica: začetek naloge, oblikovanje prvega objekta, vnos ali zbiranje podatkov, oblikovanje naslednjega objekta, vendar nič ne preprečuje prvega. nadaljevati z naslednjo odločitvijo. Vsaka raven objektov deluje kot samostojen sistem objektov, to je, da je en objekt, v kontekstu sproženega procesa in časovne vrednosti pa je sistem objektov na časovni lestvici. Za popolno izvajanje PLO, polimorfizem, dedovanje in časovni faktor v agregatu zagotavljajo dinamiko prvega, to je, da se objekt ne more le spreminjati skozi čas, temveč tudi ustvarjati objekte, ki jih ni razvil razvijalec, ki jih ustvari izvedba naloge v procesu, ki jo je zasnoval naročnik.

    Real polimorfizem OOP, primer

    Zapletenost nalog, ki so močni OOP, ni primerljiva s tisto, ki je na voljo klasičnemu črkovanjuprogramov. Seveda je reševanje vsakega problema vedno na voljo na običajen način, toda vprašanje, koliko bo to stalo časa in truda, pogosto naredi rezultat neuporaben. Pred kratkim je bila razvita knjižnica PHPOffice /PHPWord, vendar je za uporabo svojih zmogljivosti skoraj vedno potrebno ustvariti lasten sistem objektov. Na primer, preprosta datoteka * .docx:
    je zip arhiv mnogih Office Open XML datotek in map (OpenXML, OOXML). Vsaka datoteka je napisana v oznakah XML in pri dodajanju, spreminjanju in brisanju črk, besed, tabel, seznamov in še več. Elementi vsebine datotek se začnejo predstavljati zaporedje oznak, ki ne vsebujejo vedno polnih elementov, pogosto je en element napisan z nizom oznak. Če datoteko pošljete kot zaporedje oznak, se prikaže zanimiva slika:
    Ni težko videti, da je prvi in ​​edini odstavek dokumenta predstavljen z množico oznak. Kar se tiče tabele in tabele, ki je v njej vgrajena, potem obseg opisa vseh elementov ni dovzeten za zaznavo, temveč je dostopen z objektno orientirano aplikacijo. Dejansko je slika zelena - to je testna oznaka, rumena - parametri in vrsta oznake, bež - vsebina. Ustvarjeni objekti so osredotočeni na obdelavo. Osebi so dostopne samo operacije odpiranja dokumentne datoteke, njenega oblikovanja in snemanja. Rešitev je preprosta in praktična, vendar je izvajanje bolj osredotočeno na računalnik kot na osebo, razlogi za velikost izvedljive funkcionalne in kompleksne povezave med objekti.

    Stanje območja lastništva zemljišč

    Razvoj sistemov upravljanja območij, tehnologijkonfiguracijo in upravljanje strežnikov, izkušnje pri razvoju dinamičnih spletnih mest, ki so omogočili dostop do objektno usmerjenega programiranja vsem. Problem je v tem, kako spremeniti svoje razmišljanje in se navaditi na razmišljanje na ravni objekta in ne v kontekstu dosledno izvršljive kode. Običajno prehod od klasičnega programiranja na objektno usmerjen traja dva do tri mesece, vendar se stroški preveč povrnejo. Potencial sodobnih programskih jezikov, predvsem PHP in javascript, bo zadovoljil najzahtevnejšega razvijalca. Sodobni OOP - polimorfizem, dedovanje in sposobnost oblikovanja lastnosti objektov - priročna in praktična jezikovna sintaksa in pomožna orodja zagotavljajo udobje pri delu in učinkovitost kod.

    Perspektive ideje o predmetu

    Kako dolgo bo klasično programiranje in kako bo razvilo PLO - težko je reči. Očitno razvijalci orodij ne načrtujejo upoštevanja konteksta potrošnika (uporabnika, kupca). Priročnik OOP - polimorfizem, imitacija, enkapsulacija in abstrakcija - so usmerjeni k razvijalcem. Sodobni informacijski sistemi in spletni viri si prizadevajo odražati resnično realnost, zagotavljajo delovanje realnih objektov in ustvarjajo okolje za njihovo delovanje, tako preprosto, da bo potrošniku dostopno daleč od programiranja, popolnoma potopljeno v njegovo področje pristojnosti.
  • Sorodne publikacije