Objektinis programavimas

Į objektus orientuotas programavimas (OOP) - tai kompiuterių programų rašymo būdas, kai duomenims ir metodams atvaizduoti naudojama "objektų" idėja. Paprastai kompiuterių programos būdavo tik instrukcijų kompiuteriui sąrašas, nurodantis kompiuteriui atlikti tam tikrus veiksmus tam tikru būdu - tai vadinama procedūriniu programavimu. Tačiau į objektus orientuotame programavime kompiuterių programose naudojami objektai, kurie bendrauja tarpusavyje ir keičia tų objektų duomenis, kad veiktų taip, kaip nori naudotojas. Be to, kadangi objektinis programavimas yra sukurtas taip, kaip reikia, jis padeda kūrėjui, nes leidžia kodą lengvai pakartotinai panaudoti kitose programos dalyse ar net kitų žmonių.

Dauguma programavimo kalbų yra įvairių tipų kompiuterių programų rašymo būdų mišinys. Pavyzdžiui, "Python" leidžia rašyti kompiuterių programas ir objektinio programavimo, ir procedūrinio programavimo būdais. Yra daug programavimo kalbų, kurios leidžia rašyti kompiuterių programas OOP būdu, Kai kurios iš šių programavimo kalbų, pvz: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python ir kt.

Funkcijos

Pagrindinė į objektus orientuoto programavimo idėja yra ta, kad viskas yra objektas. Tačiau objektas gali būti įvairių tipų:

  • Kintamuosiuose gali būti saugoma įvairių tipų informacija (arba duomenys), kurią palaiko programavimo kalba. Pavyzdžiui, sveikųjų skaičių duomenų tipas ir sąrašų duomenų struktūra. Kintamieji - tai idėja, kuri jau žinoma iš procedūrinių programavimo kalbų. Objektiniame programavime kintamieji dažniausiai vadinami atributais.
  • Procedūros (dar vadinamos funkcijomis, metodais arba procedūromis) - tai instrukcijų, kuriomis kompiuteriui nurodoma priimti įvestį, atlikti tam tikrus skaičiavimus arba pakeisti duomenis ir grąžinti išvestį naudotojui, sąrašas. Procedūros - tai taip pat idėja, kuri jau žinoma iš procedūrinių programavimo kalbų. Objektiniame programavime procedūros dažniausiai vadinamos metodais.
  • Klasės - tai įvairių kintamųjų ir procedūrų rinkinys. Klasės paprastai bendrauja tarpusavyje ir keičia duomenis, kad jie veiktų taip, kaip nori naudotojas.

Objektai - tai terminas, vartojamas klasių egzemplioriams apibūdinti.

Pavyzdžiai

Toliau pateiktuose pavyzdžiuose sukursime klasę Human. Šią klasę sudaro atributai name (žmogaus vardas) ir friend (draugo vardas). Kiekviename klasės Žmogus metode yra nurodymų sąrašas, kuriame naudojami vardo ir draugo atributai.

Python

Šis kodas parašytas "Python" kalba.

