Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Klassen + Konstruktoren + Überladen

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
18.08.2002, 16:29 Uhr
uTaNG



Hi, hab wiedermal n kleines Prob möchte es gerne bis MI fertig haben und fange heute Abend damit an... Es soll zur festigung der OOP Elemente sein ...

Es soll eine Klasse definiert werden,die den Längen- und Breitengrad eines geographischen Ortes speichert.

Für diese Klasse soll
+ ein Konstruktor (Vorbelegen mit beliebiegen Werten)
+ eine Methode zur Überladung des + Operators
+ eine Ausgabefunktion zur Überladung des += Operators verhanden sein.

Desweiteren:
+ eine Headerdatei für die Deklarationen der Klasse,
+ eine Datei für die Definition der Klasse
+ und ein Programm (Datei mit main-Funktion).

(testen der erstelten Methoden in der main-Funktion)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.08.2002, 20:00 Uhr
uTaNG



Ich habe das mal so n bissel versucht, habe aber noch Probleme mit:

+ der Übersichtlichkeit bei der Ausgabe
+ eine Methode zur Überladung des + Operators
+ eine Ausgabefunktion zur Überladung des += Operators

würde mich freuen wenn ihr mir bei der Optimierung und der implementierung der beiden Methoden zum Überladen der oben genannten Operatoren behilflich seien könnt.


C++:
// ---------------------------------------------------
// geo.h
// Anlegen einer einfachen Klasse.
// ---------------------------------------------------
#ifndef _GEO_
#define _GEO_

#include <string>
using namespace std;

class Geo
{
   private:
     int laengeng;                // Längengrad
     string oname;                  // Ortsname
     int breiteng;                // Breitengrad

   public:
     Geo( int laengeng=0, const string& oname="noname",
              int breiteng=0);
     ~Geo();
     void print();

     const string& getOName() const { return oname; }
     int           getLaengeng()   const { return laengeng; }
     int           getBreiteng()   const { return breiteng; }
    
     bool setOName( const string& l)
     {
        if( l.size() < 1)      // Kein leerer Name
          return false;
        oname = l;
        return true;
     }
    
     void setLaengeng( int n)
     {                         // Keine negative Gradzahl
         laengeng = n > 0 ? n : 0;  
     }
    
     void setBreiteng( int b)
     {                         // Keine negative Gradzahl
         breiteng = b > 0 ? b : 0;  
     }
};

#endif   // _GEO_


// ---------------------------------------------------
// geo.cpp
// Definition der Methode zur Überladung des + Operators
// und des += Operators (noch hilfe bedürftig ...)
// Konstruktor und Destruktor zeigen Aufrufe an.
// ---------------------------------------------------

#include "geo.h"         // Definition der Klasse

#include <iostream>
#include <iomanip>
using namespace std;

// globaler Zähler für die Objekte:
//int anzahl = 0;

// Definition des Konstruktors und Destruktors:

Geo::Geo( int laengeng, const string& oname, int breiteng)
{
   setLaengeng(laengeng);   setOName(oname);   setBreiteng(breiteng);
   //++anzahl;
   cout << "Es werden die Koordinaten für den Ort " << oname
        << " angelegt."
        << endl;
}
Geo::~Geo()
{
   cout << "Die Koordinaten für den Ort " << oname
        << " werden zerstört."
        << endl;
}

// Die Methode print() zeigt den Ort auf dem Bildschirm an.
void Geo::print()
{
   long savedFlags = cout.flags();    // Flags von cout merken
   cout << fixed  
        << "~~~     o  Koordinaten  o     ~~~\n\n"
        << "Orts-Daten:\n"
        << "  Orts-Name ........:  " << oname    << '\n'
        << "  Laengengrad ......:  " << laengeng << '\n'
        << "  Breitengrad ......:  " << breiteng << '\n'
        << "__________________________________" << endl;
   cout.flags(savedFlags);      // Alte Flags wieder herstellen

   cout << "  --- Weiter mit der Return-Taste --- ";
   cin.get();
}


// ---------------------------------------------------
// geo_1.cpp
// Die Klasse Geo testen.
// ---------------------------------------------------

#include "geo.h"      // Definition der Klasse

#include <iostream>
#include <string>
using namespace std;

void test();

// -- Objekte der Klasse Geo erzeugen und zerstören --

Geo geo1( 20,"Berlin", 53);

int main()
{
   cout << "\nDie erste Anweisung in main().\n" << endl;
  
   Geo geo2( 55,"Erfurt", 19);

   geo1.print();
   geo2.print();

   Geo& Ort = geo2;
  
   Ort.setLaengeng( 31);
   Ort.setOName("NeuerOrt");
   Ort.setBreiteng( Ort.getBreiteng() - 10);          

   cout << "\nDie Koordinaten des Neuen Ortes:\n";
   Ort.print();

   cout << "\nDer erste Aufruf von test()." << endl;
   test();

   cout << "\nDer zweite Aufruf von test()." << endl;
   test();

   cout << "\nDie letzte Anweisung in main().\n" << endl;

   return 0;
}

void test()
{
   Geo leip( 58, "Leipzig", 29);
   leip.print();
  
   static Geo dre( 41, "Dresden", 9);
   dre.print();
    
   cout << "\nDie letzte Anweisung in der Funktion test()"
        << endl;
}


möchte mich schon mal für die Hilfe bedanken
 
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: