Source: ./Nobel/Length.h


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