Objektově orientované programování

Objektově orientované programování (OOP) je způsob psaní počítačových programů, který využívá myšlenku "objektů" k reprezentaci dat a metod. Obvykle byly počítačové programy jen seznamem instrukcí pro počítač, které mu říkaly, aby určitým způsobem provedl určité věci, což se nazývá procedurální programování. V objektově orientovaném programování však počítačové programy využívají objekty, které spolu komunikují, a mění data v těchto objektech, aby fungovaly způsobem, který si uživatel přeje. Díky způsobu, jakým je objektově orientované programování navrženo, pomáhá vývojáři také tím, že umožňuje snadné opakované použití kódu v jiných částech programu nebo dokonce jinými lidmi.

Většina programovacích jazyků je směsicí různých typů způsobů zápisu počítačových programů. Například jazyk Python umožňuje psát počítačové programy jak v objektově orientovaném, tak v procedurálním programování. Existuje mnoho programovacích jazyků, které umožňují psát počítačové programy v OOP, Některé z těchto programovacích jazyků jsou např: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python atd.

Funkce

Hlavní myšlenkou objektově orientovaného programování je, že vše je objekt. Objekt však může být různého typu:

  • Proměnné mohou obsahovat informace (nebo data) různých typů, které podporuje daný programovací jazyk. Příkladem je datový typ celé číslo a datová struktura seznam. Proměnné jsou myšlenkou, která je již k dispozici z procedurálních programovacích jazyků. V objektově orientovaném programování se proměnné označují především jako atributy.
  • Procedury (známé také jako funkce, metody nebo rutiny) jsou seznamem instrukcí, které říkají počítači, aby přijal vstup, provedl nějaké výpočty nebo změnil data a vrátil uživateli výstup. Procedury jsou také myšlenkou, která je již dostupná z procedurálních programovacích jazyků. V objektově orientovaném programování se procedury označují především jako metody.
  • Třídy jsou kolekcí různých proměnných a procedur. Třídy obvykle komunikují mezi sebou a provádějí změny dat tak, aby fungovaly způsobem, který si uživatel přeje.

Objekty je termín používaný pro označení instancí tříd.

Příklady

V příkladech níže vytvoříme třídu s názvem Human. Tato třída obsahuje atributy name (pro jméno člověka) a friend (pro jméno přítele). Každá z metod třídy Human obsahuje seznam instrukcí, které využívají atributy name a friend.

Python

Tento kód je v jazyce Python.

class Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("My name is "+self. name) def say_goodnight(self): if self. friend is None: print("Good night nobody.") else: print("Good night "+self. friend. name) # Vytvoříme nový lidský objekt jménem Stephen se jménem "Stephen" stephen = Human("Stephen") # Vytvoříme nový lidský objekt jménem joe se jménem "Joe" a stephenem jako přítelem joe = Human("Joe", stephen) stephen. say_name() # Zobrazí se "Jmenuji se Stephen" stephen. say_goodnight() # Zobrazí se "Dobrou noc, nikdo." joe. say_name() # Zobrazí se "Jmenuji se Joe" joe. say_goodnight() # Zobrazí se "Dobrou noc, Stephen".

Java

Tento kód je v jazyce Java.

Třída Human

class Human { private String name = "unnamed"; // jméno tohoto člověka private Human friend = null; // přítel člověka // Tato metoda po zadání jména a přítele vytvoří nový objekt Human public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // Tato metoda také vytvoří nový objekt Human, pokud je zadáno pouze jméno public Human(String name) { this. name = name; this. friend = null; }      // Tato metoda vytvoří nový objekt Human, pokud není zadáno jméno ani přítel public Human() { this. name = "unnamed"; this. friend = null; } public void sayName() { System. out. println("Mé jméno je " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Dobrou noc, nikdo."); } else { System. out. println("Dobrou noc " + friend. name); }     } }

Metoda pro komunikaci s výše uvedenou třídou Human

class Main { public static void main(String[] args) { // Vytvoříme nový lidský objekt stephen se jménem "Stephen" Human stephen = new Human("Stephen"); // Vytvoříme nový lidský objekt joe se jménem "Joe" a stephen jako přítel Human joe = new Human("Joe", stephen); stephen. sayName(); // Zobrazí "Jmenuji se Stephen" stephen. sayGoodnight(); // Zobrazí "Dobrou noc, nikdo." joe. sayName(); // Zobrazí "Jmenuji se Joe" joe. sayGoodnight(); // Zobrazí "Dobrou noc, Stephen" } }

Kritika

I když je objektově orientované programování populární, existuje mnoho lidí, kteří ho považují za špatné a kritizují ho.

  • Luca Cardelli napsal článek s názvem "Bad Engineering Properties of Object-Oriented Languages".
  • Richard Stallman v roce 1995 napsal: "Přidání OOP do Emacsu není jednoznačně zlepšením; OOP jsem používal při práci na okenních systémech Lisp Machine a nesouhlasím s obvyklým názorem, že je to lepší způsob programování."
  • Studie Potok a kol. nám říká, že mezi OOP a procedurálním přístupem je velmi malý rozdíl v produktivitě.
  • Christopher J. Date řekl, že porovnávat OOP s jinými věcmi, zejména jak spolu OOP a jiné věci souvisí, je obtížné, protože lidé se neshodnou na významu OOP.
  • Alexander Stepanov naznačil, že OOP poskytuje pohled, který je omezený, pokud jde o matematiku, a nazval ho "téměř stejným podvodem jako umělá inteligence".
  • Paul Graham, úspěšný internetový obchodník a programátor, navrhl, že účelem OOP je fungovat jako stádní mechanismus, který brání průměrným programátorům v průměrných organizacích "napáchat příliš mnoho škody". To také zpomaluje rychlejší a lepší programátory, kteří vědí, jak dělat věci výkonnějším a kompaktnějším způsobem. [1]

Otázky a odpovědi

Otázka: Co je to objektově orientované programování?


Odpověď: Objektově orientované programování je způsob psaní počítačových programů, který používá "objekty" jako označení pro data a metody.

Otázka: Jak se objektově orientované programování liší od procedurálního programování?


A: Při procedurálním programování jsou počítačové programy seznamem instrukcí pro počítač, které mu říkají, aby dělal určité věci určitým způsobem. V objektově orientovaném programování používají počítačové programy objekty, které spolu komunikují, aby měnily data v těchto objektech a pracovaly způsobem, který si uživatel přeje.

Otázka: Jaký přínos má objektově orientované programování pro vývojáře?


Odpověď: Objektově orientované programování umožňuje snadné opakované použití kódu v jiných částech programu nebo dokonce jinými lidmi.

Otázka: Čím je známý programovací jazyk Python?


Odpověď: Python umožňuje psát počítačové programy jak v objektově orientovaném programování, tak v procedurálním programování.

Otázka: Můžete uvést příklady programovacích jazyků, které umožňují psát počítačové programy v objektově orientovaném programování?


Odpověď: Mezi programovací jazyky, které umožňují psát počítačové programy v objektově orientovaném programování, patří C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# atd.

Otázka: Co jsou objekty v objektově orientovaném programování?


Odpověď: Objekty jsou v objektově orientovaném programování entity, které obsahují data a metody.

Otázka: Jak objekty v objektově orientovaném programování fungují?


A: Objekty mezi sebou interagují, aby měnily data v těchto objektech a pracovaly způsobem, který si uživatel přeje.

AlegsaOnline.com - 2020 / 2023 - License CC3