public abstract class Material implements Comparable<Material> {
public enum Type {
- LINE,
- SURFACE,
- BULK
+ LINE("Line", UnitGroup.UNITS_DENSITY_LINE),
+ SURFACE("Surface", UnitGroup.UNITS_DENSITY_SURFACE),
+ BULK("Bulk", UnitGroup.UNITS_DENSITY_BULK);
+
+ private final String name;
+ private final UnitGroup units;
+ private Type(String name, UnitGroup units) {
+ this.name = name;
+ this.units = units;
+ }
+ public UnitGroup getUnitGroup() {
+ return units;
+ }
+ @Override
+ public String toString() {
+ return name;
+ }
}
+
+ ///// Definitions of different material types /////
+
public static class Line extends Material {
public Line(String name, double density, boolean userDefined) {
super(name, density, userDefined);
}
- @Override
- public UnitGroup getUnitGroup() {
- return UnitGroup.UNITS_DENSITY_LINE;
- }
-
@Override
public Type getType() {
return Type.LINE;
super(name, density, userDefined);
}
- @Override
- public UnitGroup getUnitGroup() {
- return UnitGroup.UNITS_DENSITY_SURFACE;
- }
-
@Override
public Type getType() {
return Type.SURFACE;
super(name, density, userDefined);
}
- @Override
- public UnitGroup getUnitGroup() {
- return UnitGroup.UNITS_DENSITY_BULK;
- }
-
@Override
public Type getType() {
return Type.BULK;
return userDefined;
}
- public abstract UnitGroup getUnitGroup();
public abstract Type getType();
@Override
public String toString() {
- return getName(getUnitGroup().getDefaultUnit());
+ return this.getName(this.getType().getUnitGroup().getDefaultUnit());
}