Objektno usmerjeno programiranje (OOP): polimorfizem
Programiranje je proces razvijanja rešitev za "živo", dinamično nalogo v obliki toge strukture kod, podatkov, funkcij in algoritmov. Postopek za oblikovanje stroge sintakse iz negotove semantike. Resnične naloge so znani velik problem v smislu
Vsebina
- Raven in kvalifikacije
- Polimorfizem in oop
- Popularne definicije polimorfizma
- Essence: razvijalec-stranka
- Windows, gumbi in drugi predmeti
- Objekt in sistem objektov: algoritem
- Objekt in sistem predmetov: naloga in rešitev
- Tradicionalno in objektno programiranje
- Kaj je bistvo: predmet ali sistem
- Zgodovina procesa reševanja problemov
- Real oop polimorfizem, primer
- Stanje regije oop
- Perspektive ciljne ideje
OOP je dvakrat poskušal "prekiniti" ta starodavni programski koncept, vendar so "orožja" klasičnega sloga kodiranja podatkov in algoritmov še vedno močni.
Raven in kvalifikacije
Računalništvo se je začelo s preračunavanjem, vendar se hitrost, s katero se pospešuje gibanje na področju obdelave informacij, še vedno ni dovolj velika, da postane klasično programiranje nemogoče in preneha obstajati.
Objektivno tudi, kaj razvijalec ne vztraja in kupec ne potrebuje resnične rešitve resničnih težav. Obe strani se uporabljata za omejitev razpoložljivih orodij in običajnih priložnosti.
Oblike polimorfizma OOP, zamisel o inkapsulaciji kode in dedovanju lastnosti (metod) ležijo v programski domeni, ne pa v obsegu problema, ki se rešuje.
Dober primer je knjižnica PHPOffice / PHPWord. Če ga želite uporabiti, potrebujete kvalifikacijo razvijalca, morate ustvariti lasten sistem predmetov, vendar je trenutna raven kupca (zahteve kupcev) trivialna sestava, ki jo programer preglasi z razvojem (v nasprotnem primeru zahteve ne bodo izpolnjene). Položaj je takšen:
V tem primeru je uporaba knjižnice naloga oblikovanja dokumentov, na primer diploma ali teza mora biti standardizirana. Stranka je predstavila svoje zahteve, programer pa je še precej napredoval.
Dokončal popolno razčlenjevanje dokumenta, ga sestavil v zahtevanem formatu, izvedel delo s tabelami katerekoli stopnje gnezdenja, združevanja in deljenja celic, tiskanja v kateri koli smeri itd.
Polimorfizem in OOP
Najboljša opredelitev za polimorfizem ni ugotoviti, kako se sklicevati na zgodovino razvoja ideje o objektno usmerjenem programiranju, tako priljubljenem zdaj, tako pogosto uporabljenem, ampak nerealiziran v bistvu še vedno.
Vsak avtor ima svoj koncept začetka in bistva PLO. Za vsakega pozornega bralca je ta koncept pravilen in objektiven. Toda do danes vsakdo sprejme kot brezpogojno aksiom le tri položaje:
- inkapsulacija;
- polimorfizem;
- dedovanje.
Nekateri dodajajo: abstrakcija in pogosteje ta in resnična glavna točka se uporablja kot osnova za opis bistva OOP-a.
Mnenja o OOP so torej polimorfna: opisujejo eno stvar, zasnovani so drugače, ali pa nasprotno opisujejo različne stvari, vendar temeljijo na štirih enakih položajih.
Demokratični začetek ni značilen za področje informacijske tehnologije, vendar je treba upoštevati: kombinacija in skupni obstoj številnih mnenj o isti stvari je pravi polimorfizem v akciji.
Popularne definicije polimorfizma
OOP je naslednja stopnja razvoja informacijskih tehnologij. S tem se zelo malo ljudi strinja, vendar so njeni osnovni aksiomi in položaji v delu semantike tako različni, da ne zaslužijo pozornosti zunaj njihove celote.
- Polimorfizem v programiranju je zmožnost zagotavljanja istega vmesnika za različne osnovne oblike (vrste podatkov).
- Polimorfizem je sposobnost objektov, da imajo drugačno izvajanje.
- Polimorfizem je sposobnost funkcije ...
- Classics (iz ustvarjalca C / C ++): "en vmesnik - veliko izvedb".
- Parametrični polimorfizem pomeni ...
- Polimorfizem je položaj tipske teorije ...
- Abstrakcija je nemogoča brez inkapsulacije in dedovanja, saj je polimorfizem brez dedovanja nemogoče ...
Lahko se strinjate, da se vse to nanaša na isto stvar: toda oblika izražanja misli, bistva in vsebine ni podobna. Vendar pa je nekaj skupnega.
Essence: razvijalec-stranka
Klasično programiranje zahteva prisotnost programerja in nalog (odjemalec, stranka). Programator preuči problem, ga formalizira in naredi kodo, ki vodi do rešitve. Stranka zanika vse predlagane ali samo del, opozarja na pomanjkljivosti, in programator ponovno opravlja svoje delo.
Takšen cikel postopka reševanja problema kaže, da sta tu očitno združena dva popolnoma različna subjekta:
- Računalnik sam ne more rešiti problema;
- Program je potreben, da lahko računalnik "razume" in "reši" problem.
Naloga je kompetenca stranke, program je algoritem za "prilagajanje" naloge zmogljivosti računalnika - obseg programerjeve kompetence. Vloga slednjega je "prilagoditi" računalnik zahtevam naloge in to je odveč!
Objektno usmerjeno programiranje ponuja abstraktno. Obstajajo predmeti - to je obseg stranke - je izvajanje predmetov - to je obseg programerja. Med kupcem in razvijalcem ni "tehnološke" povezave. Ideja je kardinalna, še ni realizirana do danes, a nekaj že deluje stalno.
Windows, gumbi in drugi predmeti
Zgodovina Air Art Technology, Object Magazine, Turbo Vision, Graph Vision je zgodovina. Malo ljudi se spomnite realizacijo PLO, se ne uporabljajo, in pozabili, ampak okno Windows vmesnik pozna na milijone uporabnikov, in predmetov v PHP okoljih, jаvascript in drugimi jeziki internetnih tehnologij, ki jih več sto tisoč razvijalcev kode, ki se uporabljajo vedeti o njih milijone obiskovalcev spletnih virov.
Verjetno je to edini pravi način, na katerega naj se razvije OOP: enkapsulacija, dedovanje, polimorfizem za razvijalca, ne pa tudi za uporabnika. Značilno je, da je bil ta položaj glavni pri razvijanju vizualnega dizajna (vmesnika) programske opreme Windows, aplikacijskih programov, kot so Turbo Vision in Graph Vision.
Koncept izdelkov Air Art Technology in Object Magazine je bil bistveno drugačen. Tukaj je bil abstraktni predmet prvi prednik informacijske strukture, ki je na abstraktni ravni zaokrožila kodo za obdelavo informacij. Predmeti oken, gumbov, vizualnih elementov so bili sekundarni.
V prvi različici (Windows itd) OOP paradigmo: enkapsulacija, dedovanje, polimorfizem imenovani izvlečkom raven prednik in oznaka izvajanje tvorjen na nivoju vsake posamezne veje otrok dednega glede na želeno strukturo in vsebino.
V drugi različici (Air Art Technology in Object Magazine) je pomembna raven abstraktnega predmeta. Kaj se bo zgodilo z določenim potomcem, ni bistvo, glavna stvar je, da njena podružnica dediščine izpolnjuje zahteve vseh staršev do korenskega odvzema.
Objekt in sistem objektov: algoritem
Idealni objektno usmerjeni koncept lahko manipulira samo z objektnimi objekti in sistemi.
V sodobnih programskih jezikih se objekt (razred) ponavadi razume kot opis predmeta in primer objekta ter za uporabo opisa predmeta omogočajo programerjem delo s statičnimi predmeti, medtem ko dinamični objekt - to je kopija Opis, s svojo edinstveno vsebino in strukturo, vendar z uporabo istih opisnih metod (lastnosti).
Trenutna praksa se nanaša na koncept objekta do instrumenta, to je na programski jezik, vmesnik, dostop do baze podatkov, povezava preko omrežja, vendar nič ne kaže na interese stranke glede rešitve problema.
To je idealno za preprosto OOP: polimorfizem omogoča zlasti narediti različne elemente oblikovanja, vendar jih upravljati z isto kodo. Toda tu ni nobenega dvoma o predmetih problema, ki se sploh ne obravnavajo kot predmet objektno usmerjene analize.
Programatorji so PLO sprejeli kot sredstvo za izboljšanje kakovosti in produktivnosti svojega dela, vendar pa niso izgubili kapljic svojega ozemlja stranki. Osnovni koncepti OOP - encapsulacije, dedovanja, polimorfizma - so ostali v razvojni domeni in niso bili presajeni v obseg problema.
Objekt in sistem predmetov: naloga in rešitev
Računalniški programer je naloga. Sredinska povezava je odvečna. V idealnem primeru bi morali obstajati samo dve, razmeroma odvisni konturi: (računalniški programer) - naloga. To pomeni, da ima uporabnik, stranka ali obiskovalec orodje za reševanje svoje naloge. Kako se orodje izvaja, kupec ne skrbi.
V idealnem primeru je to samo računalnik, ki lahko razume, kaj želi kupec in naredi, kar hoče. Kako bo izgledalo: lokalni program ali spletno mesto, dostopno prek brskalnika, poseben program za porazdeljeno obdelavo informacij, informacijski sistem za stranko - ni pomembno.
Bistveno je, da med nalogo in računalnikom ni odvečne povezave, prvi pa je razumljiv in ga lahko reši drugi. Da bi dosegli ta cilj, mora biti računalnik in stranka povezana z enim sistemom predmetov, ki ga določi kupec, pomen, strukturo in vsebino vsakega predmeta, programator pa izvaja metode in lastnosti predmetov.
V idealnem primeru, ko je delo kupca pri ustvarjanju potrebnega sistema predmetov in delo pri izvajanju metod in lastnosti teh predmetov ločeno od časa. Še nadalje ločimo izvajanje sistema predmetov (programerja) od njegove semantične vsebine (stranke), tem bolje je proces.
Nič ne preprečuje odjemalcu in programerju, da bi v procesu reševanja problema sodeloval, vendar je pomembno imeti jasno razdelitev semantike. Vsakdo mora narediti svoje delo, je programer ni treba razviti obseg problema, in stranka ne razume kodo, in tako bolj, stranke nimajo, da bi drug drugemu nasvete, ki jih ne zadevajo.
Tradicionalno in objektno programiranje
Osnovni PLO predpostavlja: enkapsulacijo, dedovanje, polimorfizem v obliki, v kateri so se navadile in trdil, privedlo do izrazitega izboljšanja kakovosti in zanesljivosti kode bistveno pospeši programiranje službo in še veliko drugih pozitivnih lastnosti.
Ampak to je še vedno tam: klasično programiranje ni slabše od njegovih položajev, in veliko objektno usmerjenih idej izvaja klasična koda.
Vendar pa je zamisel o PLO in rekurzije pripeljala do ustreznega vpliva na sintakso klasične operaterjev sintakse, logiko normalne kodo, ki nimajo nobene zveze z objektno usmerjen stil pisanja in razmišljanja.
Seznami in čakalne vrste so preoblikovani, pojem prvega in zadnjega elementa polja se je pojavil, cikli so se pojavili "za vsakega", referenčne variante imenovanja, uporabe in izvrševanja pa so postale še bolj priljubljene kot prej.
Pravzaprav, je dejstvo, da so spremenljivke izgubili svoje "jasno" obraz (tip spremenljivke se lahko spremeni, kot je potrebno, in opisujejo spremenljivke pa ni potrebno) pravi, da so klasiki, v resnici, je že zdavnaj postala predmet usmerjen in priznana temeljna načela OOP: Ovijanje , dedovanje, polimorfizem kot ideje velikega pomena.
Kaj je bistvo: predmet ali sistem
Abstrakcija, kot osnovni konceptualni položaj PLO, ne glede na to, če je območje odgovornosti (izvajanja) objekta - na prvi abstraktni objekt ali na ravni posameznega potomcev, - pušča odprto vprašanje: kako se je vse začelo s predmetom ali s sistemom?
Če objekt temelji na objektu, ne bo nikoli postal sistem, saj bo sistem znotraj njega in bo postala togata slika zelo konkretnega začetka. Tu se z abstrakcijo pojavijo problemi: začetni objekt natančno zajame glavno vprašanje, ki se rešuje, to pomeni, da ne prenaša več na drugo nalogo.
Če sistem temelji na predmetih, dobimo sistem sistemov. Težko si je zamisliti v zvezi s specifično nalogo in je tudi težko razumeti, kje je začetek razvoja. Na splošno polimorfizem OOP s svojimi razlikami v subjektih, oblikah izvedbe, količine dejanskih parametrov v funkcijah dajejo uspešnost o sistemu, ki leži na začetku, kot so:
- o možnostih reševanja težave (na primer v meniju);
- o začetnih pogojih (uporaba problema v različnih pogojih, podatki);
- na načine delovanja (testiranje, tuning, delo).
Toda to in podobno mu ne daje nobenih razlogov za rešitev problema na sistemu predmetov. Pogosto je dovolj določiti en sam začetni predmet.
Zgodovina procesa reševanja problemov
Najpomembnejša načela OOP: polimorfizem in abstrakcija - določi prednostno nalogo začetnega predmeta kot sistema predmetov. V sporu, ki bi moral biti prej, piščanca ali jajca, zmaga gre piščanca.
Nobenega dvoma ni, da bi se vse začelo z abstraktnim predmetom in ne s sistemom predmetov. Toda, če upoštevamo časovni faktor in ga uporabimo na ravni vsakega predmeta, začenši s prvim abstraktnim, potem je nasprotujoča ideja, da se rešitev obeh predmetov in sistema na začetku doseže le razumna.
Če klasični koncept programiranja v okviru reševanja problema spremeni vsebino podatkov iz baze podatkov, spremeni datoteke, itd, OOP koncept polimorfizma, vstavljanju in časovni dejavnik spremeni vsebino, strukturo in lastnosti predmetov na problem sistema, da je treba rešiti.
Programator v OOP-u manj zanima koncept datoteke, baze podatkov, algoritma - to je posebna stvar, tukaj programator razmišlja o predmetih, vendar pa predmeti obstajajo v času in se spreminjajo v času doseganja želenega.
Tako je v začetku predmet kot sistem predmetov in logika tega sistema - časovna lestvica: začetek naloge, oblikovanje prvega predmeta, vnašanje ali zbiranje podatkov, oblikovanje naslednjega predmeta, toda nič ne preprečuje prvemu predmetu, da nadaljuje na naslednjo rešitev.
Vsaka raven objektov deluje kot samostojni sistem predmetov, to je en predmet, vendar v kontekstu začetega postopka in časovne vrednosti je sistem predmetov v časovni lestvici. Za popolno izvajanje OOP polimorfizem, dedovanje, in časovni dejavnik združiti zagotoviti dinamiko prvi, to se pravi, ne samo, da lahko sčasoma spremeni, vendar povzroči tudi predmete, ki jih ne izvajajo razvijalec ustvarjata v teku izvajanja nalog postopka, predvidenega kupca.
Real OOP polimorfizem, primer
Kompleksnost nalog, ki jih sile PLO niso primerljive s tistimi, ki so na voljo klasični verziji pisnih programov. Seveda je reševanje kakršnihkoli problemov vedno na voljo na običajen način, vendar pa vprašanje, koliko bo to "stalo" čas in trud, pogosto povzroči neuporabnost.
Nedavno je bila razvita knjižnica PHPOffice / PHPWord, vendar je za uporabo svojih zmožnosti skoraj vedno treba ustvariti svoj lastni sistem predmetov. Na primer, preprosta * .docx datoteka:
je zip-arhiv številnih datotek in map v obliki Office Open XML (OpenXML, OOXML). Vsaka datoteka je napisana v oznake XML, s ko dodajanje, spreminjanje in brisanje črke, besede, tabele, sezname, in tako naprej. Elementi vsebina datotek začne predstavlja zaporedje oznak, ki niso vedno vsebujejo popolne elemente, je en element pogosto zabeležili več oznak.
Če to datoteko predstavljate kot zaporedje oznak, dobite zanimivo sliko:
Preprosto je videti, da prvi in edini odstavek dokumenta predstavlja niz oznak. Kar se tiče mize in vgrajenih tabel, obseg opisa vseh elementov ni dovzeten za zaznavanje, temveč je dostopen objektno usmerjeni aplikaciji.
Dejansko je na sliki zelena preskusna moč oznak, rumena pa so parametri in vrsta oznake, bež je vsebina. Ustvarjeni predmeti so usmerjeni v strojno obdelavo. Za osebo so na voljo le operacije odpiranja datoteke dokumenta, njegovega oblikovanja in snemanja.
Rešitev je preprosta in praktična, vendar je izvajanje več računalniško usmerjenega in ne človeškega zaradi velikega števila opravljenih funkcij in kompleksnih odnosov med predmeti.
Stanje regije OOP
Razvoj sistemov za upravljanje spletnega mesta, tehnologij za konfiguracijo strežnika in upravljanja, izkušnje pri razvoju dinamičnih spletnih strani je postalo objektivno programiranje dostopno vsem. Težava je, kako spremeniti svoje razmišljanje in se navaditi razmišljati na ravni predmetov, namesto v kontekstu dosledno izvedljive kode.
Značilno je, da prehod od klasičnega programiranja do objektno usmerjenega traja dva do tri mesece, vendar se stroški izplačajo z obrestmi. Potencial sodobnih programskih jezikov, predvsem PHP in jаvascript, bo zadovoljil najsodobnejšega razvijalca.
Sodobni OOP - polimorfizem, dedovanje in sposobnost oblikovanja lastnosti predmetov - so priročni in praktični, sintaksa jezikov in pomožnih orodij zagotavljajo udobje pri delu in učinkovitost kode.
Perspektive ciljne ideje
Kako dolgo bo klasično programiranje potekalo in kako se bo razvil OOP? Težko je reči. Očitno razvijalci orodij ne nameravajo upoštevati konteksta potrošnika (uporabnika, stranke).
OOP orodja - polimorfizem, dedovanje, inkapsulacija in abstrakcija - so usmerjeni proti razvijalcu.
Sodobni informacijski sistemi in spletne vire, ponavadi odraža dejanskega stanja, da se zagotovi delovanje realnih predmetov in ustvariti okolje za njihovo delovanje, tako preprosta, da bo na voljo potrošniku, stran od programov, popolnoma potopljen na področju svojih pristojnosti.
- Objektno programiranje
- Strukturirano programiranje
- MySQL je, kaj in kje se uporablja?
- Java programski jezik
- Znanstveno raziskovanje operacij z uporabo matematičnih metod
- Programiranje mikrokontrolerjev za začetnike: enostaven in dostopen
- Kakšna je encapsulation? Inkapsulacija v programiranju
- Razčlenjevanje: kaj je in kako je ustvarjeno
- jаvascript: primere uporabe
- 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
- Struktura informacijskega sistema, podsistemov
- Dinamično programiranje, osnovna načela
- Reševanje problemov načrtovanja. Ciklični algoritem
- Nelinearno programiranje je ena od sestavin matematičnega programiranja
- Linearno programiranje
- Matematično programiranje je pravi način za najboljšo odločitev
- Metoda Homori. Reševanje problemov celotnega programiranja
- Standardne C ++ knjižnice
- Zakaj uporabljati programske jezike na visoki ravni?