Was genau ist ein Objekt und eine Klasse in einer Programmiersprache?

vram78

Lieutenant
Registriert
Dez. 2015
Beiträge
732
Hi,

Ich lerne momentan das programmieren, aber einiges verstehe ich immer noch nicht. z.B. weiß ich was eine prozeduale Programmiersprache ist. Bei einer objektorientierten Programmiersprache gibt es 2 zusätzliche Werkzeuge, die das Strukturieren von Quellcode einfacher machen soll, Objekte und Klassen.

Nur warum sind sie besser als Funktionen? Und was machen sie überhaupt, also welche Aufgaben haben sie??








MFG
 
Prozedurale und objektorientierte Programmiersprachen sind andere Programmierphilosophien, aber nicht generell verschieden. Es gibt immer Schnittpunkte, die Herangehensweise ist nur anders.

Objekte sind generell alles, was in irgendeinerweise im Arbeitsspeicher abgelegt wird. Klassen sind größere Strukturen, aber auch Objekte. Typischerweise haben Klassen mehrere Felder (Properties), die den Datenteil der Klasse beschreiben sowie Funktionen, die mit den Daten der Klasseninstanzen arbeiten.

Objekt ist zusätzlich gerne verwendet, um Klasseninstanzen zu Beschreiben. Eine Klasse selbst ist nur eine Definition für eine "Klasse" von gleichartigen Instanzen, die Instanzen sind dann aber die Objekte, die tatsächlich Daten enthalten.

Die Begriffe von Objekt / Instanz variieren teilweise von Programmiersprache zu Programmiersprache, weil die Begriffe zum Teil eine von der Programmiersprache vorgegebene Funktion erfüllen. Generelles Verständnis ist hier mehr Wert als Definitionen gelernt zu haben.

Generell sind das Basics. Das wird am Anfang JEDER Lektüre erklärt. Lies dich am besten ein wenig ein und programmiere etwas. Wenn du stolperst, kannst du noch immer weiterlesen / nachfragen :) Programmieren lernen ist learning by doing.
 
Code:
// Klasse - reine Definition
class Kreis {
public:
  Kreis() { }
  Kreis(float radius)
  : _radius(radius) { }
  
  float flaeche() const {
    constexpr float pi = 3.141592654f;
    return pi * this->_radius * this->_radius;
  }

private:
  float _radius = 0.0f;
}; 

// Objekt (oder Instanz) - hier wird das ganze dann benutzt
Kreis einKreis(5.0f);
std::cout << einKreis.flaeche() << std::endl;
 
Hallo,
die definition ist nicht ganz einfach, aber ich versuchs mal :)

In der OOP wird versucht reale Objekte (Beispiel ein Auto) mit Hilfe einer sogenannten Klasse abzubilden. Die Klassen bilden diese realen Objekte in der Regel nicht 1:1 ab, sondern vereinfachen diese noch soweit es möglich ist, um komplexität rauszunehmen. Die Entwickler sprechen in diesem zusammenhang auch davon, dass eine Klasse das reale Objekt abstrahiert.

Als zweite Aufgabe hat die Klasse noch die Funktion die Daten/das Aussehen (Felder) eines Objektes und dessen Fähigkeiten (Methoden) in sich zu sammeln/zentralisieren. Daraus folgt auch, dass eine Klasse eine Beschreibung ist, wie ein Objekt "ausschaut" und welche Fähigkeiten es hat.

Beispiel in C#:
Code:
public class Auto {
   private int leistungPS; //Feld "leistungPS"
   private string farbe;  // Feld "farbe"
   private string marke; //Feld "marke"

   public void Beschleunigen() { //Methode "Beschleunigen"
     //...
   }

  public void Bremsen() { //Methode "Bremsen"
     //...
  }

 //...
}

Ich hoffe ich konnte etwas klarheit in die Thematik bringen :)

greetz
hroessler
 
Simpel gesagt:
Eine Klasse eine Blaupause (Bauplan) von etwas, z.B. von einem Auto und das Objekt ist dann ein konkretes Auto, welches vom Fabrikband gelaufen ist.
Du kannst eine Klasse daher auch nie sofort benutzen, sondern musst halt ein Objekt darauf erschaffen (instanzieren), damit Du auf die Felder und Methoden zugreifen kannst.
 
Zurück
Oben