klasė Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("Mano vardas yra "+self. name) def say_goodnight(self): if self. friend is None: print("Labos nakties niekam.") else: print("Labos nakties "+self. friend. Sukurkite naują žmogaus objektą vardu stephen, kurio vardas "Stephen" stephen = Human("Stephen") # Sukurkite naują žmogaus objektą vardu joe, kurio vardas "Joe", o draugas - stephen joe = Human("Joe", stephen) stephen. say_name() # Parodo "Mano vardas Stephen" stephen. say_goodnight() # Parodo "Labos nakties niekam" joe. say_name() # Parodo "Mano vardas Joe" joe. say_goodnight() # Parodo "Labos nakties Stephen

Java

Šis kodas parašytas "Java" kalba.

Žmogaus klasė

class Human { private String name = "unnamed"; // šio žmogaus vardas private Human friend = null; // žmogaus draugas // Šis metodas sukuria naują žmogaus objektą, kai jam suteikiamas vardas ir draugas public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // Šis metodas taip pat sukuria naują Žmogaus objektą, kai pateikiamas tik vardas public Human(String name) { this. name = name; this. friend = null; }      // Šiuo metodu sukuriamas naujas žmogaus objektas, kai nepateikiamas nei vardas, nei draugas public Human() { this. name = "be vardo"; this. friend = null; } public void sayName() { System. out. println("Mano vardas yra " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Labos nakties, niekas."); } else { System. out. println("Labos nakties " + friend. name); }     } }

Bendravimo su aukščiau esančia "Human" klase metodas

class Main { public static void main(String[] args) { // Sukurkite naują žmogaus objektą stephen, kurio vardas "Stephen" Žmogus stephen = new Human("Stephen"); // Sukurkite naują žmogaus objektą joe, kurio vardas "Joe", o stephen - draugas Žmogus joe = new Human("Joe", stephen); stephen. sayName(); // Parodo "Mano vardas Stephen" stephen. sayGoodnight(); // Parodo "Labos nakties, niekas." joe. sayName(); // Parodo "Mano vardas Joe" joe. sayGoodnight(); // Parodo "Labos nakties, Stephen" } }

Kritika

Nors į objektus orientuotas programavimas yra populiarus, tačiau yra daug žmonių, kurie mano, kad jis yra blogas, ir jį kritikuoja.

  • Luca Cardelli parašė straipsnį "Blogos inžinerinės objektinių kalbų savybės".
  • 1995 m. Richardas Stallmanas rašė: "OOP įtraukimas į "Emacs" nėra aiškus patobulinimas; aš naudojau OOP dirbdamas su "Lisp Machine" langų sistemomis ir nesutinku su įprasta nuomone, kad tai yra geresnis programavimo būdas."
  • Potok ir kt. atliktame tyrime teigiama, kad OOP ir procedūrinių metodų produktyvumas skiriasi labai nežymiai.
  • Christopheris J. Date'as sakė, kad OOP lyginti su kitais dalykais, ypač tai, kaip OOP ir kitas dalykas yra susiję, yra sudėtinga, nes žmonės nesutaria dėl OOP reikšmės.
  • Aleksandras Stepanovas pasiūlė, kad OOP suteikia požiūrį, kuris yra ribotas, kiek tai susiję su matematika, ir pavadino jį "beveik tokia pat apgaulė kaip ir dirbtinis intelektas".
  • Paulas Grahamas, sėkmingas interneto pardavėjas ir programuotojas, teigė, kad OOP paskirtis - veikti kaip bandos mechanizmas, neleidžiantis vidutiniams programuotojams vidutinėse organizacijose "padaryti per daug žalos". Tai taip pat stabdo greitesnius, geresnius programuotojus, kurie žino, kaip viską atlikti galingiau ir kompaktiškiau. [1]

Klausimai ir atsakymai

K: Kas yra į objektus orientuotas programavimas?


A: Į objektus orientuotas programavimas - tai būdas rašyti kompiuterių programas, naudojant "objektus" duomenims ir metodams žymėti.

K: Kuo objektinis programavimas skiriasi nuo procedūrinio programavimo?


A: Procedūrinio programavimo atveju kompiuterio programos yra instrukcijų kompiuteriui sąrašas, kuriame nurodoma atlikti tam tikrus veiksmus tam tikru būdu. Objektinio programavimo atveju kompiuterių programose naudojami objektai, kurie bendrauja tarpusavyje, kad pakeistų tų objektų duomenis ir veiktų taip, kaip nori naudotojas.

Klausimas: Kuo objektinis programavimas naudingas programuotojams?


A: Objektinis programavimas leidžia kodą lengvai pakartotinai panaudoti kitose programos dalyse ar net kitų žmonių.

K: Kuo žinoma Python programavimo kalba?


A: Python leidžia rašyti kompiuterių programas ir objektinio, ir procedūrinio programavimo būdu.

Klausimas: Ar galite pateikti programavimo kalbų, leidžiančių rašyti kompiuterių programas objektinio programavimo būdu, pavyzdžių?


A: Programavimo kalbos, kuriomis galima rašyti kompiuterių programas objektinio programavimo būdu, yra šios: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# ir kt.

K: Kas yra objektai objektiniame programavime?


A: Objektai - tai objektinio programavimo esybės, kuriose yra duomenų ir metodų.

K: Kaip objektai veikia objektiniame programavime?


A: Objektai sąveikauja tarpusavyje, kad pakeistų tuose objektuose esančius duomenis ir veiktų taip, kaip nori naudotojas.

AlegsaOnline.com - 2020 / 2023 - License CC3