mikrocontroller.net

Forum: PC-Programmierung C++ immer Klassen oder auch Module?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
In C++ sollte ich da immer alles in ein Klassenkorsett zwängen oder ist 
es auch gängige praxis Funktionen in einem Modul zu definieren und ihre 
Prototypen in einer Header Datei aufzuführen.

Also alles was diesen Header includiert, kann auf die Funktionen im 
Modul zugreifen.

Genauso könnte ich das auch in einer Klasse umsetzen. Klassendeklaration 
und Definition.

Die Frage ist also immer alles in Klassen quetschen oder gehen auch 
Module.

Autor: rme (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Begriff "Modul" ist in C++ noch in der Ausarbeitung, du meinst 
vermutlich einen Namespace?

Dann ist es Geschmacksache. Leute, die aus der Java-Welt kommen, packen 
alle Funktionen als Memberfunktion in eine Klasse, weil es in Java gar 
keine Funktionen gibt, sondern nur Methoden (der dortige Begriff für 
Memberfunktion).

In C++ gibt es APIs mit beiden Varianten. In der STL sind die 
Algorithmen beispielsweise außerhalb der Klassen implementiert, z.B. 
for_each(...vector...) statt vector::for_each.

Ich persönlich mache es so: In eine Klasse gehört alles, was den Zustand 
der Klasse betrifft, d.h. Funktionen, die Membervariablen ändern oder 
benötigen. In den Namespace kommen Funktionen, die mithilfe der Klasse 
und ihrer Memberfunktionen höhere Aufgaben erledigen können.

Beispiel: Es gibt eine Klasse HTTPClient, die sich um HTTP-Funktionen 
kümmert. Diese sind zustandsbehaftet, z.B. für Authentifizierung und 
Cookies. Eine Funktion "download", die den Inhalt einer URL in eine 
Datei schreibt, würde ich dann nicht in diese Klasse packen, sondern so: 
download(url, file, client = Client()). Das macht auch das Testen 
einfacher, weil "client" in dem Fall ein Interface ist, das beim Testen 
durch einen Stub oder Mock ersetzt werden kann.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.