questions about units


I would like to know if the following statements about
terminologies used in VisAD unit system are correct:

* "quantity name" is something like "length"
* "unit name" is like "meter"
* for BaseUnit "unit symbol" is "unit identifier", and is like "m"
* "identifier" for derived unit is the same as the BaseUnit if
  derived from one BaseUnit otherwise "null", unless assigned
* "unit defination" is "unit identifier" for BaseUnit and
* "unit defination" is composed by getIdentifier() for Derived
and ScaledUnit

Say if I creat a unit

and another unit

bar= DerivedUnit({SI.meter},{2});

Are foo and bar actually the same class objects? If yes,
why does DerivedUnit.multiply() return Unit instead of
DerivedUnit? If not, why not?
What should I do if I want to give foo an identifier?
Why doesn't the Unit class have a method to set identifier?

More generally, I would like to know why are BaseUnit, DerivedUnit
and ScaledUnit on the same level of inheritance hierarchy?
Conceptually a BaseUnit is a DerivedUnit that has undergon
zero/no derivation, therefore can be treated "a kind
of", or "a subset of", or a subclass of what is now called
the DerivedUnit, and ScaledUnit can be also seen as a
special case of DerivedUnit. The Developers Guide (2.5 years
old) doesn't mention what is the thinking behind the DerivedUnit
and ScaledUnit.

Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.