class BCDNumber { private boolean bit0, bit1, bit2, bit3; public BCDNumber(boolean bit3, boolean bit2, boolean bit1, boolean bit0) { this.bit0 = bit0; this.bit1 = bit1; this.bit2 = bit2; this.bit3 = bit3; } public boolean getBit0() { return bit0;} public boolean getBit1() { return bit1; } public boolean getBit2() { return bit2; } public boolean getBit3() { return bit3; } } interface DecimalNumber { public int getInt(); } class MyInteger implements DecimalNumber { private int num; public MyInteger(int num) { this.num = num; } public int getInt() { return num; } } class BCDAdapter implements DecimalNumber { private BCDNumber num; public BCDAdapter(BCDNumber num) { this.num = num; } public int getInt() { return (num.getBit0()?1:0) + 2*(num.getBit1()?1:0) + 4 * (num.getBit2()?1:0) + 8 * (num.getBit3() ? 1:0); } } public class DecimalDriver { public static int addDecimalNumbers(DecimalNumber num, DecimalNumber num2) { return num.getInt() + num2.getInt(); } public static void main(String[] args) { BCDNumber num = new BCDNumber(true, false, false, false); BCDAdapter adapter = new BCDAdapter(num); MyInteger num2 = new MyInteger(5); int result = addDecimalNumbers(adapter, num2); System.out.println("Result: " + result); } }