Source: ./Nobel/RobotVelocity.h


Annotated List
Files
Globals
Hierarchy
Index
#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.