Objektno orijentirano programiranje (PLO): polimorfizam

Programiranje je proces razvoja rješenja za "žive", dinamičke zadatke u obliku krutih struktura koda, podataka, funkcija i algoritama. Postupak formiranja stroge sintakse s neizvjesnom semantikom. Pravi zadatak je poznati veliki problem u smislu algoritma: da bi se postiglo željeno rješenje, zadatak se mora postaviti u precizne sintaktičke konstrukcije.

PLO je dva puta pokušao "razbiti" ovaj dugogodišnji koncept programiranja, ali su "okovi" klasičnog stila kodiranja podataka i algoritma još uvijek jaki.

Razina i kvalifikacija

Računalo je počelo s izračunima, ali brzina kojom se ubrzavanje kretanja u području obrade informacija povećava, još nije dovoljno velika da klasično programiranje postane nemoguće i prestane postojati.


Objektivno i činjenica da investitor ne inzistira, a kupac ne zahtijeva stvarno rješenje stvarnih problema. Obje strane navikle su se ograničiti na dostupne alate i navike. Oblici polimorfizma OOP-a, ideja enkapsulacije koda i nasljeđivanja svojstava (metoda) leže u području programiranja, ali ne iu području problema koji treba riješiti. Ilustrativan primjer je PHPOffice /PHPWord knjižnica. Da biste ga koristili zahtijeva kvalifikaciju developer, morate stvoriti svoj vlastiti sustav objekata, ali trenutnu razinu kupca (zahtjevi kupaca) - trivijalan sastav, koji programer preklapa s njegovim razvojem (inače ne zadovoljavaju zahtjeve). Situacija poput ove:
BZa ovaj slučaj korištenja knjižnice, problem oblikovanja dokumenata, primjerice diplome ili disertacije, treba biti dizajniran u skladu sa standardom. Kupac je predstavio svoje zahtjeve, a programer je išao svojim putem mnogo dalje.


Kompletna analiza dokumenta, njegova zbirka u pravom formatu, rad s tablicama bilo koje razine gniježđenja, spajanja i razdvajanja ćelija, tiskanje u bilo kojem smjeru, itd.

Polimorfizam i OOP

