medbourbei schrieb:
[...] stellen Sie das UML-Klassendiagramm dieser Klasse auf.
[...] Kennzeichnen Sie im ersten Schritt Angaben zu Eigenschaften und Verhaltensweisen im Text mit verschiedenen Farben.
Stellen Sie dann das UML-Klassendiagramm auf. Beachten Sie dabei die folgenden
Namenskonventionen:
· Namen und Bezeichnungen in Englisch
· Großbuchstaben zur Abgrenzung von Namensbereichen sonst Kleinschreibung, z.B. getName,
ArrayIndex
· Bezeichnung von Methoden mit Verben, z.B. getName, setName, print
· Bezeichnung von Attributen und Klassen mit Substantiven
· Verwendung von Präfixen zur Kennzeichnung spezieller Bezeichnungen [...]
sicher ned.
#include <iostream>
double const pi = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798;
class robovac_t
{
friend std::ostream& operator<< ( std::ostream &os, robovac_t const &robovac );
private:
float diameter; // fuer die Aufgabe voellig sinnfrei.
double x;
double y;
double heading;
public:
robovac_t( double const x, double const y, double const heading )
: x( x ), y( y ), heading( heading ) {}
double get_x() { return x; }
double get_y() { return y; }
double get_heading() { return heading; }
void turn( double const angle ) { heading += angle; }
void move( double distance )
{
x += ( cos( heading ) * distance );
y += ( sin( heading ) * distance );
}
};
std::ostream& operator<< ( std::ostream &os, robovac_t const &robovac )
{
os.precision( 3 );
os << "robovac state:\n" << std::fixed
<< "position: " << robovac.x << " | " << robovac.y << '\n'
<< "heading: " << robovac.heading << " (" << robovac.heading * 180. / pi << ")\n";
return os;
}
int main()
{
robovac_t robovac( 0., 0., 0 );
std::cout << robovac << '\n';
robovac.turn( 30. * pi / 180. );
robovac.move( 1. );
std::cout << robovac << '\n';
}