Frage zu Klassen
-
Hallo!
Vorgestellt habe ich mich ja bereits hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-236185-and-highlight-is-.html
Wir sind nun bereits bei der objektorientierten Programmierung angekommen und beschäftigen uns mit Klassen und Strings in der Konsole.
Ich habe das aber immer noch nicht so richtig verstanden (glaube ich).
Was genau passiert in der Klasse?
Welche Variable nimmt welchen Wert auf?Danke, Chris
Klasse_Eingabe.h
#pragma once #include <iostream> #include <string> using namespace std; class Klasse_Eingabe { private: string eingabe; public: Klasse_Eingabe(void); string einlesen(string uebergabe); void ausgabe(string uebergabe1, string uebergabe2); ~Klasse_Eingabe(void); };Klasse_Eingabe.cpp
#include "Klasse_Eingabe.h" Klasse_Eingabe::Klasse_Eingabe(void) { } Klasse_Eingabe::~Klasse_Eingabe(void) { } string Klasse_Eingabe::einlesen(string uebergabe) { cout << uebergabe; getline(cin,eingabe); return eingabe; } void Klasse_Eingabe::ausgabe(string uebergabe1, string uebergabe2) { cout << uebergabe1 << uebergabe2 << endl; }Zeichenketten.cpp (Das Programm)
#include <iostream> #include <string> #include "G:\Programmieren\C++\Funktionen\nuetzliche Funktionen.h" #include "Klasse_Eingabe.h" using namespace std; void main() { string vorname, nachname, strasse, ort; Klasse_Eingabe adresse; vorname = adresse.einlesen ("Vorname: "); nachname = adresse.einlesen ("Nachname: "); strasse = adresse.einlesen ("Strasse: "); ort = adresse.einlesen ("Ort: "); cls(); cout << "Sie haben folgende Eingaben gemacht:" << endl << endl; adresse.ausgabe ("Vorname: ", vorname); adresse.ausgabe ("Nachname: ", nachname); adresse.ausgabe ("Strasse: ", strasse); adresse.ausgabe ("Ort: ", ort); cout << endl; warten(); }
-
Sorry, aber das solltest du schon etwas genauer beschreiben. Was genau verstehst du nicht?
-
chris47803 schrieb:
Was genau passiert in der Klasse?
Welche Variable nimmt welchen Wert auf?Solche Dinge kannst du auch ganz gut selber herausfinden, indem du Konsolenausgaben in deinen Code einbaust oder einen Debugger benutzt.

Und benutze nächstes Mal vielleicht eher die [cpp]- anstatt der [cs]-Tags. Es geht schliesslich um C++.

-
Drei Dinge sind mir noch aufgefallen:
- kein using namespace in Header-Dateien. Den Namensraum (std) hier explizit angeben: std::string ...
- int main
- Bei Funktionen ohne Parameter kein void zwischen den KlammernUnd die nachfolgende Zeile empfinde ich als etwas merkwürdig:
#include "G:\Programmieren\C++\Funktionen\nuetzliche Funktionen.h"--
Die Klasse "Klasse_Eingabe" ist eigentlich ein eher ungünstiges Beispiel um die Anwendung und vor allem den Sinn von Klassen zu demonstrieren. Klassen repräsentieren in der Regel Dinge (mit Eigenschaften==Attribute und Fähigkeiten==Methoden). Für den Anfang können gut Dinge aus dem realen Leben herhalten.In deinem Beispiel kannst Du sehr gut eine Klasse "Adresse" erstellen, welche sich um das Einlesen und Ausgeben der Adressdaten kümmert:
Schematisch:
Adresse ======= - name : std::string - vorname : std::string - anschrift : std::string - ort : std::string ------- + erfassen() // Fordert den Benutzer zur Eingabe der Daten auf + ausgabe() // Gibt die Adressdaten auf der Konsole ausGrüße... Heiko
PS.: Referenzen sind eine feine Sache
