Objektumorientált programozás

Az objektumorientált programozás (OOP) a számítógépes programok írásának egy olyan módja, amely az "objektumok" gondolatát használja az adatok és módszerek reprezentálására. Általában a számítógépes programok csak utasítások listája voltak a számítógép számára, amelyek megmondták a számítógépnek, hogy bizonyos dolgokat bizonyos módon tegyen meg, ezt nevezzük procedurális programozásnak. Az objektumorientált programozásban azonban a számítógépes programok olyan objektumokat használnak, amelyek egymással beszélgetnek, és megváltoztatják az objektumokban lévő adatokat, hogy a felhasználó által kívánt módon működjenek. Az objektumorientált programozás kialakítása miatt a fejlesztőnek is segít, mivel lehetővé teszi, hogy a kódot könnyen újra lehessen használni a program más részeiben vagy akár más emberek által.

A legtöbb programozási nyelv a számítógépes programok írásának különböző módjainak keveréke. A Python például lehetővé teszi, hogy a számítógépes programokat objektumorientált és procedurális programozással is meg lehessen írni. Számos olyan programozási nyelv van, amely lehetővé teszi, hogy számítógépes programokat írjunk OOP-ban, Néhány ilyen programozási nyelv például: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python stb.

Jellemzők

Az objektumorientált programozás alapgondolata, hogy minden egy objektum. Az objektum azonban különböző típusú lehet:

  • A változók különböző típusú, a programozási nyelv által támogatott információkat (vagy adatokat) tárolhatnak. Ilyen például az egész szám adattípus és a listák adatszerkezete. A változók egy olyan ötlet, amely már a procedurális programozási nyelvekből is elérhető. Az objektumorientált programozásban a változókat elsősorban attribútumokként ismerik.
  • Az eljárások (más néven függvények, módszerek vagy rutinok) olyan utasítások listája, amelyek utasítják a számítógépet, hogy fogadjon el bemenetet, végezzen el számításokat vagy változtasson meg adatokat, és adjon vissza kimenetet a felhasználónak. Az eljárások szintén egy olyan ötlet, amely már rendelkezésre áll a procedurális programozási nyelvekből. Az objektumorientált programozásban az eljárásokat főként metódusoknak nevezik.
  • Az osztályok különböző változók és eljárások gyűjteményei. Az osztályok általában beszélnek egymással, hogy az adatokon változtatásokat hajtsanak végre, hogy a felhasználó által kívánt módon működjenek.

Az objektumok kifejezés az osztályok példányaira utal.

Példák

Az alábbi példákban létrehozunk egy Human nevű osztályt. Ez az osztály tartalmazza a name (a személy neve) és a friend (a barát neve) attribútumokat. A Human osztály minden egyes metódusa tartalmaz egy utasításlistát, amely mind a name, mind a friend attribútumokat felhasználja.

Python

Ez a kód Python nyelven készült.

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("Jó éjt senkinek.") else: print("Jó éjt "+self. friend. name) # Létrehoz egy új Human objektumot stephen néven "Stephen" névvel stephen = Human("Stephen") # Létrehoz egy új Human objektumot joe néven "Joe" névvel és stephen barátként joe = Human("Joe", stephen) stephen. say_name() # Megjelenik 'My name is Stephen' stephen. say_goodnight() # Megjelenik 'Jó éjt senkinek.' joe. say_name() # Megjelenik 'My name is Joe' joe. say_goodnight() # Megjelenik 'Jó éjt Stephen'.

Java

Ez a kód Java nyelven készült.

Az emberi osztály

