|
Java. объектно-ориентированное программирование с интерфейсамиРазрыв между декларацией типа данных и его реализацией не является чем-то новым. Например, в спецификации С оговорено, что реализация базовых типов зависит от платформы. А реализация плавающих чисел даже на одной платформе всегда зависела от наличия сопроцессора. Добавим два варианта реализации. /* DblNumber.java ---------------------------------------------------- (8< * * Реализация типа INumber через double. * * -------------------------------------------------------------------- */ class DblNumber implements INumber { double d; public DblNumber(double ip) { d = ip; } public void setValue(String s) { d = (new Double(s)).doubleValue(); } public INumber add(INumber n) { d += (new Double(n.toString())).doubleValue(); return this; } public INumber mul(INumber n) { d *= (new Double(n.toString())).doubleValue(); return this; } public String toString() { return (new Double(d)).toString(); } } // (8< /* IntNumber.java ---------------------------------------------------- (8< * * Реализация типа INumber через int. * * -------------------------------------------------------------------- */ class IntNumber implements INumber { int i; public IntNumber(int v) { i = v; } public void setValue(String s) { String sw=s; int l = sw.indexOf('.'); if (l > 0) sw = sw.substring(0, l); i = (new Integer(sw)).intValue(); } public INumber add(INumber n) { String sw = n.toString(); int l = sw.indexOf('.'); if (l > 0) sw = sw.substring(0, l); i += (new Integer(sw)).intValue(); return this; } public INumber mul(INumber n) { String sw = n.toString(); int l = sw.indexOf('.'); if (l > 0) sw = sw.substring(0, l); i *= (new Integer(sw)).intValue(); return this; } public String toString() { return (new Integer(i)).toString(); } } // (8<Проверим результат: /* TestNumber.java --------------------------------------------------- (8< * * Тестирование типа INumber. * * -------------------------------------------------------------------- */ public class TestNumber { public static void main(String[] args) { INumber i1 = new IntNumber(22); INumber i2 = new DblNumber(11.2); INumber i3 = new DblNumber(3.4); CalcNumber cn = new CalcNumber(); cn.calculation(i1, i2, i3); } } // (8< Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Продолжение статьи: ч.7 Продолжение статьи: ч.8 Продолжение статьи: ч.9 Другие статьи по теме: - Java-приложение: заглянем внутрь- Java: управление ресурсами - Java: русские буквы и не только... - почтовая программа - своими руками! - революция java |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |