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.

class Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("Minu nimi on "+self. name) def say_goodnight(self): if self. friend is None: print("Head ööd keegi.") else: print("Head ööd "+self. friend. name) # Loo uus inimobjekt nimega stephen nimega "Stephen" stephen = Human("Stephen") # Loo uus inimobjekt nimega joe nimega "Joe" ja stepheniga sõbraks joe = Human("Joe", stephen) stephen. say_name() # Näitab "Minu nimi on Stephen" stephen. say_goodnight() # Näitab "Head ööd kellelegi." joe. say_name() # Näitab "Minu nimi on Joe" joe. say_goodnight() # Näitab "Head ööd Stephenile".

Java

See kood on Java keeles.

Inimese klass

class Human { private String name = "nimetu"; // selle inimese nimi private Human friend = null; // inimese sõber // See meetod loob uue inimese objekti, kui talle antakse nimi ja sõber public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // See meetod loob ka uue Human objekti, kui antakse ainult nimi public Human(String name) { this. name = name; this. friend = null; }      // See meetod loob uue Human-objekti, kui ei ole antud nii nime kui ka sõpra public Human() { this. name = "nimeta"; this. friend = null; } public void sayName() { System. out. println("Minu nimi on " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Head ööd keegi."); } else { System. out. println("Head ööd " + friend. name); }     } }

Meetod ülalpool oleva inimklassiga rääkimiseks

class Main { public static void main(String[] args) { // Loo uus inimobjekt stephen nimega "Stephen" Human stephen = new Human("Stephen"); // Loo uus inimobjekt joe nimega "Joe" ja stepheni sõbraga Human joe = new Human("Joe", stephen); stephen. sayName(); // Näitab "Minu nimi on Stephen" stephen. sayGoodnight(); // Näitab "Head ööd keegi." joe. sayName(); // Näitab "Minu nimi on Joe" joe. sayGoodnight(); // Näitab "Head ööd Stephen" } }

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.

AlegsaOnline.com - 2020 / 2023 - License CC3