15 Stimmen

Definition von OOP für einen neuen Programmierer

Beim Unterrichten einer ersten Sprache für jemanden ohne Programmierkenntnisse fällt es mir schwer, OOP zu definieren, obwohl ich OOP bevorzuge.

0 Stimmen

0 Stimmen

@hasen j - Das hatte ich nicht gesehen, aber hier gibt es einige gute Antworten.

0 Stimmen

Siehe auch: "Jargonfreier Vergleich von OOP vs. Procedural": stackoverflow.com/questions/1530868

5voto

joel.neely Punkte 30189

Eine Sportmannschaft. Die Spieler auf dem Spielfeld/auf dem Platz können in Bezug auf die Positionen, die sie spielen, festgelegt werden. Allerdings kann die gesamte Mannschaft mehrere Mitglieder haben, die eine bestimmte Position spielen können.

Jede Position ist wie eine Klasse in OO; sie spezifiziert eine Reihe von Verantwortlichkeiten. Die Teammitglieder sind Instanzen dieser Klassen.

Die Spielzüge im Spielbuch sind Muster. Jedes von ihnen gibt an, wie ein bestimmtes Ergebnis durch die Interaktion von (Instanzen von) Positionen (Klassen) erreicht werden kann.

4voto

Alex Reynolds Punkte 93906

Nehmen wir an, Sie möchten eine Familie von Dingen beschreiben, die alle dieselben Eigenschaften haben, aber vielleicht unterschiedliche Namen, Farben oder andere kosmetische Unterschiede aufweisen.

Sie wollen zum Beispiel die Fahrzeuge beschreiben, die eine Familie in der Garage hat. Zu jedem Fahrzeug gibt es Attribute, die für Sie von Interesse sind:

  1. Welches ist das Modell und das Jahr des jeweiligen Fahrzeugs?
  2. Wie viele Räder hat ein Fahrzeug?
  3. Wer sind die Menschen, die ein bestimmtes Fahrzeug fahren?

In diesem Fall könnten Sie einen Satz von zwei Fahrzeugen haben, so dass Folgendes zutrifft:

Vehicle A's Model is a Toyota.
Vehicle A's Year is 2001.
Vehicle A has four Wheels
Vehicle A is driven by Mom, Dad, and Junior

Vehicle B is a Moto Guzzi
Vehicle B was made in 2004
Vehicle B has two wheels
Vehicle B is driven by Dad

In verschiedenen Sprachen könnte man die beiden Beispiele ganz grob auf die folgende Weise wiedergeben:

A = new Vehicle();
A.model = "Toyota";
A.year = 2002;
A.wheelCount = 4;
A.drivers = [ "Mom", "Dad", "Junior" ];

B = new Vehicle();
B.model = "Moto Guzzi";
B.year = 2004;
B.wheelCount = 2;
B.drivers = [ "Dad" ];

In OOP kapseln Sie die Attribute dieser Fahrzeuge, so dass Sie sie durch ihre Merkmale beschreiben können. Ihre Aufgabe ist es, Code zu schreiben, um die Werte dieser Merkmale abzurufen und zu setzen (sowie andere interessante Dinge mit diesen Merkmalen zu tun).

Außerdem können Sie "Unterklassen" bilden, um ein Objekt in verschiedenen Kontexten wiederzuverwenden. So können Sie z. B. spezifischere Fahrzeug-Objekttypen wie Auto und Motorrad verwenden, die ihre Merkmale von der Beschreibung von Fahrzeug erben:

A = new Car();
B = new Motorcycle();

Die Objekte Auto und Motorrad sind spezifischere Beschreibungen eines Fahrzeugs. Diese beiden Unterklassen können ihre eigenen speziellen Attribute haben. Ein Auto kann über Kindersicherungen verfügen, während ein Motorrad in der Regel keinen Bedarf für so etwas hat.

Anstatt das Attribut "Kindersicherung" für ein Fahrzeug zu setzen, können Sie sagen, dass nur ein Auto ein Schloss-Attribut hat. Dies macht Ihre Fahrzeugbeschreibung übersichtlicher und einfacher zu schreiben und zu pflegen.

3voto

Svante Punkte 49287

Soweit ich weiß, bedeutet objektorientierte Programmierung ursprünglich, dass Sie alle Konzepte Ihres Programms in Objekten organisieren und dann den gesamten logischen Fluss als Nachrichten zwischen diesen Objekten definieren. Ich denke, dass man Smalltalk lernen muss, um die ursprüngliche Absicht zu verstehen.

0 Stimmen

Sehr gute Antwort. Eine kleine Anregung: IMO wäre Self sogar noch besser als Smalltalk für den Unterricht in OO-Programmierung geeignet, weil Self wirklich hat nur Objekte und Nachrichten - keine Variablen, keine Konstanten, keine Klassen.

3voto

Erik Funkenbusch Punkte 91649

Hier ist eine einfache Definition.

Gun gun = new Gun(new Bullet);
gun.Aim = Appendage.Foot;
gun.PullTrigger();

;)

2voto

Will Punkte 18909

Objektorientiertes Programmieren in Laiensprache:

  1. Alles in Ihrem Programm ist ein Ding (Objekt). Dieses Ding hat Eigenschaften, die es erklären (Größe, Form, Farbe, etc.)
  2. Der Programmierer bittet das Ding, Dinge zu tun oder Fragen zu beantworten: Mach deine Größe groß (setSize) oder Wie groß bist du (getSize)

Die Sache kümmert sich nur dann um die Anpassung seiner Eigenschaften, wenn Sie es dazu auffordern (Aufruf einer Methode). Sie können nicht direkt untersuchen oder ändern Die Sache Eigenschaften. Sie können die Eigenschaften nur untersuchen oder ändern Sache lässt Sie sehen. Deshalb, Sache kann sicherstellen, dass die Eigenschaften ordnungsgemäß angezeigt und geändert werden.

Dies verhindert, dass der Programmierer die Sache seine Größe es rot . Wenn man dem Ding direkt sagt, dass es seine Größe rot machen soll, sollte es sich weigern (rot ist keine gültige Größe). Außerdem ermöglicht es den Dingen, die Nebeneffekte der Änderung ihrer Eigenschaften zu verwalten.

Angenommen, Die Sache originalSize es groß . Wenn I einfach ändern Die Sache Größe à klein , I müssen daran denken, es zu erzählen Sache dass es nicht mehr sein originalSize . Wenn ich fragen Sie Sache zu ändern. Größe à klein wird die Größe auf small geändert UND die originalSize auf false gesetzt. Wenn ich das Ding nun frage, ob es seine Originalgröße hat, antwortet es mit nein.

Im Wesentlichen können Sie so Ihre Daten und Funktionen zusammenpacken und die Dinge modularer/kompartimenteller gestalten. So können Sie Ihren Code besser organisieren und leichter wiederverwenden. OOP ist nichts Besonderes, sondern nur eine Möglichkeit, Ihren Code besser zu organisieren. Für Anfänger ist das nicht entscheidend, aber für größere Projekte ist es wichtig. Innerhalb der Funktionen eines Objekts werden die Dinge im Allgemeinen prozeduraler, wie es ein Anfänger gewohnt ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X