Objektorienterad programmering

Objektorienterad programmering (OOP) är ett sätt att skriva datorprogram som använder idén om "objekt" för att representera data och metoder. Vanligtvis var datorprogrammen bara en lista med instruktioner till datorn, där man bad datorn att göra vissa saker på ett visst sätt, vilket kallas procedurell programmering. I objektorienterad programmering använder datorprogrammen dock objekt som talar med varandra och ändrar data i dessa objekt så att de fungerar på det sätt som användaren vill. Det sätt på vilket objektorienterad programmering är utformad hjälper också utvecklaren genom att koden lätt kan återanvändas i andra delar av programmet eller till och med av andra personer.

De flesta programmeringsspråk är en blandning av olika typer av sätt att skriva datorprogram. Python gör det till exempel möjligt att skriva datorprogram både inom objektorienterad programmering och procedurell programmering. Det finns många programmeringsspråk som gör det möjligt att skriva datorprogram i OOP, Några av dessa programmeringsspråk är t.ex: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python osv.

Funktioner

Huvudtanken med objektorienterad programmering är att allt är ett objekt. Objektet kan dock vara av olika typer:

  • Variabler kan innehålla information (eller data) av olika typer som stöds av programmeringsspråket. Exempel på detta är datatypen heltal och datastrukturen listor. Variabler är en idé som redan finns i procedurella programmeringsspråk. I objektorienterad programmering kallas variabler huvudsakligen för attribut.
  • Procedurer (även kallade funktioner, metoder eller rutiner) är en lista med instruktioner som säger åt datorn att ta emot inmatning, göra vissa beräkningar eller ändra data och returnera utdata till användaren. Procedurer är också en idé som redan finns i procedurella programmeringsspråk. I objektorienterad programmering kallas förfaranden huvudsakligen för metoder.
  • Klasser är en samling av olika variabler och procedurer. Klasserna pratar vanligtvis med varandra för att göra ändringar i data så att de fungerar på det sätt som användaren vill.

Objekt är en term som används för att hänvisa till instanser av klasser.

Exempel

I exemplen nedan skapar vi en klass som heter Human. Denna klass innehåller attributen name (för personens namn) och friend (för vänens namn). Var och en av metoderna i klassen Human innehåller en lista med instruktioner som använder både attributet name och friend.

Python

Denna kod är i Python.

class Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("Mitt namn är "+self. name) def say_goodnight(self): if self. friend is None: print("Good night nobody.") else: print("Good night "+self. friend. name) # Skapa ett nytt mänskligt objekt vid namn stephen med namnet "Stephen" stephen = Human("Stephen") # Skapa ett nytt mänskligt objekt vid namn joe med namnet "Joe" och stephen som vän joe = Human("Joe", stephen) stephen. say_name() # Visar "Mitt namn är Stephen" stephen. say_goodnight() # Visar "God natt ingen." joe. say_name() # Visar "Mitt namn är Joe" joe. say_goodnight() # Visar "God natt Stephen".

Java

Denna kod är i Java.

Den mänskliga klassen

class Human { private String name = "unnamed"; // namnet på den här människan private Human friend = null; // människans vän // Den här metoden skapar ett nytt Human-objekt när den får namnet och vännen public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // Den här metoden skapar också ett nytt mänskligt objekt om man bara får namnet public Human(String name) { this. name = name; this. friend = null; }      // Den här metoden skapar ett nytt mänskligt objekt om man inte får både namn och vän public Human() { this. name = "unnamed"; this. friend = null; } public void sayName() { System. out. println("Mitt namn är " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Good night nobody."); } else { System. out. println("Good night " + friend. name); }     } }

En metod för att prata med den mänskliga klassen ovan

class Main { public static void main(String[] args) { // Skapa ett nytt mänskligt objekt stephen med namnet "Stephen" Human stephen = new Human("Stephen"); // Skapa ett nytt mänskligt objekt joe med namnet "Joe" och stephen som vän Human joe = new Human("Joe", stephen); stephen. sayName(); // Visar "Mitt namn är Stephen" stephen. sayGoodnight(); // Visar "God natt ingen" joe. sayName(); // Visar "Mitt namn är Joe" joe. sayGoodnight(); // Visar "God natt Stephen" } }

Kritik

Även om objektorienterad programmering är populär finns det många som tycker att den är dålig och kritiserar den.

  • Luca Cardelli skrev en artikel med titeln "Bad Engineering Properties of Object-Oriented Languages".
  • Richard Stallman skrev 1995: "Att lägga till OOP i Emacs är inte en klar förbättring; jag använde OOP när jag arbetade med Lisp Machine-fönstersystemen, och jag håller inte med om den vanliga uppfattningen att det är ett överlägset sätt att programmera."
  • En studie av Potok et al. visar att det är mycket liten skillnad i produktivitet mellan OOP och procedurella metoder.
  • Christopher J. Date sade att det är svårt att jämföra OOP med andra saker, särskilt hur OOP och den andra saken är relaterade, eftersom folk inte är överens om vad OOP är.
  • Alexander Stepanov föreslog att OOP ger en synvinkel som är begränsad när det gäller matematik, och kallade det "nästan lika mycket en bluff som artificiell intelligens".
  • Paul Graham, en framgångsrik internetförsäljare och programmerare, har föreslagit att syftet med OOP är att fungera som en flockmekanism som hindrar genomsnittliga programmerare i genomsnittliga organisationer från att "göra alltför stor skada". Detta bromsar också snabbare, bättre programmerare som vet hur man gör saker och ting på ett kraftfullare och mer kompakt sätt ... [1]

Frågor och svar

F: Vad är objektorienterad programmering?


S: Objektorienterad programmering är ett sätt att skriva datorprogram där "objekt" står för data och metoder.

F: Hur skiljer sig objektorienterad programmering från procedurprogrammering?


S: I procedurprogrammering är datorprogram en lista med instruktioner för datorn, som säger åt den att göra vissa saker på ett visst sätt. I objektorienterad programmering använder datorprogram objekt som pratar med varandra för att ändra data i dessa objekt och för att fungera på det sätt som användaren vill.

F: Hur gynnar objektorienterad programmering utvecklare?


S: Objektorienterad programmering gör att kod enkelt kan återanvändas av andra delar av programmet eller till och med av andra personer.

F: Vad är programmeringsspråket Python känt för?


S: Python gör det möjligt att skriva datorprogram både i objektorienterad programmering och i procedurprogrammering.

F: Kan du ge exempel på programmeringsspråk som gör det möjligt att skriva datorprogram i objektorienterad programmering?


S: Programmeringsspråk som gör det möjligt att skriva datorprogram i objektorienterad programmering är C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C#, etc.

F: Vad är objekt i objektorienterad programmering?


S: Objekt är enheter i objektorienterad programmering som innehåller data och metoder.

F: Hur fungerar objekt i objektorienterad programmering?


S: Objekt interagerar med varandra för att ändra data i dessa objekt och för att fungera på ett sätt som användaren vill.

AlegsaOnline.com - 2020 / 2023 - License CC3