|
|
#ifndef ROBOTVELOCITY_H #define ROBOTVELOCITY_H #include <string> #include <stdexcept> #include "SelfTestingObject.h" namespace NobelNS { class RobotVelocityRep; /** Käytetyt nopeusyksiköt. */ enum VelocityUnit { Ms, CMs, IN10THs }; /** Itsekonvertoiva nopeusyksikkö. Luokan oliot osaavat itse konvertoida * itsensä toiseen mittayksikköön. Luokan olioita luotaessa ja * muutettaessa tarkistetaan, että nopeus on robotin sallimissa rajoissa. * Robotin nopeus rajoittuu alueelle [0, 400[ tuuman kymmenesosaa * sekunnissa (400 tuuman kymmenesosaa = 101.6 senttimetriä). */ class RobotVelocity : public SelfTestingObject { public: /** Hae nopeus. * @param unit haluttu nopeusyksikkö * @return nopeus */ double getVelocity(VelocityUnit unit) const; /** Muodosta merkkijonoesitys. * @return nopeus senttimetreinä sekunnissa */ virtual std::string asString() const; /** Tarkista invariantti. * @return invariantin paikkaansapitävyys */ virtual bool invariant() const; /** Aseta nopeus. * @param vel uusi nopeus * @param unit nopeuden yksikkö * @return viite muutettuun olioon * @exception std::range_error */ RobotVelocity& setVelocity(double vel, VelocityUnit unit) throw (std::range_error); /** Konstruktori. * @param velocity nopeus * @param unit nopeuden mittayksikkö * @exception std::range_error */ RobotVelocity(double velocity, VelocityUnit unit) throw (std::range_error); /** Kopiokonstruktori. * @param r kopioitava olio */ RobotVelocity(const RobotVelocity& r); /** Vaihto-operaatio. * @param r olio, jonka kanssa vaihdetaan */ virtual void swap(RobotVelocity& r); /** Sijoitusoperaattori. * @param r sijoitettava * @return viittaus muutettuun olioon */ RobotVelocity& operator=(const RobotVelocity& r); /** Destruktori. */ virtual ~RobotVelocity(); private: /** Osoitin sisäiseen esitysmuotoon. */ RobotVelocityRep* rep; }; } #endif
Generated by: hoppq@ilenkone on Tue Mar 20 23:14:05 2001, using kdoc 2.0a53. |