Source: ./Nobel/RobotVelocity.h
|
|
|
|
#ifndef ROBOTVELOCITY_H
#define ROBOTVELOCITY_H
#include <string>
#include <stdexcept>
#include "SelfTestingObject.h"
namespace Nobel {
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 Thu Mar 1 15:43:18 2001, using kdoc 2.0a50. |