// Electrical quantities classes -- Potential package electric; public class Epotential { double value; public Epotential(double volts) {value = volts;} public Epotential(Epotential x) {this(x.value);} public Epotential() {this(0);} // Epotential arithmetic operations (additive pattern) // -------------------------------- public Epotential addSet(Epotential rs) {value+=rs.value; return this;} public Epotential subSet(Epotential rs) {value-=rs.value; return this;} public Epotential mpySet(double rs) {value*=rs; return this;} public Epotential divSet(double rs) {value/=rs; return this;} public Epotential modSet(double rs) {value%=rs; return this;} public Epotential modSet(Epotential rs) {value%=rs.value; return this;} public Epotential minus() {return new Epotential(-value);} public Epotential add(Epotential rs) {return new Epotential(this).addSet(rs);} public Epotential sub(Epotential rs) {return new Epotential(this).subSet(rs);} public Epotential mpy(double rs) {return new Epotential(this).mpySet(rs);} public Epotential div(double rs) {return new Epotential(this).divSet(rs);} public double div(Epotential rs) {return value / rs.value;} public Epotential mod(double rs) {return new Epotential(this).modSet(rs);} public Epotential mod(Epotential rs) {return new Epotential(this).modSet(rs);} public boolean equals (Epotential rs) {return value==rs.value;} public boolean lessThan (Epotential rs) {return value =rs.value;} // Mixed arithmetic operations public Epower mpy(Ecurrent i) {return new Epower(value*i.value);} public Eresistance div(Ecurrent i) {return new Eresistance(value/i.value);} public Ecurrent div(Eresistance r) {return new Ecurrent(value/r.value);} // Conversion to external representation public String toString() {return value + " volts";} }