Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Klasse Tageszeit

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
06.05.2007, 23:23 Uhr
Spion




C++:
Tageszeit-Quellcode_V2.doc Seite 1
// Anwendung "Tageszeit"
// Struktur-Datenobjekte erzeugen,
// ihre Membervariablen setzen und drucken.
#include <iostream>
using std::cout; using std::endl;
// Deklaration des neuen Typs Time
// als Datenstruktur
struct Time {
int hour; // 0-23
int minute; // 0-59
int second; // 0-59
};
void print24hFormat( Time ); // Fkt-Prototyp
void print12hFormat( Time ); // Fkt-Prototyp
int main() {
// Die folgenden Anweisungen müssen geändert werden, wenn statt
// struct Time der Datentyp class Time verwendet wird
// Deklaration einer Strukturvariablen des neuen Typs
struct Time begin; //ohne Initialisierung!
// Membervariable initialiseren
begin.hour = 18;
begin.minute = 5;
begin. second = 0;
cout << "Abendessen ist um ";
print24hFormat( begin ); cout << " im 0-24h Format,\nbzw. ";
print12hFormat( begin ); cout << " im 0-12h Format.\n";
// Anwender setzt Membervariable auf ungültige Werte
struct Time crazyTime;
crazyTime.hour = 29;
crazyTime.minute = 73;
crazyTime.second = 105;
cout << "\nVerrückte Zeit: ";
print24hFormat( crazyTime );
cout << endl;
// Noch ein Time-struct erzeugen
struct Time end = { 20, 14, 10 };
// ----------------------------------------------------------------------
// Die folgenden Anweisungen kompilieren nur, wenn in der
// Klasse Time die geforderten Erweiterungen implementiert sind.
Time end;
end.setHMS( 24, 14, 10 );
int durationInSeconds = getDurationInSeconds( begin, end );
cout << "Das Abendessen dauert " << durationInSeconds << " Sekunden." << endl;
durationInSeconds = end.getTimeInSeconds() - begin.getTimeInSeconds();
Time duration;
duration.setS( durationInSeconds );
cout << "Das Abendessen dauert ";
duration.print24hFormat();
cout << endl;
return 0;
} // end main
Tageszeit-Quellcode_V2.doc Seite 2
// Die nachfolgenden Funktionsdefinitionen sind in Methodendefinitionen
// der Klasse Time umzuwandeln.
void print24hFormat ( Time t ) { // Zeit im 0-24h Format ausgeben
cout << ( t.hour < 10 ? "0" : "" ) << t.hour << ":"
<< ( t.minute < 10 ? "0" : "" ) << t.minute << ":"
<< ( t.second < 10 ? "0" : "" ) << t.second;
}
void print12hFormat ( Time t ) { // Zeit im 0-12h Format ausgeben
cout << (( t.hour==0 || t.hour==12 ) ? 12 : t.hour % 12 )
<< ":" << ( t.minute < 10 ? "0" : "" ) << t.minute
<< ":" << ( t.second < 10 ? "0" : "" ) << t.second
<< ( t.hour < 12 ? " AM" : " PM" );
}




AUFGABE:

Klasse - Tageszeit
In der Vorlesung wurde der benutzerdefinierte Datentyp Time als Datenstruktur deklariert und in der
Anwendung "Tageszeit" verwendet. Ändern Sie die Anwendung "Tageszeit" in eine objekt-orientierte
Anwendung:
a) Beginnen Sie den Entwurf mit dem UML-Klassendiagramm.
b) Deklarieren und implementieren Sie danach parallel zur Anwendung die Klasse Time mit dem
Klassengenerator von Visual C++. Stellen Sie sicher, dass Sie jederzeit ein lauffähiges
Anwendungssystem haben.
c) Implementieren Sie die Methoden print24hFormat, print12hFormat mit der gleichen Funktionalität
wie in der Anwendung "Tageszeit".
d) Ergänzen Sie die Klasse Time, um die Methode getTimeInSeconds und die Methode setS, die die
seit Mitternacht verstrichene Zeit in Sekunden übergeben bekommt, daraus die aktuelle Zeit
errechnet und in den Membervariablen ablegt, und die Methode void setHMS(int h, int m, int s)
e) Erweitern Sie Ihr Projekt um die Funktion int getDurationInSeconds(Time begin, Time end).
Überlegen Sie, in welchen Dateien der Quellcode enthalten sein sollte. Fügen Sie Zugriffsmethoden
wie z.B. int getHour() hinzu, falls erforderlich.
f) Erweitern Sie die Klasse um eine Funktionalität Ihrer Wahl.
Besonderheiten der Klasse Zeit: In der statischen Membervariablen numberOfTimeObjects erfasst
die Klasse die Anzahl der vom Programm verwalteten Time-Objekte. Bei jedem Erzeugen und Zerstören
eines Time-Objektes gibt dieses die aktualisierte Objektanzahl auf dem Bildschirm aus.
Hinweis: Dafür, dass scheinbar mehr Objekte zerstört als erzeugt werden, gibt es (später in der
Vorlesung) eine einfache Erklärung.

Ich danke euch für jede Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.05.2007, 09:33 Uhr
stephanw
localhorst


Und wie lautet jetzt konkret Deine Frage ?
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.05.2007, 16:21 Uhr
Karldin Shinowa
Professional Noob


Er will dass wir seine Hausaufgabe machen. obwohl ich mich manchmal frag ob irgendein Lehrer den Standard kennt...


Zitat:
struct Time begin;
is eindeutig C oder?

Ich plediere dafür dass wir ein Moto einführen: Fun-soft.de - Mach deine Hausaufgaben doch selbst....

Aber zumindest ne Starthilfe geben wir gerne:



Code:
class Time
{
    public: //öffentliche Funktionen hier zB: print24hFormat, Konstruktor

    private: //Variablen hier
       static int numberOfTimeObjects;
       int hours;
       int minutes;
       int seconds;

.....
};



--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 07.05.2007 um 18:29 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.05.2007, 18:32 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


struct Time ist legitim, da ist halt default public und nicht default private - als Lehrer würde ich wohl auch gleich class nehmen um die wichtige Trennung public/private zu verdeutlichen.

Ansonsten soll man das ja von C nach C++ überführen (wenn man sich das korrekt durchliest)

Aber wie so oft: WIR SIND KEIN HAUSAUFGABENDIENST - Konkrete Fragen erzeugen Konkrete Anworten.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: