#ifndef LENGTH_H
#define LENGTH_H
#include "SelfTestingObject.h"
namespace Nobel {
class LengthRep;
/** Pituuden mahdolliset mittayksiköt. */
enum LengthUnit { M, CM, In, In10th };
/** Itsekonvertoiva pituusyksikkö. Length-oliot osaavat kertoa pituutensa
* eri mittayksiköissä.
*/
class Length : public SelfTestingObject {
public:
/** Hae pituus.
* @param unit haluttu mittayksikkö
* @return pituus pyydetyissä yksiköissä
*/
double getLength(LengthUnit unit) const;
/** Hae pituuden esitys tekstinä.
* @return pituus senttimetreinä
*/
virtual std::string asString() const;
/** Tarkista olion eheys.
* @return olion eheys
*/
virtual bool invariant() const;
/** Aseta pituus.
* @param newLength uusi pituus
* @param unit pituuden mittayksikkö
* @return viite muutettuun olioon
*/
Length& setLength(double newLength, LengthUnit unit);
/** Yhteenlaskuoperaattori sijoituksella.
* @param a yhteenlaskettava pituus
* @return viite muutettuun olioon
*/
Length& operator+=(const Length& a);
/** Vähennyslaskuoperaattori sijoituksella.
* @param a vähennettävä pituus
* @return viite muutettuun olioon
*/
Length& operator-=(const Length& a);
/** Kertolaskuoperaattori sijoituksella.
* @param a luku, jolla pituus kerrotaan
* @return viite muutettuun olioon
*/
Length& operator*=(double a);
/** Jakolaskuoperaattori sijoituksella.
* @param a luku, jolla pituus jaetaan
* @return viite muutettuun olioon
*/
Length& operator/=(double a);
/** Konstruktori.
* @param length pituus
* @param unit mittayksikkö
*/
Length(double length, LengthUnit unit);
/** Kopiokonstruktori.
* @param a kopioitava
*/
Length(const Length& a);
/** Vaihto-operaatio.
* @param a vaihdettava
*/
virtual void swap(Length& a);
/** Sijoitusoperaattori.
* @param a sijoitettava
*/
Length& operator=(const Length& a);
/** Destruktori. */
virtual ~Length();
private:
/** Pituuden sisäinen esitys. */
LengthRep* rep;
};
/** Yhteenlaskuoperaattori pituuksille.
* @param a ensimmäinen yhteenlaskettava
* @param b toinen yhteenlaskettava
* @return summa
*/
Length operator+(const Length& a, const Length& b);
/** Vähennyslaskuoperaattori pituuksille.
* @param a se, josta vähennetään
* @param b se, joka vähennetään
* @return erotus
*/
Length operator-(const Length& a, const Length& b);
/** Kertolaskuoperaattori. Pituuden kertominen liukuluvulla.
* @param a pituus
* @param b liukuluku, jolla pituus kerrotaan
* @return tulo
*/
Length operator*(const Length& a, double b);
/** Jakolaskuoperaattori. Pituuden jakaminen liukuluvulla.
* @param a pituus
* @param b liukuluku, jolla pituus jaetaan
* @return jaettu pituus
*/
Length operator/(const Length& a, double b);
/** Pienempi-kuin operaattori pituuksille.
* @param a vasen puoli
* @param b oikea puoli
* @return a < b
*/
bool operator<(const Length& a, const Length& b);
/** Yhtäsuuruusvertailu pituuksille.
* @param a vasen puoli
* @param b oikea puoli
* @return a==b
*/
bool operator==(const Length& a, const Length& b);
}
#endif
| Generated by: hoppq@ilenkone on Thu Mar 1 15:43:18 2001, using kdoc 2.0a50. |