Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Klasse Punkt

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.05.2006, 11:30 Uhr
Poffelnator



Aufgabe
Schreiben Sie die drei Module zu dem vorgegebenen Hauptprogramm (siehe
unten). Für jedes Modul muss eine Klasse mit den dazugehörigen Eigenschaften
und Methoden deklariert (Headerdatei) und definiert (cpp-Datei) werden.
Es soll wieder reichlich kommentiert werden (einschließlich Funktions- und
Modulheader)!
1. Modul: Klasse Punkt
Als Eigenschaften werden die Koordinaten des Punktes im zweidimensionalen
Raum gespeichert. Ferner werden neben den Konstruktoren folgende Methoden
definiert:
Set (setzt die Koordinaten eines Punktes; übergeben wird ein Punkt)
Set (setzt die Koordinaten eines Punktes; übergeben werden die Koordinaten)
X (liefert die X-Koordinate des Punktes)
Y (liefert die Y-Koordinate des Punktes)
X (setzt die X-Koordinate des Punktes; übergeben wird X-Koordinate)
Y (setzt die Y-Koordinate des Punktes; übergeben wird Y-Koordinate)
Abstand (liefert den Abstand zwischen 2 Punkten; übergeben wird der 2. Punkt)
Print (gibt die Koordinaten des Punktes aus)

Ich versteh nicht recht wie diese Methoden aussehen sollen?

X (setzt die X-Koordinate des Punktes; übergeben wird X-Koordinate)
Y (setzt die Y-Koordinate des Punktes; übergeben wird Y-Koordinate)

Sollen das jetzt set_Methoden sein der man nur eine Koordinate x bez. y übergibt, oder wie kann man das verstehen? Kann leider erst morgen wieder den Dozenten fragen was er mir damit sagen wollte, wie würdet ihr die Aufgabenstellung verstehen.


Die main Funktion


C++:

#include <stdio.h> //C Standard Input-Output Bibliotheke
#include "Punkt.h" //Header der Klasse Punkt
#include "Linie.h" //Header der Klasse Linie
#include "Dreieck.h" //Header der Klasse Dreieck
//Beginn des mains
int main()
{
//Deklarationen der Variablen und Initialisierungen Mancher
Punkt P1(-2, 7), P2(4, 1), P3(-5, -3);
Linie L1(P1, P2), L2, L3;
Dreieck V1, V2(Punkt(3, 1), P2, P3);
//Anweisungen mit der Klasse Punkt
//Punkte ausgeben
printf("\n\nPunkte:\n*******");
printf("\nPunkt P1: ");
P1.Print();
printf("\nPunkt P2: ");
P2.Print();
P3.Set(6, 2);
printf("\nPunkt P3: ");
P3.Print();
//Aufruf von Punkte-Methoden
printf("\nAbstand zwischen P2 und P3: %6.2f", P2.Abstand(P3));
printf("\nPunkt P1: x = %6.2f; y = %6.2f", P1.X(), P1.Y());
//Anweisungen mit der Klasse Linie
printf("\n\n===========================================================
"
);
printf("\n\nLinien:\n*******\n");
printf("Linie L1:\n");
L1.Print();
printf("\nStartpunkt der Linie L1: ");
L1.Start().Print();
printf("\nEndpunkt der Linie L1: ");
L1.Ende().Print();
printf("\nLänge der Linie L1: %6.2f",L1.Laenge());
L2.Set(P3, P1);
L3.Set(0, 0, 5, 4);
printf("\n\nLinie L2:\n");
L2.Print();
printf("\nLänge der Linie L2: %6.2f",L2.Laenge());
printf("\n\nLinie L3:\n");
L3.Print();
//Anweisungen mit der Klasse Dreieck
printf("\n\n===========================================================
"
);
printf("\n\nDreiecke:\n*********\n");
printf("Dreieck V1:\n");
P1.X(0); P1.Y(0);
P2.X(1); P2.Y(0);
P3.Set(0, 1);
V1.Set(P1, P2, P3);
V1.Print();
L1 = V1.GetLinie1();
printf("\nDie erste Linie (P1-P2):\n");
L1.Print();
printf("\nUmfang des Dreiecks: %6.2f",V1.Umfang());
printf("\n\nDreieck V2:\n");
V2.Print();
printf("\nUmfang des Dreiecks: %6.2f",V2.Umfang());
printf("\n\n");
return 0;
}



