package Übungen.TaschenrechnerGUI;

public class Modell <T extends Number,T2 extends Number> {

	
	public Number add(T z1, T2 z2) {
		
		if (z1 instanceof Integer || z2 instanceof Integer )
			return z1.intValue() + z2.intValue();
		
		else if (z1 instanceof Double || z2 instanceof Double )
			return z1.doubleValue() + z2.doubleValue();
		
		else 
			return z1.floatValue() + z2.floatValue();
	}
	
	public Number sub(T z1, T2 z2) {
		if (z1 instanceof Integer || z2 instanceof Integer)
			return z1.intValue() - z2.intValue();

		else if (z1 instanceof Double || z2 instanceof Double)
			return z1.doubleValue() - z2.doubleValue();

		else
			return z1.floatValue() - z2.floatValue();
		
	}
	
	public Number multi(T z1, T2 z2) {
		if (z1 instanceof Integer || z2 instanceof Integer)
			return z1.intValue() * z2.intValue();

		else if (z1 instanceof Double || z2 instanceof Double)
			return z1.doubleValue() * z2.doubleValue();

		else
			return z1.floatValue() * z2.floatValue();

	}
	
	public Number divid(T z1, T2 z2) throws ArithmeticException {
		if (z2.intValue() == 0) 
			throw new ArithmeticException ("Ungültige division Operation!");
		
		
		if (z1 instanceof Integer || z2 instanceof Integer)
			return z1.intValue() / z2.intValue();

		else if (z1 instanceof Double || z2 instanceof Double)
			return z1.doubleValue() / z2.doubleValue();

		else
			return z1.floatValue() / z2.floatValue();

	}
	

	
}