Bolju definiciju polimorfizma nije misliti na to kako se osloniti na povijest razvoja ideje objektno orijentiranog programiranja, toliko popularnog danas, tako uobičajeno korištenog, ali neostvarenog u svojoj biti do danas. Svaki autor ima svoju koncepciju početka i prirode OOP-a. Za svakog pažljivog čitatelja ovaj je koncept pouzdan i objektivan. Ali do danas svi prihvaćamo kao bezuvjetni aksiom samo tri pozicije:
  • enkapsulaciju;
  • polimorfizam;
  • nasljeđivanje.
  • Neki dodaju više: apstrakcija, a najviše od svega toga, i zapravo glavna točka, koristi se kao osnova za opisivanje prirode OOP-a.
    Prema tome, stavovi PLO-a su polimorfni: oni opisuju jedno, konstruirani različito ili, obrnuto, opisuju drugačiji, ali se temelje na četiri identična položaja. Demokratsko podrijetlo nije tipično za područje informacijske tehnologije, ali treba odati priznanje: kombinacija i suživot mnogih ideja o istoj stvari je stvarni polimorfizam u djelovanju. Popularne definicije polimorfizma
    OOP - sljedeća faza u razvoju informacijske tehnologije. sTo je nekoliko tvrdnji, ali su njegovi osnovni aksiomi i odredbe toliko različiti u smislu semantike koja ne zaslužuje pozornost izvan njihove cjelovitosti.
  • Polimorfizam u programiranju je sposobnost pružanja istog sučelja za različite osnovne oblike (tipovi podataka).
  • Polimorfizam - mogućnost da objekti imaju različitu implementaciju.
  • Polimorfizam je sposobnost funkcije
  • Klasici (od kreatora C /C ++): "jedno sučelje - mnoge implementacije."
  • Parametarski polimorfizam znači
  • Polimorfizam - položaj teorije tipova
  • Apstrakcija je nemoguća bez inkapsulacije i nasljeđivanja, kao nemoguć polimorfizam bez nasljeđivanja
  • Može se pretpostaviti da se sve ovo odnosi na jedan i isto: ali oblik izražavanja misli, suštine i značenja - nisu slični. Ali postoji nešto zajedničko.

    Suština: programer - kupac

    Klasični razvoj softvera uključuje prisutnost programera i zadatka (klijenta, klijenta). Programer ispituje zadatak, formalizira ga i čini kod koji vodi do izvršenja. Kupac poriče sve predložene ili samo njegove dijelove, ukazujući na nedostatke, a programer opet radi svoj posao. Takav ciklus procesa rješavanja problema sugerira da postoje jasno dva potpuno različita entiteta:
  • računalo ne može sam riješiti problem;
  • zahtijeva program tako da računalo može "razumjeti" i "riješiti problem".
  • Zadatak - sfera nadležnosti kupca, program je algoritam za "prilagođavanje" zadatka sposobnostima računala - kompetentnost programera. ulogapotonji je "prilagoditi" računalo zahtjevima zadatka, a to je nepotrebno! Objektno orijentirano programiranje sugerira apstrakciju. Postoje objekti - to je sfera kupca; je realizacija objekata - to je polje programera. Ne postoji "tehnološka" veza između klijenta i razvojnog inženjera. Ideja je kardinalna, do sada nije provedena, ali nešto već radi stabilno.

    Prozori, gumbi i drugi objekti

    Povijest Air Art tehnologije, magazina za objekte, Turbo Vision, Graph Vision je povijest. Nekolicina pamti ove implementacije OOP-a, oni su gotovo neiskorišteni i zaboravljeni, ali Windows sučelje je poznato milijunima korisnika, a objekti u PHP-u, javascriptu i drugim jezicima Internet tehnologija koriste stotine tisuća programera koda, milijuni posjetitelja znaju za njih. web-resursi
    Vjerojatno je to jedini ispravan način razvoja OOP-a: enkapsulacija, nasljeđivanje, polimorfizam za developera, ali ne i za korisnika. Karakteristično je da je ta pozicija bila središnja u dizajnu vizualnog dizajna (sučelja) Windows softverskih aplikacija kao što su Turbo Vision i Graph Vision.
    Koncept, koji se temelji na proizvodima tipa Air Art Technology i Object Magazine, znatno se razlikovao. Ovdje je apstraktni objekt bio prvi predak informacijske strukture, sažeti na apstraktnoj razini kod obrade informacija. Predmeti prozora, gumbi, elementi vizualizacije ovdje su bili sekundarni. U prvoj verziji (Windows i sl.) Paradigma PLO-a: enkapsulacija, nasljeđivanje, polimorfizam odražavala se na apstraktnoj razinipredak, a provedba koda formirana je na razini svakog pojedinog potomka u grani nasljeđivanja u skladu sa željenom strukturom i sadržajem. U drugoj verziji (Air Art Technology i Object Magazine) važna je razina apstraktnog objekta. Što će se dogoditi s određenim potomkom - nije suština, glavna stvar je da njezina grana nasljeđivanja zadovoljava zahtjeve svih roditelja sve do korijena apstrakcije.

    Objekt i sustav objekata: algoritam

    Idealni objektno-orijentirani koncept može manipulirati samo objektnim i objektnim sustavima. U suvremenim programskim jezicima pod objektom (klasom) obično razumiju opis objekta i instancu objekta, a da bi se koristio opis objekta, jezici omogućuju programeru da radi sa statičkim objektima, dok dinamički objekt - Ovo je instanca opisa, sa svojim jedinstvenim sadržajem i strukturom, ali koristi ista svojstva opisa (opisa).
    Sadašnja praksa odnosi se na pojam objekta na instrument, tj. Na programski jezik, sučelje, pristup bazi podataka, mrežnu vezu, ali ne postoji ništa što bi ukazivalo na interese kupca u rješavanju problema. To je idealno za jednostavno OOP: polimorfizam omogućuje da se, osobito, razni elementi dizajna, ali ih upravljati s istim kodom. Ali ovdje se ne radi o objektima zadatka, što se uopće ne smatra objektom objektno orijentirane analize. Programeri su iskoristili OOP kao sredstvo za poboljšanje kvalitete i uspješnosti rada, ali nisu ustupili mjesto klijentu. Osnovni koncepti OOP-a - enkapsulacija,nasljeđivanje, polimorfizam - ostao u području razvoja, a ne transplantiran u opseg zadatka.

    Objekt i sustav objekata: zadaci i rješenja

    Računalo - programer - zadatak. Srednja veza je suvišna. U idealnom slučaju trebalo bi postojati samo dvije relativno zavisne konture: (računalo - programer) - zadatak. To jest, korisnik, kupac ili posjetitelj ima alat za rješavanje svog problema. Kao primijenjeni alat, kupcu nije stalo.
    U idealnom slučaju, to je samo računalo koje može razumjeti što kupac želi, i učiniti ono što želi. Kako bi to izgledalo: lokalni program ili web stranica dostupna kroz preglednik, poseban program za distribuiranu obradu informacija, informacijski sustav za kupca - nije važno. Bitno je da između zadatka i računala nema nepotrebnih veza, ali prvo razumljivo i rješavanje drugog. Da bi se postigao ovaj cilj, računalo i kupac moraju biti povezani jednim sustavom objekata, a sadržaj, strukturu i sadržaj svakog objekta određuje korisnik, te metode i svojstva objekata koje programer implementira. Idealno kada rad klijenta za kreiranje objektnog sustava koji mu je potreban i rad na implementaciji metoda i svojstava tih objekata raspoređeni su u vremenu. Daljnja implementacija objekata sustava (programer) iz svog sadržaja sadržaja (kupca) će se braniti, bolji proces. Ništa ne sprečava kupca i programera u interakciji u procesu rješavanja problema, ali važno je imati jasnu podjelu semantike. Svatko mora obaviti vlastiti posao, programer nije dužan ovladati tim područjemprimjena zadatka, a kupac ne bi trebao razumjeti kod i, posebno, stranke ne bi trebale međusobno savjetovati u tome što se ne tiču.

    Tradicionalno i objektno programiranje

    Osnovni postulati PLO-a: enkapsulacija, nasljeđivanje, polimorfizam u obliku u kojem oni postaju uobičajeni i traženi, dovode do zamjetnog poboljšanja kvalitete i pouzdanosti koda, značajno ubrzavaju rad programera i imaju mnogo drugih pozitivne kvalitete.
    Ali oni su također u pokretu: klasično programiranje nije niže od njihovih pozicija, a mnoge objektno orijentirane ideje implementiraju klasični kod. Međutim, ideje OOP-a i rekurzije dovele su do odgovarajućeg utjecaja na sintaksu klasičnih sintaktičkih operatora, na logiku konstruiranja regularnog koda koji nema nikakve veze s objektno orijentiranim stilom pisanja i razmišljanja. Popisi i redovi su se promijenili, pojavio se koncept prvog i posljednjeg elementa niza, postojali su ciklusi "za svakog", a primjerne varijante imenovanja, korištenja i izvršavanja postale su još popularnije nego prije. Zapravo, sama činjenica da su varijable izgubile svoju "jasnu" osobu (tip varijable može varirati prema potrebi, ali opis varijable uopće nije potreban), kaže da je klasik, zapravo, dugo bio objektno orijentiran i prepoznao je temeljna načela PLO-a: enkapsulacija , nasljeđivanje, polimorfizam kao ideje koje imaju značajno značenje.

    Osnova: objekt ili sustav

    Apstrakcija, kao glavni konceptualni položaj PLO-a, bez obzira gdje se područje odgovornosti nalazi (provedba)objekt - na razini prvog apstraktnog objekta ili na razini određenog potomka - ostavlja otvoreno pitanje: kamo početi, od objekta ili sustava?
    Ako je temelj staviti predmet, onda nikada neće postati sustav, jer će sustav biti u njemu, i on će postati strogo potpuno konkretan početak. Ovdje, s apstrakcijom, postoje problemi: izvorni objekt točno obuhvaća glavni problem u rješenju, to jest, više nije prenosiv na drugi zadatak. Ako je osnova stavljanja sustava objekata, onda sustav sustava. Teško je zamisliti u odnosu na određeni zadatak, a iz kojeg započeti razvoj - također je teško razumjeti. Općenito, polimorfizam OOP-a s njegovim razlikama u suštini, oblikom implementacije, brojem stvarnih parametara u funkcijama daje ideju o sustavu koji se nalazi na početku, kao:
  • o mogućnostima rješavanja problema (npr. Izbornik);
  • o početnim uvjetima (primjena zadatka u različitim uvjetima, podaci);
  • ​​
  • o načinima rada (ispitivanje, konfiguracija, rad).
  • Ali ovo i slično ne daje mu nikakav razlog da postavi temelje za rješavanje problema sustava objekata. Često je dovoljno definirati samo jedan objekt.

    Povijest procesa rješavanja problema

    Najvažnija načela PLO-a: polimorfizam i apstrakcija - određuju prioritetni objekt kao sustav objekata. U sporu koji bi trebao biti prije, kokoš ili jaje, pobjeda ovdje dobiva pušača. Nema sumnje da sve treba početi sa apstraktnim objektom, ali ne iz sustava objekata. aliako uzmemo u obzir faktor vremena i primijenimo ga na razini svakog objekta, počevši od prvog apstrakta, onda je kontradiktorna misao staviti rješenje i objekt na početku, a sustav je jedini inteligentan. Ako klasični koncept programiranja tijekom rješavanja problema promijeni podatke, sadržaj baze podataka, datoteke promjena, itd., Koncept PLO polimorfizma, enkapsulaciju i vremenski faktor mijenjaju sadržaj, strukturu i svojstva objektnih objekata sustava koje treba riješiti. Programer u OOP-u najmanje zanima pojam datoteke, baze podataka, algoritma - to je osobito, ovdje programer misli objekte, ali objekti postoje u vremenu i promjene u tijeku postizanja željenog.
    Tako se na početku objekt nalazi kao sustav objekata i logika tog sustava - vremenska linija: pokretanje zadatka, formiranje prvog objekta, unos ili prikupljanje podataka, formiranje sljedećeg objekta, ali ništa ne sprječava prvo pokušati nastaviti s sljedećom odlukom. Svaka razina objekata djeluje kao neovisni sustav objekata, to jest, to je jedan objekt, ali u kontekstu pokrenutog procesa i vremenske vrijednosti je sustav objekata na vremenskoj skali. Za punu provedbu PLO-a, polimorfizma, nasljeđivanja i vremenskog faktora u agregatu osiguravamo dinamiku prvog, to jest, objekt se ne može samo mijenjati tijekom vremena, već također generirati objekte koje nije osigurao programer, generiran provedbom zadatka u procesu, kojeg je osmislio klijent.

    Stvarni polimorfizam OOP-a, primjer

    Složenost zadataka koji su jaki OOP nije usporediv s onim dostupnim klasičnom pravopisuprograme. Naravno, rješavanje bilo kojeg problema je uvijek dostupno na uobičajeni način, ali pitanje koliko će to koštati vremena i truda često čini rezultat beskorisnim. Ne tako davno razvijena je PHPOffice /PHPWord knjižnica, ali kako bi se iskoristile njezine mogućnosti, gotovo uvijek je potrebno stvoriti vlastiti sustav objekata. Na primjer, jednostavna * .docx datoteka:
    je zip arhiva mnogih Office Open XML datoteka i mapa (OpenXML, OOXML). Svaka je datoteka napisana u XML oznakama, a prilikom dodavanja, mijenjanja i brisanja slova, riječi, tablica, popisa i još mnogo toga. Elementi sadržaja datoteka počinju predstavljati slijed oznaka koje ne sadrže uvijek pune elemente, često jedan element je napisan skupom oznaka. Ako datoteku pošaljete kao niz oznaka, pojavit će se zanimljiva slika:
    Lako je vidjeti da je prvi i jedini paragraf dokumenta predstavljen mnoštvom oznaka. Što se tiče tablice i tablice ugrađene u nju, volumen opisa svih elemenata nije osjetljiv na percepciju, već je dostupan objektno orijentiranom aplikacijom. U stvari, slika je zelena - to je testna oznaka, žuta - parametri i vrsta oznake, bež - sadržaj. Stvoreni objekti fokusirani su na strojnu obradu. Osobi su dostupne samo operacije otvaranja datoteke dokumenta, njezinog formatiranja i snimanja. Rješenje je jednostavno i praktično, no implementacija je više usmjerena na računalo nego na osobu, razloge za veličinu izvršne funkcionalne i složene međusobne povezanosti objekata.

    Stanje OOP-a

    Razvoj sustava upravljanja gradilištima, tehnologijamakonfiguriranje i upravljanje poslužitelja, iskustvo u razvoju dinamičkih web stranica ne objektno-orijentirano programiranje dostupna svima. Problem je u tome da promijeni svoje mišljenje i naviknuti misliti na razini predmeta, ali ne u kontekstu uzastopnim izvršni kod. Tipično, prijelaz iz klasičnog programiranja za objektno-orijentirani traje dva do tri mjeseca, ali troškovi vraća se s kamatama. Potencijal modernih programskih jezika, posebno PHP i JavaScript, zadovoljit će developer. Moderna OOP - polimorfizam, nasljedstvo i mogućnost svojstava formiranja predmeta - zgodan i praktičan, sintaksu kao i pomoćnih alata pružaju udobnost i učinkovitost kod.

    Outlook objekt ideje

    Koliko će trajati klasičnu programiranje i kako razviti PLO - teško je reći. Očigledno, programeri alata ne planiraju uzeti u obzir kontekst potrošača (korisniku). Alati OOP - polimorfizam, nasljedstvo, ovijanje i apstrakcija - vođeni developer. Moderni informacijski sustavi i web resursi obično odražavaju stvarnost, kako bi se osiguralo funkcioniranje stvarnih objekata i stvoriti okruženje za njihov rad, tako jednostavna da će biti dostupan potrošaču, daleko od programiranja, potpuno uronjen u svoje nadležnosti.

    Povezane publikacije