class Human { private String name = "névtelen"; // az ember neve private Human friend = null; // az ember barátja // Ez a metódus egy új Human objektumot hoz létre, ha megadjuk a nevet és a barátot public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // Ez a módszer akkor is létrehoz egy új Human objektumot, ha csak a nevet adjuk meg public Human(String name) { this. name = name; this. friend = null; }      // Ez a módszer akkor is létrehoz egy új Human objektumot, ha nem adjuk meg a nevet és a barátot public Human() { this. name = "névtelen"; this. friend = null; } public void sayName() { System. out. println("My name is " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Jó éjt senkinek."); } else { System. out. println("Jó éjt " + friend. name); }     } }

A fenti Human osztályhoz való beszélgetés módszere

class Main { public static void main(String[] args) { // Új Human objektum létrehozása stephen névvel "Stephen" Human stephen = new Human("Stephen"); // Új Human objektum létrehozása joe névvel "Joe" és stephen mint barát Human joe = new Human("Joe", stephen); stephen. sayName(); // Megjelenik 'A nevem Stephen' stephen. sayGoodnight(); // Megjelenik 'Jó éjt senki.' joe. sayName(); // Megjelenik 'A nevem Joe' joe. sayGoodnight(); // Megjelenik 'Jó éjt Stephen' } }

Kritika

Bár az objektumorientált programozás népszerű, mégis sokan vannak, akik rossznak tartják és kritizálják.

  • Luca Cardelli írt egy tanulmányt "Az objektumorientált nyelvek rossz mérnöki tulajdonságai" címmel.
  • Richard Stallman 1995-ben azt írta: "Az OOP hozzáadása az Emacshez nem jelent egyértelmű javulást; én is használtam az OOP-t, amikor a Lisp Machine ablakrendszereken dolgoztam, és nem értek egyet azzal a szokásos nézettel, hogy ez a programozás felsőbbrendű módja.".
  • Potok et al. tanulmánya szerint az OOP és a procedurális megközelítések között nagyon kicsi a különbség a termelékenységben.
  • Christopher J. Date elmondta, hogy az OOP és más dolgok összehasonlítása, különösen az OOP és a másik dolog viszonya nehéz, mert az emberek nem értenek egyet az OOP jelentésében.
  • Alexander Stepanov azt javasolta, hogy az OOP egy olyan nézőpontot ad, amely korlátozott a matematikában, és "majdnem olyan átverésnek nevezte, mint a mesterséges intelligencia".
  • Paul Graham, egy sikeres internetes üzletkötő és programozó azt javasolta, hogy az OOP célja, hogy egy olyan terelőmechanizmusként működjön, amely megakadályozza, hogy az átlagos programozók átlagos szervezetekben "túl sok kárt okozzanak". Ez egyben lelassítja a gyorsabb, jobb programozókat, akik tudják, hogyan kell a dolgokat erősebb és kompaktabb módon elvégezni.... [1]

Kérdések és válaszok

K: Mi az objektumorientált programozás?


V: Az objektumorientált programozás a számítógépes programok írásának egy módja, amely "objektumokat" használ az adatok és módszerek jelölésére.

K: Miben különbözik az objektumorientált programozás a procedurális programozástól?


V: A procedurális programozásban a számítógépes programok utasítások listája a számítógép számára, amelyek megmondják neki, hogy bizonyos dolgokat bizonyos módon tegyen meg. Az objektumorientált programozásban a számítógépes programok objektumokat használnak, amelyek beszélnek egymással, hogy megváltoztassák az objektumokban lévő adatokat, és a felhasználó által kívánt módon működjenek.

K: Milyen előnyökkel jár az objektumorientált programozás a fejlesztők számára?


V: Az objektumorientált programozás lehetővé teszi, hogy a kódot könnyen újra lehessen használni a program más részeiben vagy akár más emberek által.

K: Miről ismert a Python programozási nyelv?


V: A Python lehetővé teszi, hogy a számítógépes programokat objektumorientált és procedurális programozásban is meg lehessen írni.

K: Tudna példákat mondani olyan programozási nyelvekre, amelyek lehetővé teszik, hogy számítógépes programokat objektumorientált programozásban írjunk?


V: A programozási nyelvek, amelyek lehetővé teszik, hogy számítógépes programokat objektumorientált programozásban írjunk, a következők: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# stb.

K: Mik az objektumok az objektumorientált programozásban?


V: Az objektumok az objektumorientált programozásban olyan entitások, amelyek adatokat és módszereket tartalmaznak.

K: Hogyan működnek az objektumok az objektumorientált programozásban?


V: Az objektumok kölcsönhatásba lépnek egymással, hogy megváltoztassák az objektumokban lévő adatokat, és a felhasználó által kívánt módon működjenek.

AlegsaOnline.com - 2020 / 2023 - License CC3