Objektno orijentirano programiranje (OOP): polimorfizam
Programiranje je proces razvoja rješenja za "žive", dinamičke zadatke u obliku krutih struktura kodova, podataka, funkcija i algoritama. Postupak za formiranje stroge sintakse iz neizvjesne semantike. Stvarni zadaci poznati su veliki problem u smislu
sadržaj
- Razina i kvalifikacija
- Polimorfizam i oop
- Popularne definicije polimorfizma
- Bit: razvojni kupac
- Windows, gumbi i drugi objekti
- Objekt i sustav objekata: algoritam
- Objekt i sustav objekata: zadatak i rješenje
- Tradicionalno i objektno programiranje
- Što je u srži: objekt ili sustav
- Povijest procesa rješavanja problema
- Pravi oop polimorfizam, primjer
- Država oop regije
- Perspektive ciljane ideje
OOP je dvaput pokušao "razbiti" ovaj drevni programski koncept, ali "čarape" klasičnog stila kodiranja podataka i algoritama još uvijek su jaki.
Razina i kvalifikacija
Računarstva počela s izračunima, ali brzina kojom se povećava ubrzanje kretanja u području obrade podataka, još uvijek nije dovoljno velika da klasične programiranje postalo nemoguće, a prestala postojati.
Objektivno također, ono što programer ne inzistira, a kupac ne zahtijeva stvarno rješenje stvarnih problema. Obje strane koriste se za ograničavanje na dostupne alate i uobičajene mogućnosti.
Obrasci OOP polimorfizma, ideja kodekapsuliranja kodova i nasljeđivanja svojstava (metoda) leže u području programiranja, ali ne u opsegu problema koji se rješava.
Dobar primjer je knjižnica PHPOffice / PHPWord. Za korištenje je potrebna kvalifikacija programer, morate stvoriti svoj vlastiti sustav objekata, ali trenutna razina kupca (zahtjeve kupca) - to je trivijalno pjesma koja je programer nadjačava svoj razvoj (inače ispunjavaju zahtjevi nisu). Situacija je ovako:
U tom je slučaju korištenje knjižnice zadatak oblikovanja dokumenata, na primjer, diploma ili rad mora biti standardiziran. Klijent je predstavio svoje zahtjeve, a programer je otišao svojim putem mnogo dalje.
Vi obaviti cjelovitu analizu dokumenta, njegov sklop u pravilnom formatu, ispunjen radom sa stolovima na bilo kojoj razini gniježđenja, pripajanja i podjele stanica koje ispisuju u bilo kojem smjeru, i tako dalje.
Polimorfizam i OOP
Najbolja definicija za polimorfizam nije shvatiti kako se upućivati na povijest razvoja ideje objektno orijentiranog programiranja, toliko popularnog sada, tako često korištene, ali neostvaren u suštini i dalje.
Svaki autor ima svoj vlastiti koncept početka i suštine PLO-a. Za svaki pažljiv čitatelj ovaj koncept je ispravan i objektivan. Ali do danas, svatko prihvaća kao bezuvjetni aksiom samo tri mjesta:
- ovijanje;
- polimorfizam;
- nasljedstvo.
Neki dodaju: apstrakciju, a češće ovaj, a zapravo glavna točka, koristi se kao temelj za opisivanje suštine OOP-a.
Dakle, mišljenje PLO polimorfnih: opisuju iste, dizajnirani su na različite načine, ili, naprotiv, opisuje drugačiji, ali na temelju iste četiri pozicije.
Demokratski princip nije svojstveno području informacijske tehnologije, ali treba odati priznanje: kombinacije i suživot više mišljenja za isto - to je pravi polimorfizma u akciji.
Popularne definicije polimorfizma
OOP je sljedeća faza razvoja informacijskih tehnologija. Uz to, vrlo malo ljudi tvrdi, ali osnovni aksiomi i položaje tako su različiti u dijelu semantike da ne zaslužuju pažnju izvan svoje ukupnosti.
- Polimorfizam u programiranju je mogućnost pružanja istog sučelja za različite osnovne oblike (vrste podataka).
- Polimorfizam je sposobnost predmeta da imaju drugačiju implementaciju.
- Polimorfizam je sposobnost funkcije ...
- Classics (iz C / C ++ kreatora): "jedno sučelje - mnoge implementacije".
- Parametrijski polimorfizam znači ...
- Polimorfizam je položaj teorije tipa ...
- Apstrakcija je nemoguća bez inkapsulacije i nasljeđivanja, jer je polimorfizam bez nasljedstva nemoguće ...
Može se složiti da se sve ovo odnosi na istu stvar: oblik manifestacije misli, suštine i sadržaja nije sličan. Ali postoji nešto zajedničko.
Bit: razvojni kupac
Klasično programiranje zahtijeva prisutnost programera i zadataka (klijent, kupac). Programer ispituje problem, formalizira ga i čini kod koji vodi do rješenja. Korisnik negira sve predložene ili samo dio, ističući nedostatke, a programer ponovno obavlja svoj posao.
Takav ciklus procesa rješavanja problema sugerira da su ovdje dva različita entiteta jasno povezana:
- Računalo ne može sama riješiti problem;
- Program je potreban kako bi računalo moglo "razumjeti" i "riješiti" problem.
Zadatak je kompetencija klijenta, program je algoritam za "prilagodbu" zadatka sposobnostima računala - opsegu sposobnosti programera. Uloga potonjeg je da "računalo" prilagodi zahtjevima zadataka, i to je suvišno!
Objektno orijentirana programska ponuda sažetak. Postoje objekti - to je opseg klijenta - je provedba objekata - to je opseg programera. Ne postoji "tehnološka" veza između kupca i razvojnog programera. Ideja je kardinal, a ne do danas, ali nešto već stalno radi.
Windows, gumbi i drugi objekti
Povijest Air Art tehnologije, objekt Magazine, Turbo Vision, Graph Vision - je povijest. Malo ljudi zapamtiti realizaciju PLO, oni ne koriste i zaboravljena, ali prozor Windows sučelje je poznato milijunima korisnika i objekata u PHP sredinama, jаvascript i drugim jezicima Internet tehnologije koriste stotine tisuća kod programera znati o njima milijune posjetitelja na web-resursa.
Vjerojatno je to jedini pravilan način na koji OOP treba razviti: inkapsulaciju, nasljedstvo, polimorfizam za razvojnog programera, ali ne i za korisnika. Obilježje je to da je ta pozicija bila glavna pri razvoju vizualnog dizajna (sučelja) Windows softvera, aplikacijskih programa kao što su Turbo Vision i Graph Vision.
Koncept iza proizvoda Air Art Technology i Object Magazine bio je znatno drukčiji. Ovdje apstraktni objekt bio je prvi predak informacijske strukture, koji je na apstraktnoj razini inkapsulirao kod za obradu informacija. Predmeti prozora, gumbi, vizualni elementi bili su sekundarni.
U prvoj verziji (Windows itd) OOP paradigme: inkapsulacija, nasljedno Polimorfizam određen stupanj sažetak predak i kod primjena nastaje na razini svakog pojedinog dijete nasljednog grana prema željenom strukturom i sadržaj.
U drugoj varijanti (Air Art Technology i Object Magazine), razina apstraktnog objekta je važna. Ono što će se dogoditi s određenim potomkom nije suština, glavna stvar je da njezina grana nasljedstva zadovoljava zahtjeve svih roditelja sve do korijenske apstrakcije.
Objekt i sustav objekata: algoritam
Idealan objektno orijentirani koncept može manipulirati samo objektnim objektima i sustavima.
U suvremenim programskim jezicima u okviru objekta (klase) je općenito razumjeti opis objekta i objekta, primjerice, i za korištenje opis objekta jezici omogućuju programer za rad sa statičnim objektima, dok dinamičan objekt - ovo je kopija Opis, sa svojim jedinstvenim sadržajem i strukturom, ali koristeći iste metode opisa (svojstva).
Trenutni prakse uključuju koncept objekta na instrumentu, odnosno programski jezik, sučelje, pristup veze baze podataka na mreži, ali ne postoji ništa što ukazuje na interesu kupca, na zadatak pri ruci.
Ovo je idealno za jednostavni OOP: polimorfizam omogućava, posebice, različite elemente dizajna, ali ih upravlja istim kodom. No, ovdje se ne postavlja pitanje o predmetima problema koji se uopće ne smatra subjektom za objektno orijentiranu analizu.
Programeri su usvojili PLO kao sredstvo poboljšanja kvalitete i produktivnosti njihovog rada, ali klijentu nisu izgubili pad svojeg teritorija. Osnovni pojmovi OOP - enkapsulacije, nasljedstva, polimorfizma - ostali su u razvojnoj domeni, a nisu transplantirani u opseg problema.
Objekt i sustav objekata: zadatak i rješenje
Računalni programer je zadatak. Srednja je veza suvišna. Idealno bi trebalo postojati samo dvije, relativno ovisne, konture: (računalni programer) - zadatak. To jest, korisnik, korisnik ili posjetitelj ima alat za rješavanje njihovog zadatka. Kako se alat provodi, kupac ne zanima.
U idealnom slučaju to je samo računalo koje može razumjeti što klijent želi, i raditi ono što želi. Kako će izgledati: lokalni program ili web mjesto dostupne putem preglednika, poseban program za distribuiranu obradu informacija, informacijski sustav za kupca - to nije važno.
Bitno je da ne postoji suvišna veza između zadatka i računala, ali prvi je razumljiv i može se riješiti drugi. Da bi se taj cilj postigao, računalo i korisnik moraju biti povezani jednim sustavom objekata, značenje, strukturu i sadržaj svakog objekta određuje kupac, a metode i svojstva objekata provodi programer.
U idealnom slučaju, kada klijentov rad na stvaranju neophodnog sustava objekata i rada na implementaciji metoda i svojstava tih objekata vremenski odvojeni. Dalje osim implementacije sustava objekata (programera) iz njegovog semantičkog sadržaja (kupca), to je bolji proces.
Ništa ne sprečava kupca i programer za interakciju u procesu rješavanja problema, ali važno je jasna podjela semantiku. Svatko mora raditi svoj posao, programer ne mora razvijati opseg problema, a kupac ne razumije kod, i tako više, stranke ne moraju dati svaki drugi savjet da ih se ne tiče.
Tradicionalno i objektno programiranje
Osnovni PLO postulira: enkapsulaciju, nasljeđivanje, polimorfizam u obliku u kojem su navikli i tvrdio, dovesti do značajnog poboljšanja u kvaliteti i pouzdanosti kod znatno ubrzati programiranje posao i imaju puno drugih pozitivnih osobina.
No, to je još uvijek tamo: klasično programiranje nije inferiorno njegovim pozicijama, a mnoge ideje usmjerene na objekt primjenjuju se klasičnim kodom.
Međutim, ideja o PLO i rekurzije dovelo do adekvatnog utjecaj na sintaksu klasične operatera sintakse, logika izgradnje normalan broj, a ne da nikakvu povezanost s objektno orijentirani stil pisanja i razmišljanja.
Popisi i pretvoriti transformirati, pojam prvi i posljednji element polja, bilo je ciklusa „svaki” i imenovanja opcije referenca, korištenje i performanse su postali više popularan nego ikad prije.
Zapravo, činjenica da su varijable izgubili svoje „čisto” lice (tip varijable može se mijenjati po potrebi, te opisati varijablu ne nužno) kaže da su klasika, u stvari, je odavno postao objektno-orijentirani i priznaju temeljne principe OOP: ovijanje , nasljeđivanje, polimorfizam kao ideje značajne važnosti.
Što je u srži: objekt ili sustav
Apstrakcija, kao temeljni konceptualni položaju PLO, bez obzira gdje je područje odgovornosti (implementacije) objekta - na prvi apstraktan predmet ili na razini pojedinog potomka, - ostavlja otvorenim pitanje: kako je sve počelo, s ciljem ili sa sustavom?
Ako se objekt temelji na objektu, ona nikada neće postati sustav, jer će sustav biti unutar njega i postat će krut slika vrlo konkretnog početka. Ovdje, s apstrakcijom, pojavljuju se problemi: početni objekt precizno bilježi glavnu ulogu u problemu koji se riješi, tj. Više se ne prebacuje na drugi zadatak.
Ako se sustav temelji na objektima, dobiva se sustav sustava. Teško je zamisliti u odnosu na određeni zadatak, a gdje je i početak razvoja teško je razumjeti. Općenito, polimorfizam OOP-a sa svojim razlikama u entitetima, oblicima primjene, količine stvarnih parametara u funkcijama ideja o sustavu koji leži na početku, kao što su:
- o mogućnostima rješavanja problema (na primjer, izborniku);
- o početnim uvjetima (primjena problema u različitim uvjetima, podataka);
- o načinu rada (testiranje, ugađanje, rad).
Ali ovo i slično ne daju mu osnove rješavanja problema na sustavu predmeta. Često je dovoljno definirati samo jedan početni objekt.
Povijest procesa rješavanja problema
Najvažnija načela OOP-a: polimorfizam i apstrakcija - određuju prioritet početnog objekta kao sustav objekata. U sporu koji bi trebao biti ranije, piletinu ili jaje, pobjeda odlazi na piletinu.
Nema sumnje da sve treba započeti sa apstraktnim objektom, a ne sa sustavom objekata. No, kada se smatra da je vrijeme faktor i primijeniti ga na razini svakog objekta, počevši od prvog sažetak, zatim kontroverzni ideja da se stavi u početku rješenje i predmet, a sustav je jedino razumno.
Ako je klasični koncept programiranja u toku rješavanja problema mijenja sadržaj podataka iz baze podataka, modificira datoteke, itd, koncept OOP polimorfizam, kućištima i faktor vremena mijenjati sadržaj, strukturu i svojstva objekata u problem sustava koji treba riješiti.
OOP programer najmanje zainteresiran za koncept datoteke, baze podataka, algoritam - određeni programer razmišlja objekata, ali su objekti postoje u vrijeme i promijeniti tijek postizanje željenog.
Dakle, na početku sustava je predmet objekata i logika ovog sustava - vremenska skala: pokretanje problema, formiranje prvog objekta, ulazne ili prikupljanje podataka, nakon formiranja objekta, ali ništa ne sprečava prvi objekt za početak sljedeće odluke.
Svaka razina objekata djeluje kao samostalni objekti sustava, odnosno, to je jedan predmet, ali u kontekstu početka vrijednosti procesnih i vremena - objekt sustava na vremenskoj skali. Za punu provedbu OOP polimorfizam, nasljedstvo i vremenski faktor kombinirati pružiti dinamiku prvo, to jest, ne samo da može mijenjati tijekom vremena, ali i dovesti do objekata koje nisu osigurane od strane developer ostvarene u toku izvršenja zadataka procesa, projicirane kupca.
Pravi OOP polimorfizam, primjer
Složenost zadataka, koje snage PLO-a, nije usporediva s onom koja je dostupna klasičnoj verziji pisanja programa. Naravno, rješavanje bilo kakvih problema uvijek je na raspolaganju na uobičajeni način, ali pitanje koliko će to koštati vrijeme i trud često čini rezultat beskorisnim.
Ne tako davno je razvijena biblioteka PHPOffice / PHPWord, ali da biste mogli koristiti svoje sposobnosti, gotovo uvijek morate stvoriti svoj vlastiti sustav objekata. Na primjer, jednostavna * .docx datoteka:
je zip arhiva mnogih datoteka i mapa u formatu Office Open XML (OpenXML, OOXML). Svaka datoteka je napisan u XML oznake, sa kada dodavanje, mijenjanje i brisanje slova, riječi, tablica, popisa, i tako dalje. Elementi sadržaj datoteka počinje predstavljati slijed oznaka koje nisu uvijek sadrže kompletne elemente, jedan element često se bilježi više oznaka.
Ako ovu datoteku predstavljate kao niz oznaka, dobivate zanimljivu sliku:
Lako je vidjeti da je prvi i jedini stavak dokumenta predstavljen skupom oznaka. Što se tiče tablice i njegovih ugrađenih tablica, obujam opisa svih elemenata nije osjetljiv na percepciju, već je dostupan objektno orijentiranoj aplikaciji.
Zapravo, na slici zelena je testni izlaz oznaka, žuti su parametri i vrsta oznake, bež je sadržaj. Stvoreni objekti orijentirani su na obradu strojeva. Za osobu su dostupne samo operacije otvaranja dokumenta, njegovog oblikovanja i snimanja.
Rješenje je jednostavno i praktično, ali provedba je više usmjereno na računalu nego na osobu, zbog volumena izvršavaju pomoću funkcionalnih i složene odnose među objektima.
Država OOP regije
Razvoj sustava za upravljanje web stranicama, konfiguracija poslužitelja i tehnologije upravljanja, iskustvo u razvoju dinamičkih web stranica učinilo je objektno orijentirano programiranje dostupno svima. Problem je kako promijeniti svoje razmišljanje i naviknuti se na razinu razina objekata, a ne u kontekstu dosljedno izvršne šifre.
Tipično, prijelaz iz klasičnog programa na objektno usmjeren traje dva do tri mjeseca, ali troškovi isplatiti s kamatama. Mogućnost suvremenih programskih jezika, prvenstveno PHP i jаvascript, zadovoljit će najsloženije programere.
Moderna OOP - polimorfizam, nasljedstvo i mogućnost stvaranja svojstava objekata - zgodan i praktičan, jezika sintaksa, i alate za podršku pružaju udobnost u radu i efikasnosti koda.
Perspektive ciljane ideje
Koliko će dugo trajati klasično programiranje i kako će se OOP razviti? Teško je reći. Očigledno, programeri alata ne namjeravaju razmotriti kontekst potrošača (korisnika, kupca).
OOP alati - polimorfizam, nasljedstvo, kapsuliranje i apstrakcija - orijentirani su prema programeru.
Moderni informacijski sustavi i web-based resursa obično odražavaju stvarnost, kako bi se osiguralo funkcioniranje stvarnih objekata i stvoriti okruženje za njih da rade, tako jednostavna da će biti dostupan potrošaču, daleko od programiranja, potpuno uronjen u sferi svoje nadležnosti.
- Objektno orijentirano programiranje
- Strukturirana programiranje
- MySQL je ono što i gdje se primjenjuje?
- Znanstveno istraživanje operacija pomoću matematičkih metoda
- Što je to encapsulation? Inkapsuliranje u programiranju
- jаvascript: typeof - potreba ili nove značajke
- jаvascript: primjeri primjene
- Varijabla u programiranju u potpunosti je obilježena time što?
- Paralelni programiranje: opis, tehnologija, zadaci i prednosti
- Skriptni programski jezici: zadaci, značajke i prednosti
- Upotreba indeksa (jаvascript) prilikom rada s nizovima i nizovima
- Rekurzivni algoritam: opis, analiza, značajke i primjeri
- Što je proceduralno programiranje?
- Struktura informacijskog sustava, podsustava
- Dinamičko programiranje, osnovna načela
- Rješavanje problema programiranja. Ciklički algoritam
- Nelinearno programiranje je jedna od komponenti matematičkog programiranja
- Linearno programiranje
- Matematičko programiranje je pravi način da se donese najbolja odluka
- Standardne C ++ knjižnice
- Sintaksa jаvascript parseInt: primjeri upotrebe