Witam. Otóż zabrałem sie za napisanie klasy ktora bedzie wykonywala podstawowe dzialania na ułamkach. Jako że jestem jeszcze początkującym zwracam sie z pytaniem co mozna poprawic/co zrobic lepiej?;)
package klasy;
public class Ulamek {
private double licznik;
private double mianownik;
public Ulamek(double a, double b){
this.licznik=a;
this.mianownik=b;
}
public Ulamek(){}
/**
*Wyswietla dany ulamek w konsoli
*/
public void pisz(){
System.out.println(licznik+"/"+mianownik);
}
/**
*Pobiera wartosc mianownika
*/
public double getMianownik(){
return this.mianownik;
}
/**
*Pobiera wartosc licznika
*/
public double getLicznik(){
return this.licznik;
}
/**
*Ustawia mianownik
*/
public void setMianownik(double m){
this.mianownik=m;
}
/**
*Ustawia licznik
*/
public void setLicznik(double l){
this.licznik=l;
}
}
package klasy;
public class Obliczenia {
public int najmniejszyMianownik(double a,double b){
for (int i = 2; i<1000000; i++) {
if(i%a==0&&i%b==0){
return i;
}
}
return 0;
}
public int najmniejszyDzielnik(double a,double b){
for (int i = 2; i<1000000; i++) {
if(a%i==0&&b%i==0){
return i;
}
}
return 0;
}
public Ulamek skracanie(Ulamek a){
Ulamek wynik = new Ulamek(a.getLicznik(),a.getMianownik());
do {
if (najmniejszyDzielnik(wynik.getLicznik(), wynik.getMianownik()) != 0) {
int dzielnik=najmniejszyDzielnik(wynik.getLicznik(), wynik.getMianownik());
wynik.setLicznik(wynik.getLicznik()/dzielnik);
wynik.setMianownik(wynik.getMianownik()/dzielnik);
}
} while (najmniejszyDzielnik(wynik.getLicznik(), wynik.getMianownik()) != 0);
return wynik;
}
}
package klasy;
public class UlamkiObl {
Obliczenia o = new Obliczenia();
public Ulamek dodawanie(Ulamek a,Ulamek b){
Ulamek wynik = new Ulamek();
Ulamek jeden = new Ulamek(a.getLicznik(),a.getMianownik());
Ulamek dwa = new Ulamek(b.getLicznik(),b.getMianownik());
int mianownik = o.najmniejszyMianownik(a.getMianownik(), b.getMianownik());
jeden.setLicznik(jeden.getLicznik()*(mianownik/jeden.getMianownik()));
dwa.setLicznik(dwa.getLicznik()*(mianownik/dwa.getMianownik()));
dwa.setMianownik(mianownik);
jeden.setMianownik(mianownik);
wynik.setLicznik(jeden.getLicznik()+dwa.getLicznik());
wynik.setMianownik(mianownik);
wynik=o.skracanie(wynik);
return wynik;
}
/**
*Odejmowanie 2 ulamki
*/
public Ulamek odejmowanie(Ulamek a,Ulamek b){
Ulamek wynik = new Ulamek();
Ulamek jeden = new Ulamek(a.getLicznik(),a.getMianownik());
Ulamek dwa = new Ulamek(b.getLicznik(),b.getMianownik());
int mianownik = o.najmniejszyMianownik(a.getMianownik(), b.getMianownik());
jeden.setLicznik(jeden.getLicznik()*(mianownik/jeden.getMianownik()));
dwa.setLicznik(dwa.getLicznik()*(mianownik/dwa.getMianownik()));
dwa.setMianownik(mianownik);
jeden.setMianownik(mianownik);
wynik.setLicznik(jeden.getLicznik()-dwa.getLicznik());
wynik.setMianownik(mianownik);
wynik=o.skracanie(wynik);
return wynik;
}
/**
*Mnozy 2 ulamki
*/
public Ulamek mnozenie(Ulamek a,Ulamek b){
Ulamek wynik= new Ulamek();
wynik.setLicznik(a.getLicznik()*b.getLicznik());
wynik.setMianownik(a.getMianownik()*b.getMianownik());
wynik=o.skracanie(wynik);
return wynik;
}
/**
*Dzieli 2 ulamki
*/
public Ulamek dzielenie(Ulamek a,Ulamek b){
Ulamek wynik= new Ulamek();
wynik.setLicznik(a.getLicznik()*b.getMianownik());
wynik.setMianownik(a.getMianownik()*b.getLicznik());
wynik=o.skracanie(wynik);
return wynik;
}
/**
*Podnosi ulamek do wybranej potegi
*/
public Ulamek potega(Ulamek a,int b){
Ulamek wynik= new Ulamek();
wynik.setLicznik(Math.pow(a.getLicznik(),b));
wynik.setMianownik(Math.pow(a.getMianownik(), b));
return wynik;
}
}
import klasy.*;
public class Konsolka {
public static void main(String[] args) {
Ulamek test = new Ulamek(375, 1000);
Ulamek test2 = new Ulamek(35, 8);
Ulamek test3 = new Ulamek();
UlamkiObl u = new UlamkiObl();
test3=u.dodawanie(test, test2);
test3.pisz();
}
}
Pozdrawiam k_k