Fraction class fraction int num den fraction int

  • Slides: 7
Download presentation
Fraction class fraction { int num, den; fraction (int a, int b){ int common

Fraction class fraction { int num, den; fraction (int a, int b){ int common = gcd(a, b); num=a/common; den=b/common; } fraction (int a){ num=a; den=1; } fraction add(fraction f){ int num = this. num*f. den + f. num*this. den; int den = this. den*f. den; return new fraction(num, den); } fraction subtract(fraction f){ int num = this. num*f. den - f. num*this. den; int den = this. den*f. den; return new fraction(num, den); } fraction multiply(fraction f){ int num = this. num*f. num; int den = this. den*f. den; return new fraction(num, den); }

fraction divide(fraction f){ int num = this. num*f. den; int den = this. den*f.

fraction divide(fraction f){ int num = this. num*f. den; int den = this. den*f. num; return new fraction(num, den); } contd fraction power(int n){ int num = intpower(this. num, n); int den = intpower(this. den, n); return new fraction(num, den); } boolean is. Equal(fraction f){ return (this. num==f. num)&(this. den==f. den); } boolean is. Less(fraction f){ return (this. num*f. den < f. num*this. den); } boolean is. Greater(fraction f){ return (this. num*f. den > f. num*this. den); }

contd void printfraction(){ System. out. println(this. num+"/"+this. den); } intpower(int a, int n){ if

contd void printfraction(){ System. out. println(this. num+"/"+this. den); } intpower(int a, int n){ if (n==0) return 1; int result = 1; for (int i=1; i<=n; i++) result = result * a; return result; } int gcd(int m, int n){ if (m<0) m=-m; if (n<0) n=-n; while (m!=n){ if (m>n) m=m-n; else n=n-m; } return m; } }

class fractiondemo{ public static void main(String args[]){ fraction f 1 = new fraction(1, 2);

class fractiondemo{ public static void main(String args[]){ fraction f 1 = new fraction(1, 2); fraction f 2 = new fraction(2, 4); fraction f 3 = new fraction(3); contd System. out. print("Fraction f 1: "); f 1. printfraction(); System. out. print("Fraction f 2: "); f 2. printfraction(); System. out. print("Fraction f 3: "); f 3. printfraction(); fraction f 4 = f 1. add(f 3); f 4. printfraction(); f 4 = f 1. subtract(f 3); f 4. printfraction(); f 1. multiply(f 3). printfraction(); f 1. divide(f 3). printfraction(); f 1. power(3). printfraction(); System. out. println(f 1. is. Less(f 3)); System. out. println(f 1. is. Equal(f 2)); System. out. println(f 1. is. Greater(f 3)); } }

Access Control // Public vs private access. class My. Class { private int alpha;

Access Control // Public vs private access. class My. Class { private int alpha; // private access public int beta; // public access int gamma; // default access (essentially public) /* Methods to access alpha. It is OK for a member of a class to access a private member of the same class. */ void set. Alpha(int a) { alpha = a; } int get. Alpha() { return alpha; } } class Access. Demo { public static void main(String args[]) { My. Class ob = new My. Class(); /* Access to alpha is allowed only through its accessor methods. */ ob. set. Alpha(-99); System. out. println("ob. alpha is " + ob. get. Alpha()); // You cannot access alpha like this: ob. alpha = 10; // Wrong! alpha is private! // These are OK because beta and gamma are public. ob. beta = 88; ob. gamma = 99; } }

Access control example /* This class implements a "fail-soft" array which prevents runtime errors.

Access control example /* This class implements a "fail-soft" array which prevents runtime errors. */ class Fail. Soft. Array { private int a[]; // reference to array private int errval; // value to return if get() fails public int length; // length is public /* Construct array given its size and the value to return if get() fails. */ public Fail. Soft. Array(int size, int errv) { a = new int[size]; errval = errv; length = size; } // Return value at given index. public int get(int index) { if(ok(index)) return a[index]; return errval; } // Put a value at an index. Return false on failure. public boolean put(int index, int val) { if(ok(index)) { a[index] = val; return true; } return false; } // Return true if index is within bounds. private boolean ok(int index) { if(index >= 0 & index < length) return true; return false; } }

// Demonstrate the fail-soft array. class FSDemo { public static void main(String args[]) {

// Demonstrate the fail-soft array. class FSDemo { public static void main(String args[]) { Fail. Soft. Array fs = new Fail. Soft. Array(5, -1); int x; contd. // show quiet failures System. out. println("Fail quietly. "); for(int i=0; i < (fs. length * 2); i++) fs. put(i, i*10); for(int i=0; i < (fs. length * 2); i++) { x = fs. get(i); if(x != -1) System. out. print(x + " "); } System. out. println(""); // now, handle failures System. out. println("n. Fail with error reports. "); for(int i=0; i < (fs. length * 2); i++) if(!fs. put(i, i*10)) System. out. println("Index " + i + " out-of-bounds"); for(int i=0; i < (fs. length * 2); i++) { x = fs. get(i); if(x != -1) System. out. print(x + " "); else System. out. println("Index " + i + " out-of-bounds"); } } }