Dieser Post wurde am 16.05.2006 um 11:30 Uhr von Poffelnator editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.05.2006, 11:42 Uhr
0xdeadbeef
Gott
(Operator)


Whee, und wieder ein Lehrer, der C++ als C mit Klassen begreift. Wundervoll, wie uns die 60er auch weiterhin verfolgen. Unabhängig von der Aufgabe würd ich dir raten, dir ein gutes Buch zu C++ zuzulegen, sonst schreibste in 10 Jahren noch printf in C++-Programme und denkst, templates hätten was mit Templern zu tun oder so.

Wie dem auch sei, Ich denke, es geht hierbei vor allem um Überladung, also dass Methoden den gleichen Namen haben können, wenn sie sich in der Signatur unterscheiden. Ich geb mal zwei vor:

C++:
// Punkt.h

class Punkt {
public:
  int X() const;
  void X(int x);
private:
  int x_;
};

// Punkt.cpp

int Punkt::X() const { return x_; }
void Punkt::X(int x) { x_ = x; }


eigentlich also ziemlich einfach.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 16.05.2006 um 11:42 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.05.2006, 12:26 Uhr
Poffelnator



Ist schon klar, dass hier was überladen werden soll. Ich versteh nur nicht ganz warum ich hier mehrere set Methoden habe in der nur die Koordinaten übergeben werden. Einmal als Paar und das zweite mal als einzelne Koordinate. Oder eben ob da ein Verständnisproblem der Aufgabe vorhanden ist. Werde es erst mal so machen und dann eben sehen wie er es haben wollte.

Weiß jetzt schon, dass Templates nichts mit Templern zu tun hat. :-) Finde es auch nicht so gut, dass er immer printf verwendet. Ich find es ist einfach schlechter zu lesen (was mich daran stört) Kann es vielleicht sein, dass die Laufzeit von printf besser als von cout ist?

Ich studiere Maschinenbau, da wird eh meistens c verwendet. (Mikrokontroller) Das Problem wird sein, dass auf dem Lehrplan c++ steht. Ich kann mir gut vorstellen, dass unser angehender Doktor selbst schnell erst ein c++ Kurs besuchen musste.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.05.2006, 12:57 Uhr
ao

(Operator)



Zitat von Poffelnator:
Ich versteh nur nicht ganz warum ich hier mehrere set Methoden habe in der nur die Koordinaten übergeben werden.


C++:
Punkt p (1, 2); // Konstruktion
p.Set (3, 4); // Setzt den Punkt auf (3, 4)
p.X (5); // Setzt nur die X-Koordinate, d.h. p ist jetzt (5, 4).



Zitat:
Kann es vielleicht sein, dass die Laufzeit von printf besser als von cout ist?

Kann man pauschal nicht sagen, das kommt auf die Implementierungen an. Das spielt aber auch keine Rolle, denn in der Praxis - nicht im Lehrbetrieb - sollte kein Programm nennenswert viel Zeit mit printf oder cout verbringen.

Zitat:
Ich studiere Maschinenbau, da wird eh meistens c verwendet. (Mikrokontroller) Das Problem wird sein, dass auf dem Lehrplan c++ steht.

... also müssen Klassen her, koste es was es wolle. Ächz.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.05.2006, 13:24 Uhr
Poffelnator






Zitat:

C++:
Punkt p (1, 2); // Konstruktion
p.Set (3, 4); // Setzt den Punkt auf (3, 4)
p.X (5); // Setzt nur die X-Koordinate, d.h. p ist jetzt (5, 4).



Danke, jetzt hats klick gemacht.


Zitat:

... also müssen Klassen her, koste es was es wolle. Ächz.



ja, sieht so aus.

Dieser Post wurde am 16.05.2006 um 13:25 Uhr von Poffelnator editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: