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:
- Fraction(): Hàm khởi tạo không tham số
- Fraction(int tuSo, int mauSo): Hàm khởi tạo có đối số
- add(Fraction ps2): Công 2 phân số
- sub(Fraction ps2): Trừ 2 phân số
- mul(Fraction ps2): Nhân 2 phân số
- div(Fraction ps2): Chia 2 phân số
- inverse(): Nghịch đảo phân số
- reduce(): Tối giản phân số
- 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