Objektorienteeritud programmeerimine
Objektipõhine programmeerimine (OOP) on arvutiprogrammide kirjutamise viis, mis kasutab andmete ja meetodite kujutamiseks "objektide" ideed. Tavaliselt olid arvutiprogrammid lihtsalt arvutile antud juhiste nimekiri, mis käskis arvutil teha teatud asju teatud viisil, mida nimetatakse protseduuriliseks programmeerimiseks. Objektipõhises programmeerimises kasutavad arvutiprogrammid aga objekte, mis räägivad omavahel ja muudavad nendes objektides olevaid andmeid, et töötada nii, nagu kasutaja soovib. Samuti aitab objektorienteeritud programmeerimine arendajat, kuna see võimaldab koodi hõlpsasti taaskasutada programmi teistes osades või isegi teiste inimeste poolt.
Enamik programmeerimiskeeli on segu erinevatest arvutiprogrammide kirjutamise viisidest. Näiteks Python võimaldab arvutiprogramme kirjutada nii objektorienteeritud programmeerimise kui ka protseduurilise programmeerimise keeles. On palju programmeerimiskeeli, mis võimaldavad kirjutada arvutiprogramme OOP-s, Mõned sellised programmeerimiskeeled on näiteks: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python jne.
Omadused
Objektipõhise programmeerimise põhiidee on, et kõik on objekt. Objektid võivad aga olla erinevat tüüpi:
- Muutujad võivad sisaldada erinevat tüüpi teavet (või andmeid), mida programmeerimiskeel toetab. Näitena võib tuua täisarvu andmetüübi ja loetelude andmestruktuuri. Muutujad on idee, mis on juba olemas protseduurilistes programmeerimiskeeltes. Objektipõhises programmeerimises nimetatakse muutujaid peamiselt atribuutideks.
- Protseduurid (tuntud ka kui funktsioonid, meetodid või rutiinid) on nimekiri juhistest, mis ütlevad arvutile, et ta võtab sisendit, teeb arvutusi või muudab andmeid ning tagastab kasutajale väljundi. Protseduurid on samuti idee, mis on juba olemas protseduurilistes programmeerimiskeeltes. Objektipõhises programmeerimises on protseduurid peamiselt tuntud kui meetodid.
- Klassid on erinevate muutujate ja protseduuride kogum. Klassid räägivad tavaliselt omavahel, et teha muudatusi andmetes, et töötada kasutaja soovitud viisil.
Objektid on termin, mida kasutatakse klasside instantside tähistamiseks.
Näited
Allpool toodud näidetes loome klassi nimega Human
. See klass sisaldab atribuute name
(inimese nimi) ja friend
(sõbra nimi). Iga meetod klassis Human
sisaldab käskude nimekirja, mis kasutab nii atribuute name kui
ka friend
.
Python
See kood on Pythonis.
Java
See kood on Java keeles.
Inimese klass
Meetod ülalpool oleva inimklassiga rääkimiseks
Kriitika
Kuigi objektorienteeritud programmeerimine on populaarne, on palju inimesi, kes arvavad, et see on halb ja kritiseerivad seda.
- Luca Cardelli kirjutas artikli pealkirjaga "Bad Engineering Properties of Object-Oriented Languages".
- Richard Stallman kirjutas 1995. aastal: "OOP-i lisamine Emacs'ile ei ole ilmselge edasiminek; ma kasutasin OOP-i, kui töötasin Lisp Machine'i aknasüsteemidega, ja ma ei nõustu tavalise seisukohaga, et see on parem viis programmeerimiseks."
- Potoki jt. uuringust selgub, et OOP ja protseduuriliste lähenemisviiside vahel on väga väike erinevus tootlikkuses.
- Christopher J. Date ütles, et OOP-i võrdlemine teiste asjadega, eriti see, kuidas OOP ja teine asi on omavahel seotud, on keeruline, sest inimesed ei ole OOP-i tähenduse osas ühel meelel.
- Alexander Stepanov pakkus välja, et OOP annab vaatenurga, mis on matemaatiliselt piiratud, ja nimetas seda "peaaegu sama palju pettuseks kui tehisintellekt".
- Paul Graham, edukas internetimüüja ja programmeerija, on väitnud, et OOP eesmärk on toimida karjatamismehhanismina, mis hoiab keskmisi programmeerijaid keskmistes organisatsioonides "liiga palju kahju tegemast". See pidurdab ka kiiremaid, paremaid programmeerijaid, kes teavad, kuidas teha asju võimsamalt ja kompaktsemalt. [1]
Küsimused ja vastused
K: Mis on objektorienteeritud programmeerimine?
V: Objektipõhine programmeerimine on viis kirjutada arvutiprogramme, kasutades "objekte" andmete ja meetodite tähistamiseks.
K: Kuidas erineb objektorienteeritud programmeerimine protseduurilisest programmeerimisest?
V: Protseduurilise programmeerimise puhul on arvutiprogrammid arvutile antud juhiste nimekiri, mis ütleb talle, et ta teeks teatavaid asju teatud viisil. Objektorienteeritud programmeerimisel kasutavad arvutiprogrammid objekte, mis räägivad omavahel, et muuta nendes objektides olevaid andmeid ja töötada kasutaja soovitud viisil.
K: Kuidas on objektorienteeritud programmeerimisest kasu arendajatele?
V: Objektipõhine programmeerimine võimaldab koodi hõlpsasti taaskasutada teistes programmiosades või isegi teiste inimeste poolt.
K: Mille poolest on Pythoni programmeerimiskeel tuntud?
V: Python võimaldab kirjutada arvutiprogramme nii objektorienteeritud kui ka protseduurilises programmeerimises.
K: Kas te oskate tuua näiteid programmeerimiskeelte kohta, mis võimaldavad kirjutada arvutiprogramme objektorienteeritud programmeerimises?
V: Programmeerimiskeeled, mis võimaldavad kirjutada arvutiprogramme objektorienteeritud programmeerimises, on näiteks C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# jne.
K: Mis on objektid objektorienteeritud programmeerimises?
V: Objektid on objektorienteeritud programmeerimises üksused, mis sisaldavad andmeid ja meetodeid.
K: Kuidas objektid objektorienteeritud programmeerimises töötavad?
V: Objektid suhtlevad omavahel, et muuta nendes objektides olevaid andmeid ja töötada kasutaja soovitud viisil.