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

EnglishVietnamese