Tạo và sử dụng lớp Fraction trong Java



Đề bài: Viết chương trình sử dụng ngôn ngữ lập trình Java tạo và sử dụng lớp Fraction để biểu diễn lớp phân số gồm các phương thức sau:

  1. Fraction(): Hàm khởi tạo không tham số
  2. Fraction(int tuSo, int mauSo): Hàm khởi tạo có đối số
  3. add(Fraction ps2): Công 2 phân số
  4. sub(Fraction ps2): Trừ 2 phân số
  5. mul(Fraction ps2): Nhân 2 phân số
  6. div(Fraction ps2): Chia 2 phân số
  7. inverse(): Nghịch đảo phân số
  8. reduce(): Tối giản phân số
  9. display(): Hiển thị phân số theo đúng định dạng.

Yêu cầu kiến thức:

  • Xác định, chuyển từ đối tượng thực tế thành đối tượng chương trình
  • Xác định thuộc tính và phương thức cho mỗi lớp, đối tượng
  • Xác định kiểu dữ liệu cho thuộc tính và phương thức

Cấu trúc thư mục:
src
|——BuildClass
   |——Fraction.java
|——UseClass
   |——MainClass.java
Code tham khảo dưới đây được viết trên JDK ver 8.x:
File Fraction.java:


package BuildClass;

import java.util.Scanner;

public class Fraction {
    // Thuoc tinh
    private int tuSo;
    private int mauSo;

    // Phuong thuc
    // Ham khoi tao khong doi so
    public Fraction() {
        tuSo = 0;
        mauSo = 1;
    }

    // Ham khoi tao co doi so
    public Fraction(int tuSo, int mauSo) {
        if (mauSo == 0) {
            System.out.println("Mau so khong duoc bang 0");
            tuSo = 0;
            mauSo = 1;
        } else {
            this.tuSo = tuSo;
            this.mauSo = mauSo;
        }
    }

    // Ham nhap phan so
    public void enterFrac(Scanner sc) {
        int ts, ms;
        do {
            System.out.print("\tNhap vao tu so: ");
            ts = sc.nextInt();
            System.out.print("\tNhap vao mau so: ");
            ms = sc.nextInt();

            if (ms == 0) {
                System.out.println("Nhap lai thong tin cho phan so!");
            }
        } while (ms == 0);
        tuSo = ts;
        mauSo = ms;
    }

    // Ham hien thi phan so
    public void display() {
        if (tuSo * mauSo < 0) {
            System.out.println("-" + Math.abs(tuSo) + "/" + Math.abs(mauSo));
        } else {
            System.out.println(Math.abs(tuSo) + "/" + Math.abs(mauSo));
        }
    }

    // Ham cong 2 phan so
    public Fraction add(Fraction ps2) {
        int ts = tuSo * ps2.mauSo + ps2.tuSo * mauSo;
        int ms = mauSo * ps2.mauSo;
        return new Fraction(ts, ms);
    }

    // Ham tru 2 phan so
    public Fraction sub(Fraction ps2) {
        int ts = tuSo * ps2.mauSo - ps2.tuSo * mauSo;
        int ms = mauSo * ps2.mauSo;
        return new Fraction(ts, ms);
    }

    // Ham nhan 2 phan so
    public Fraction mul(Fraction ps2) {
        int ts = tuSo * ps2.tuSo;
        int ms = mauSo * ps2.mauSo;
        return new Fraction(ts, ms);
    }

    // Ham nghich dao phan so
    public void inverse() {
        int tg = tuSo;
        tuSo = mauSo;
        mauSo = tg;
    }

    // Chia 2 phan so
    public Fraction div(Fraction ps2) {
        // Nghich dao ps2
        int tg = ps2.tuSo;
        ps2.tuSo = ps2.mauSo;
        ps2.mauSo = tg;

        // Nhan this vs ps2 (da nghich dao)
        int ts = tuSo * ps2.tuSo;
        int ms = mauSo * ps2.mauSo;
        return new Fraction(ts, ms);
    }

    // Ham toi gian phan so
    public void reduce() {
        // Tim uscln
        int a = tuSo;
        int b = mauSo;
        int r = a % b;
        while (r != 0) {
            a = b;
            b = r;
            r = a % b;
        }

        // Toi gian phan so
        tuSo /= b;
        mauSo /= b;
    }
}

File MainClass.java:


package UseClass;

import BuildClass.Fraction;

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // Khai bao doi tuong
        Fraction ps1 = new Fraction();
        Fraction ps2 = new Fraction();
        Fraction psTong;
        Fraction psThuong;

        // Nhap du lieu
        System.out.println("Nhap du lieu cho phan so 1:");
        ps1.enterFrac(sc);
        System.out.println("Nhap du lieu cho phan so 2:");
        ps2.enterFrac(sc);

        // Hien thi
        System.out.println("Phan so 1 vua nhap la:");
        ps1.display();
        System.out.println("Phan so 2 vua nhap la:");
        ps2.display();

        // Cong 2 phan so
        psTong = ps1.add(ps2);

        // Chia 2 phan so
        psThuong = ps1.div(ps2);

        // Hien thi
        System.out.println("Phan so tong la:");
        psTong.display();
        System.out.println("Thuong phan so la:");
        psThuong.display();

        sc.close();
    }
}


Kết luận:

  • Bạn có thể tham khảo thêm khóa học lập trình C từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Thành thạo lập trình C#. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Ôn tập OOP cơ bản trong Java. Xem tại đây

Có thể bạn sẽ thích…

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

EnglishVietnamese