Objektorienteret programmering

Objektorienteret programmering (OOP) er en måde at skrive computerprogrammer på, hvor man bruger ideen om "objekter" til at repræsentere data og metoder. Normalt var computerprogrammer blot en liste af instruktioner til computeren, der fortæller computeren, at den skal gøre visse ting på en bestemt måde, hvilket kaldes procedureprogrammering. I objektorienteret programmering gør computerprogrammer imidlertid brug af objekter, der taler sammen og ændrer dataene i disse objekter, så de fungerer på den måde, som brugeren ønsker. På grund af den måde, objektorienteret programmering er udformet på, hjælper det også udvikleren ved at gøre det muligt at genbruge koden i andre dele af programmet eller endda af andre personer.

De fleste programmeringssprog er en blanding af forskellige typer måder at skrive computerprogrammer på. Python giver f.eks. mulighed for at skrive computerprogrammer både i objektorienteret programmering og i procedurebaseret programmering. Der findes mange programmeringssprog, der gør det muligt at skrive computerprogrammer i OOP, Nogle af disse programmeringssprog er f.eks: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, osv.

Funktioner

Hovedidéen i objektorienteret programmering er, at alt er et objekt. Objektet kan dog være af forskellige typer:

  • Variabler kan indeholde oplysninger (eller data) af forskellige typer, der understøttes af programmeringssproget. Eksempler herpå er datatypen heltal og datastrukturen lister. Variabler er en idé, som allerede findes i procedurale programmeringssprog. I objektorienteret programmering er variabler hovedsagelig kendt som attributter.
  • Procedurer (også kendt som funktioner, metoder eller rutiner) er en liste af instruktioner, der fortæller computeren, at den skal modtage input, foretage nogle beregninger eller ændre data og returnere output til brugeren. Procedurer er også en idé, som allerede findes i procedurale programmeringssprog. I objektorienteret programmering er procedurer hovedsagelig kendt som metoder.
  • Klasser er en samling af forskellige variabler og procedurer. Klasser taler normalt sammen for at foretage ændringer i data, så de fungerer på den måde, som brugeren ønsker.

Objekter er et begreb, der bruges til at referere til instanser af klasser.

Eksempler

I eksemplerne nedenfor opretter vi en klasse kaldet Human. Denne klasse indeholder attributterne name (for personens navn) og friend (for vennens navn). Hver af metoderne i Human-klassen indeholder en liste med instruktioner, der gør brug af både attributterne name og friend.

Python

Denne kode er i Python.

class Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("Mit navn er "+self. name) def say_goodnight(self): if self. friend is None: print("Good night nobody.") else: print("Good night "+self. friend. name) # Opret et nyt menneskeobjekt ved navn stephen med navnet "Stephen" stephen = Human("Stephen") # Opret et nyt menneskeobjekt ved navn joe med navnet "Joe" og stephen som ven joe = Human("Joe", stephen) stephen. say_name() # Viser "Mit navn er Stephen" stephen. say_goodnight() # Viser "Godnat ingen." joe. say_name() # Viser "Mit navn er Joe" joe. say_goodnight() # Viser "Godnat Stephen

Java

Denne kode er i Java.

Den menneskelige klasse

class Human { private String name = "unnamed"; // navnet på dette menneske private Human friend = null; // menneskets ven // Denne metode opretter et nyt menneskeobjekt, når navnet og vennen er angivet public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // Denne metode opretter også et nyt menneskeobjekt, når det kun får navnet public Human(String name) { this. name = name; this. friend = null; }      // Denne metode opretter et nyt Human-objekt, når der ikke er givet både navn og ven public Human() { this. name = "unnamed"; this. friend = null; } public void sayName() { System. out. println("Mit navn er " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Good night nobody."); } else { System. out. println("Good night " + friend. name); }     } }

En metode til at tale med den ovennævnte klasse Human

class Main { public static void main(String[] args) { // Opret et nyt menneskeobjekt stephen med navnet "Stephen" Human stephen = new Human("Stephen"); // Opret et nyt menneskeobjekt joe med navnet "Joe" og stephen som en ven Human joe = new Human("Joe", stephen); stephen. sayName(); // Viser "Mit navn er Stephen" stephen. sayGoodnight(); // Viser "Good night nobody." joe. sayName(); // Viser "Mit navn er Joe" joe. sayGoodnight(); // Viser "Good night Stephen" } }

Kritik

Selv om objektorienteret programmering er populær, er der mange mennesker, der mener, at den er dårlig og kritiserer den.

  • Luca Cardelli skrev en artikel med titlen "Bad Engineering Properties of Object-Oriented Languages" (dårlige tekniske egenskaber ved objektorienterede sprog).
  • Richard Stallman skrev i 1995: "At tilføje OOP til Emacs er ikke klart en forbedring; jeg brugte OOP da jeg arbejdede på Lisp Machine vinduessystemerne, og jeg er uenig i den almindelige opfattelse, at det er en bedre måde at programmere på."
  • En undersøgelse af Potok et al. fortæller os, at der er meget lille forskel i produktivitet mellem OOP- og procedurebaserede metoder.
  • Christopher J. Date sagde, at det er vanskeligt at sammenligne OOP med andre ting, især hvordan OOP og den anden ting hænger sammen, fordi folk ikke er enige om betydningen af OOP.
  • Alexander Stepanov foreslog, at OOP giver et synspunkt, der er begrænset i forhold til matematik, og kaldte det "næsten lige så meget en skrøne som kunstig intelligens".
  • Paul Graham, en succesfuld internet-sælger og programmør, har foreslået, at formålet med OOP er at fungere som en hyrdemekanisme, der forhindrer gennemsnitlige programmører i gennemsnitlige organisationer i at "gøre for meget skade". Dette bremser også hurtigere, bedre programmører, der ved, hvordan man gør tingene på en mere kraftfuld og mere kompakt måde... [1]

Spørgsmål og svar

Q: Hvad er objektorienteret programmering?


A: Objektorienteret programmering er en måde at skrive computerprogrammer på, hvor man bruger "objekter" til at stå for data og metoder.

Q: Hvordan adskiller objektorienteret programmering sig fra procedurel programmering?


A: I procedureprogrammering er computerprogrammer en liste med instruktioner til computeren, som fortæller den, at den skal gøre bestemte ting på en bestemt måde. I objektorienteret programmering bruger computerprogrammer objekter, der taler med hinanden for at ændre dataene i disse objekter og for at arbejde på en måde, som brugeren ønsker.

Q: Hvordan gavner objektorienteret programmering udviklere?


A: Objektorienteret programmering gør det nemt at genbruge kode i andre dele af programmet eller endda af andre mennesker.

Q: Hvad er programmeringssproget Python kendt for?


A: Python gør det muligt at skrive computerprogrammer både i objektorienteret programmering og i procedurel programmering.

Q: Kan du give eksempler på programmeringssprog, der gør det muligt at skrive computerprogrammer i objektorienteret programmering?


A: Programmeringssprog, der giver dig mulighed for at skrive computerprogrammer i objektorienteret programmering, omfatter C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# osv.

Q: Hvad er objekter i objektorienteret programmering?


A: Objekter er enheder i objektorienteret programmering, der indeholder data og metoder.

Q: Hvordan fungerer objekter i objektorienteret programmering?


A: Objekter interagerer med hinanden for at ændre dataene i disse objekter og for at fungere på en måde, som brugeren ønsker.

AlegsaOnline.com - 2020 / 2023 - License CC3