//상태로써 분자와 분모값을 가지고 있음
//기능으로써 다른 Fraction객체와의 사칙연산 기능
//자기자신을 약분해서 기약분수로 만드는 기능
public class Fraction {
private int numerator;
private int denominator;
public Fraction(){
numerator = 0;
denominator = 1;
}
public int getNumerator() {
return numerator;
}
public void setNumerator(int numerator) {
this.numerator = numerator;
}
public int getDenominator() {
return denominator;
}
public void setDenominator(int denominator) {
this.denominator = denominator;
}
public Fraction(int numerator, int denominator) {
super();
this.numerator = numerator;
this.denominator = denominator;
}
public String toString() {
if(denominator < 0)
return -numerator + "/" + -denominator;
else
return numerator + "/" + denominator;
}
//약분 -> 분자와 분모의 최대공약수를 찾아서 두수를 각각 나눠버림
public void reduction(){
int gcd = getGCD(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
}
private int getGCD(int x, int y){
while(y != 0){
int r = x % y;
x = y;
y = r;
}
return x;
}
//덧셈 -> 통분해서 분자끼리 합
public Fraction add(Fraction f){
int newDenominator = denominator*f.getDenominator();
int newNumerator = numerator*f.getDenominator()
+ f.getDenominator()*denominator;
return new Fraction(newNumerator, newDenominator);
}
//뺄셈 -> 통분해서 분자끼리 뺌
public Fraction subtract(Fraction f){
int newDenominator = denominator*f.getDenominator();
int newNumerator = numerator*f.getDenominator()
- f.getDenominator()*denominator;
return new Fraction(newNumerator, newDenominator);
}
//곱셈 -> 분보끼리 분자끼리 곱
public Fraction mult(Fraction f){
int newDenominator = denominator*f.getDenominator();
int newNumerator = numerator*f.getNumerator();
return new Fraction(newNumerator, newDenominator);
}
//나눗셈 ->분자 = 분모*분자, 분모 = 분자*분모
public Fraction divide(Fraction f){
int newDenominator = denominator*f.getNumerator();
int newNumerator = numerator*f.getDenominator();
return new Fraction(newNumerator, newDenominator);
}
}
public class FractionTest {
public static void main(String[] args) {
Fraction f1 = new Fraction(25,30);
Fraction f2 = new Fraction(3,18);
Fraction f3 = f1.add(f2);
Fraction f4 = f1.subtract(f2);
Fraction f5 = f1.mult(f2);
Fraction f6 = f1.divide(f2);
f1.reduction();
f2.reduction();
f3.reduction();
f4.reduction();
f5.reduction();
f6.reduction();
System.out.println("f1값 : " + f1);
System.out.println("f2값 : " + f2);
System.out.println("덧셈값 : " + f3);
System.out.println("뺄셈값 : " + f4);
System.out.println("곱셈값 : " + f5);
System.out.println("나눗셈값 : " + f6);
}
}