Što je OOP? Osnovni principi objektno orijentiranog programiranja
Zašto je objektno orijentirano programiranje preferirano u većini projekata? OOP nudi učinkovit način rješavanja njihove složenosti. Umjesto razmatranja programa kao slijeda izvršnih uputa, predstavlja ga kao skupinu objekata s određenim svojstvima i obavlja određene akcije s njima. To dovodi do stvaranja jasnijih, pouzdanijih i jednostavnijih aplikacija.
sadržaj
Osnovni principi objektno orijentirano programiranje (OOP) Oni su bili formirani jer su ograničenja otkrivena u ranijim pristupima. Među njima - neograničen pristup podacima i veliki broj veza koje nameću ograničenja na uvođenje promjena. Njihova svijest i razlozi važni su za razumijevanje OOP-a u programiranju i koje su njegove prednosti.
Proceduralni jezici
C, Pascal, FORTRAN i slični jezici su proceduralni. To jest, svaki od njihovih operatora naređuje računalu da nešto učini: dobiti podatke, zbrojiti brojeve, podijeliti s šest, prikazati rezultat. Primjena postupovnog jezika je popis uputa. Ako je mali, nije potreban drugi organizacijski princip (često se naziva paradigma). Programer stvara popis uputa i računalo ih izvršava.
Odvajanje u funkcije
Kad aplikacije postanu veće, popis se čini nezamislivim. Malo ljudi može razumjeti više od nekoliko stotina uputa dok se ne grupiraju zajedno. Zbog toga je funkcija postala način na koji aplikacije postaju razumljivije za svoje kreatore. Na nekim jezicima isti se koncept može nazvati podprogramom ili postupkom.
Aplikacija se dijeli na funkcije, od kojih svaka ima jasno definiranu svrhu i sučelje.
Ideja razdvajanja u postupke može se produžiti grupiranjem u veći objekt nazvan modul, ali princip je sličan: grupiranje komponenti koje izvršavaju popise poučavanja.
Razdvajanje funkcija i modula jedan je od temelja strukturnih programiranja, koji je nekoliko desetljeća prije dolaska OOP bio preduvjetna paradigma.
Problemi strukturiranog programiranja
Kako su aplikacije rasle veće, strukturirano programiranje počinju doživjeti poteškoće. Projekti su postali prekomplicirani. Grafovi su se pomaknuli. Uključen je veći broj programera. Složenost je rasla. Troškovi su porasli skočiti, grafikon se preselio dalje i došlo je do kolapsa.
Analiza uzroka tih kvarova otkrila je nedostatke proceduralne paradigme. Bez obzira na to koliko je dobro implementiran strukturirani pristup programiranju, velike aplikacije postaju pretjerano složene.
Koji su uzroci tih problema vezanih uz proceduralne jezike? Prvo, funkcije imaju neograničen pristup globalnim podacima. Drugo, nepovezani postupci i značenja ne modeliraju stvarni svijet.
Ako uzmemo u obzir te probleme u kontekstu programa stjecanja zaliha, jedan od najvažnijih elemenata globalnih podataka jest skup računovodstvenih jedinica. Različite funkcije mogu im pristupiti da unesu novu vrijednost, prikazuju ga, mijenjaju i tako dalje.
Neograničeni pristup
U programu koji je napisan, na primjer, u C, postoje dvije vrste podataka. Lokalne su skrivene unutar funkcije i druge se procedure ne koriste.
Kada dvije ili više funkcija trebaju pristupiti istim podacima, potonji moraju biti globalni. To su, na primjer, informacije o stavkama koje treba uzeti u obzir. Globalnim podacima moguće je pristupiti bilo kojim postupkom.
U velikom programu postoje mnoge funkcije i mnogi globalni elementi. Problem s proceduralnom paradigmom je da to dovodi do još većeg broja mogućih veza između njih.
Takav veliki broj spojeva uzrokuje nekoliko poteškoća. Prvo, to komplicira razumijevanje strukture programa. Drugo, teško je napraviti promjene. Promjena globalne stavke podataka može zahtijevati prilagodbu svih funkcija koje imaju pristup toj datoteci.
Na primjer, u računovodstvenom programu netko odluči da kôd predmeta ne bi smio sadržavati pet znamenki, već s 12. To će zahtijevati promjenu vrsta podataka od kratkog do duge. Sada se funkcije povezane s kodom moraju mijenjati radi rada s novim formatom.
Kada se elementi mijenjaju u velikoj aplikaciji, teško je reći koje procedure imaju pristup njima. No, čak i ako se to pojasni, njihovo mijenjanje može dovesti do pogrešnog rada s drugim globalnim podacima. Sve je povezano sa svime drugom, pa će promjena na jednom mjestu biti u drugom.
Modeliranje u stvarnom svijetu
Drugi i važniji problem proceduralne paradigme je da njegovo lociranje pojedinih podataka i funkcija ne oblikuje stvari u stvarnom svijetu. Ovdje se bavimo s takvim predmetima kao što su ljudi i automobili. Ne izgledaju poput podataka ili funkcija. Složeni stvarni objekti imaju atribute i ponašanje.
atributi
Primjeri atributa (ponekad zvane karakteristike) za ljude su boja očiju i naslov posla, za automobile - snagu i broj vrata. Kao što se ispostavilo, atributi u stvarnom svijetu jednaki su podacima u programu. Imaju specifična značenja, kao što su plava (boja oka) ili četiri (broj vrata).
ponašanje
Ponašanje je ono što stvarni objekti stvaraju kao odgovor na neku vrstu utjecaja. Ako zatražite od vlasti da podignu svoje plaće, odgovor je "da" ili "ne". Ako pritisnete kočnicu, automobil se zaustavlja. Izgovor i zaustavljanje su primjeri ponašanja. Ponašanje je poput postupka: pozvano je učiniti nešto, i to čini. Dakle, podaci i funkcije ne sami po sebi učinkovito modeliraju objekte u stvarnom svijetu.
Obraćajući
Objekt u OOP predstavlja zbirku podataka i funkcija. Samo postupci koji se nazivaju funkcije članova u C + + omogućuju vam da dobijete svoje vrijednosti. Podaci su skriveni i zaštićeni od promjena. Vrijednosti i funkcije inkapsulirane su u jednoj jedinici. Encapsulacija i skrivanje glavni su termini u opisu OO jezika.
Ako želite promijeniti podatke, točno znate koje funkcije komunicirati s njima. Nijedan drugi postupak ne može im pristupiti. To pojednostavljuje pisanje, ispravljanje pogrešaka i održavanje programa.
Aplikacija, u pravilu, sastoji se od nekoliko objekata koji međusobno djeluju, pozivajući članove funkcije.
Danas je najčešće korišten jezik OOP (objektno usmjeren programiranje) C ++ (plus-plus). Java nema neke funkcije, kao što su pokazivači, predlošci i višestruka nasljednost, što ga čini manje snažnim i svestranim od C + +. C # još nije dostigao popularnost C + +.
Treba napomenuti da se takozvane funkcije člana u C + + nazivaju metode na nekim drugim OO jezicima, kao što je Smalltalk. Elementi podataka nazivaju se atributi. Pozivanje metode objekta šalje poruku na nju.
analogija
Predmete možete poslati u odjele tvrtke. U većini organizacija, zaposlenici ne rade jedan dan s kadrovima, sljedeći na plaću, a zatim tjedan dana u maloprodaji. Svaki odjel ima svoje osoblje s jasno postavljenim odgovornostima. Postoje i vlastiti podaci: plaće, prodajni podaci, zapisi o zaposlenicima, itd. Ljudi u odjelima rade s njihovim informacijama. Razdvajanje tvrtke, dakle, olakšava kontrolu nad svojim aktivnostima i održava cjelovitost podataka. Za računovodstvo je odgovoran payslips. Ako trebate znati ukupni iznos plaća koji se plaća u južnoj grani u srpnju, ne morate previdjeti u arhivi. Dovoljno je poslati napomenu osobi koja je zadužena, pričekajte da ta osoba dobije pristup podacima i pošalje odgovor s potrebnim informacijama. To osigurava pridržavanje propisa i odsutnost vanjskih smetnji. Na isti način, objekt u OOP osigurava organizaciju aplikacije.
Treba imati na umu da usmjerenost na objekte ne odnosi se na detalje programa. Većina izjava C + odgovara operaterima postupovnog jezika kao što je C. Doista, funkcije članova u C + + vrlo su slične funkcijama u C. Samo širi kontekst omogućit će utvrditi je li instrukcija proceduralna ili objektno orijentirana.
Objekt u OOP: definiciji
Prilikom razmatranja problema programiranja na OO jeziku, umjesto pitanja o razdvajanju u zasebne funkcije, javlja se problem razdvajanja u objekte. OOP razmišljanje olakšava razvoj aplikacija. To je zbog sličnosti softvera i stvarnih objekata.
Koje stvari postaju objekti u OOP? Ispod su tipične kategorije.
Fizički objekt u OOP je:
- transport u uzorku protoka;
- električni elementi u programima za projektiranje sklopova;
- zemalja u modelu gospodarstva;
- zrakoplova u sustavu kontrole zračnog prometa.
Elementi računalnog okruženja korisnika:
- izbornik;
- prozori;
- grafika (linija, pravokutnik, krug);
- tipkovnice, miša, pisača, diskova.
ljudi:
- radnici;
- studenti;
- korisnici;
- prodavači.
informacije:
- računovodstvena knjiga;
- privatna stvar;
- rječnika,
- tablica zemljopisnih širina i dužina naselja.
Veza između stvarnih objekata i OOP-a rezultat je kombinacije funkcija i podataka: revolucionirali su programiranje. Nema tako bliske korespondencije u proceduralnim jezicima.
klasa
Objekti u OOP su članovi klase. Što to znači? Programski jezici su ugrađeni vrste podataka. vrsta int, to jest, cijeli broj, unaprijed je definiran u C + +. Možete objaviti bilo koji broj varijabli int.
Slično tome, određen je skup objekata iste klase. Ona definira funkcije i podatke koji su uključeni u njezine objekte bez da ih stvara, baš kao što int ne stvara varijable.
Klasa u OOP je opis brojnih sličnih objekata. Prince, Sting i Madonna su pjevači. Ne postoji nijedna osoba s tim imenom, ali ljudi se mogu nazvati ako imaju odgovarajuće karakteristike. OOP objekt je primjer klase.
baština
U životu, razredi su podijeljeni u podrazrede. Na primjer, životinje su podijeljene na vodozemce, sisavce, ptice, insekte itd.
Načelo ove vrste podjele je da svaka podklasa ima zajedničke karakteristike s klasom iz koje se pojavljuje. Svi automobili imaju kotače i motor. To su obilježja vozila. Uz opće značajke, svaka podrazreda ima svoje osobine. Autobusi imaju mnogo mjesta, a kamioni imaju mjesta za nošenje teških tereta.
Slično tome, osnovna klasa može postati roditelj nekoliko izvedenih podklasa koje se mogu definirati tako da će dijeliti svoje karakteristike dodatkom vlastitih. Nasljeđivanje je slično funkciji koja pojednostavljuje proceduralni program. Ako je nekoliko dijelova koda gotovo jednako, možete izvući zajedničke elemente i staviti ih u jedan postupak. Tri dijela aplikacije mogu nazvati funkciju za obavljanje zajedničkih akcija, ali mogu proizvesti i vlastite operacije. Slično tome, baza klase sadrži podatke zajedničke izvedenoj skupini. Poput funkcija, nasljeđivanje smanjuje program OO i pojašnjava međusobno povezivanje njegovih elemenata.
recikliranje
Nakon stvaranja klase i debugiranja, može se proslijediti drugim programerima za ponovnu upotrebu u vlastitim aplikacijama. Ovo je slično knjižnici funkcija koje mogu biti uključene u različite aplikacije.
U OOP, baština je proširenje ideje višestruke upotrebe. Iz postojeće klase, bez mijenjanja, možete stvoriti novi s dodatkom drugih funkcija. Jednostavnost ponovnog korištenja postojećeg softvera važna je prednost OOP-a. Vjeruje se da to omogućuje povećanje prinosa od početne investicije.
Stvaranje novih vrsta podataka
Predmeti su pogodni za stvaranje novih vrsta podataka. Pretpostavimo da program upotrebljava dvodimenzionalne vrijednosti (na primjer, koordinate ili zemljopisne širine i dužine), a postoji želja da izrazi akcije s njima aritmetičke operacije:
položaj1 = pozicija + podrijetlo,
gdje položaj1, položaj i podrijetlo - parova nezavisnih numeričkih vrijednosti. Stvaranje klase koja uključuje ove dvije vrijednosti i deklariranje varijabli sa svojim objektima stvara novu vrstu podataka.
Polimorfizam, preopterećenje
Operatori = (jednaki) i + (plus) koji se koriste u gornjoj pozicijskoj aritmetičkoj ne djeluju na isti način kao kod ugrađenih tipova, kao što je int. Položaji objekata i sl. Nisu unaprijed definirani, ali su programirani. Kako ti operatori znaju kako se njima nositi? Odgovor je da za njih možete definirati nove obrasce ponašanja. Te će operacije biti funkcije članova klase pozicije.
Korištenje operatora ili postupaka, ovisno o tome što rade, zove se polimorfizam. Kada postojeći operater, primjerice + ili =, može raditi s novom vrstom podataka, kažu da je preopterećen. Preopterećenje u OOP je vrsta polimorfizma. To je njegova važna značajka.
Knjiga OOP-a "Objektno orijentirana programiranje za lutke" omogućit će svima da se detaljnije upoznaju s ovom temom.
- Objektno orijentirano programiranje
- Modularno programiranje
- Strukturirana programiranje
- Što je jаvascript? Povijest izgleda i glavne značajke
- Objektno orijentirano programiranje (OOP): polimorfizam
- Informatika. Osnove algoritma i programiranja
- Što je to encapsulation? Inkapsuliranje u programiranju
- DB je ... Vrste i svojstva baze podataka
- Najpopularniji programski jezici. Programski jezici za početnike
- PHP konstrukt: stvaranje primjeraka klase
- Paralelni programiranje: opis, tehnologija, zadaci i prednosti
- Korištenje funkcije eksplodira PHP
- Rekurzivni algoritam: opis, analiza, značajke i primjeri
- Što je proceduralno programiranje?
- Nelinearno programiranje je jedna od komponenti matematičkog programiranja
- Način Homori. Rješavanje problema s programom cijelih brojeva
- Standardne C ++ knjižnice
- Sintaksa jаvascript parseInt: primjeri upotrebe
- Sintaksa jаvascript parseInt: primjeri upotrebe
- Vrste podataka
- Razvrstavanje programskih jezika prema razinama