|
|
#ifndef LENGTH_H #define LENGTH_H #include "SelfTestingObject.h" namespace NobelNS { class LengthRep; /** Pituuden mahdolliset mittayksiköt. M ja CM ovat metri ja senttimetri, * In ja In10th tuuma ja tuuman kymmenesosa vastaavasti. */ 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=0, LengthUnit unit=CM); /** 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 Tue Mar 20 23:14:05 2001, using kdoc 2.0a53. |