Eigene Klassen & Headerdateien definieren
-
Hallo Leute, wir sollen fürs DV-Praktikum folgende Übung machen, allerdings kann ich mit der Aufgabenstellung nicht viel anfagen
.
Vielleicht könnt ihr mir weiterhlefen.
Gruß Axel
hier die Aufgabe:
Personalien (Name, Alter, Familienstand) einlesen / ausgeben
Teil1:
1. Anlegen eines Programms usemycl.cpp.
Hier wird myclas.h eingebunden, das eine Klasse Myclas enthält.2. Anlegen einer Headerdatei myclass.h, die die Klasse Myclas enthält. Darin sind die Methoden
lesen(Name, Alter, Familienstand) und
anzeigen() deklariert, die die privaten Daten Name, Alter und Familienstand jeweils von der Tastatur lesen bzw. auf dem Bildschirm anzeigen.
Name ist vom Typ string,
Alter int und
Familienstand ist l (=ledig), v(=verheiratet) oder w(=verwitwet)
3. Eine Mehrfacheinbindung soll verhindert werden.
4. Aus dem Hauptprogramm usemycl.cpp werden nach obiger Vorgabe die Daten gelesen und gespeichert bzw. angezeigt.Teil2:
Die Daten sollen in ein 100 Felder Array eingespeichert werden.
Auf Wunsch des Benutzers sollen alle belegten Daten des Arrays nummeriert ausgegeben werden.
-
was genau ist dir da unklar? wenn alles dann
lerne deutsch
lerne klassen ( c++ )mit dem beiden sachen kommste weiter. ich weiss nicht wo dein wissenstand ist bezüglich klassen
aber schreibe eine
myclas.h und myclas.cpp ( nicht myclass.cpp
)
myclass hat die "infos" zu der person
sprich
Name = string
Alter = int
familienstand = z.b. ne typedef struct oder wie auch immer ( char[1] oder wie auch immer )in der .h hast du die fkt
einlesen( ... )
und ausgeben ( ... )in der
usemyclas.cpp ist dein
int main(..) drinnen
hier #include oben die myclas.h
und im int main rufst du die fkt aus myclas aufaber schau dir klassen an! und wie diese in versch. .h und .cpp "verteilt" werden und eingebunden werden
-
DirkDiggler2oo2 schrieb:
Vielleicht könnt ihr mir weiterhlefen.
An welcher Stelle hängst du denn?
Caipi
-
DirkDiggler2oo2 schrieb:
Vielleicht könnt ihr mir weiterhlefen.
wo genau hast probs?
[Edit] viel zu spät
-
das mit den klassen ist mir noch nicht ganz klar, was ist der unterschied zwischen einer klasse und einem objekt?
-
Hallo
Eine Klasse ist sozusagen der Prototyp eines Objekts, ein Objekt ist eine realle Instanz nach den Plänen der Klasse.
bis bald
akari
-
Eine Klasse legt Eigenschaften und Fähigkeiten _für_ ein Objekt fest. Sie ist im Prinzip nur die Vorlage, nach der das Objekt 'gebaut' wird.
Beispiel:
Du hast eine Klasse, nennen wir sie 'Auto'. In dieser Klasse legst du die Eigenschaften und Fähigkeiten fest, die ein Objekt vom Typ Auto (ein Objekt der Klasse Auto) haben soll. Beispielsweise die Eigenschaften Motor, Bremsen, Autofarbe und die Fähigkeiten gasgeben(), bremsen(), und halten(). Die Eigenschaften speicherst du normalerweise in Variablen/Objekten, die Fähigkeiten realisierst du durch Funktionen. Im Zusammenhang mit Klassen werden diese Methoden genannt.Klarer?
Siehe gegebenfalls auch nochmal in einem Buch/Tutorial deiner Wahl.Caipi
-
Diese Beispiele aus der realen Welt sind für einen Anfänger total verwirrend. Von wegen "Mit OO kann man die reale Welt abbilden.". Oh man, was konnte ich mir darunter alles NICHT vorstellen... das ware vor vielen Jahren. Kapiert habe ich es an GUI-Beispielen!
Jeder Knopf (Button) bei Benutzeroberflächen (auch bei Spielen) ist ein Objekt, auf das man klicken kann. Jeder Knopf zeichnet sich selber, mit einer paint()-Methode. Jeder Knopf hat eine Position und Größe (Attribute). Das alles ist in einer Klasse beschrieben:
class button { public: // In paint wird anhand der unten stehenden Attribute // ein Kopf gemalt. void paint(); private: int x, y; // Position des Knopf int b, h; // Breite und Hoehe std::string text; // Text der auf dem Knopf stehen soll. };
Genau das gleiche mit Fenstern. Um ein Fenster zu zeichnen, würde man eine Klasse window definieren.
Alle Instanzen (Objekte) werden dann in einer Liste verwaltet, die geht man dann durch und ruft zu jeder Instanz die paint()-Methode auf.
-
jetzt mir das mit den klassen schon mal klarer, als ist ne klasse quasi das gleiche wie struct.
allerdings steht im 2. teil der augfgabe das man das in einem 100er array speichern soll.
hab das zwar schon mal gemacht, aber dass war total umständlich über tausend pointer und so, gibts da schon irgendwas vordefiniertes von borland bzw. ms das man implementieren kann?
-
DirkDiggler2oo2 schrieb:
jetzt mir das mit den klassen schon mal klarer, als ist ne klasse quasi das gleiche wie struct.
naja, du hast fast recht.
Also ich glaub zwar schon, dass man die Struct-Konstruktion in C++ noch verwenden kann, aber nicht sollte.
Das liegt einfach daran, dass man bei Klassen viel mehr Vorteile, als Bei struct hat.
z.B. hat man bei Klassen Methoden, und bei Strcut nicht sondern nur Elementvariablen. Und dies ist ganz entscheident, weshalb die Klassen entwickelt wurden.Aber im Grundsatz hast du recht. Man kann Klassen und Struct schon vergleichen.
Stellt die Klassen einfach als eine Erweiterung von Struct vor.
-
Hallo
Also ich glaub zwar schon, dass man die Struct-Konstruktion in C++ noch verwenden kann, aber nicht sollte.
Das liegt einfach daran, dass man bei Klassen viel mehr Vorteile, als Bei struct hat.
z.B. hat man bei Klassen Methoden, und bei Strcut nicht sondern nur Elementvariablen. Und dies ist ganz entscheident, weshalb die Klassen entwickelt wurden.Falsch. Man kann mit class nichts machen, was man mit struct nicht auch machen kann. Einziger Unterschied ist private als Standard bei class. Es gibt bereits genug Threads zu diesem Thema.
bis bald
akari
-
akari schrieb:
Hallo
Also ich glaub zwar schon, dass man die Struct-Konstruktion in C++ noch verwenden kann, aber nicht sollte.
Das liegt einfach daran, dass man bei Klassen viel mehr Vorteile, als Bei struct hat.
z.B. hat man bei Klassen Methoden, und bei Strcut nicht sondern nur Elementvariablen. Und dies ist ganz entscheident, weshalb die Klassen entwickelt wurden.Falsch. Man kann mit class nichts machen, was man mit struct nicht auch machen kann. Einziger Unterschied ist private als Standard bei class. Es gibt bereits genug Threads zu diesem Thema.
Auch falsch! Weil der orig. Poster von C-Structs ausgegangen ist! Hat er zwar nicht explizit gesagt, aber wenn er nicht mal weiß was Klassen sind, wird er auch nicht von C++-Structs ausgehen. Oder?
Also, Klassen haben schon viel mehr Vorteile als C-Structs. Aber für einen Anfänger der mit OO nichts anfangen kann (und darum geht es hier und nicht um haarspalterei!) kann man schon sagen: eine C++ Klasse kann erstmal das was ein C-Struct kann. Punkt! Das aber eine Klasse letztendlich vieeeeel mehr kann und doch was anderes ist, sollte man auch sagen.
Der Fall C++-Structs und C++-Klassen ist etwas, das eine C++-Spezialität ist und nicht allgemein was mit OO zu tun hat.