Tạo và sử dụng lớp Triangle 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 Triangle được mô tả bằng mô hình UML sau:

Triangle
– a, b, c: float
+ Triangle()
+ Triangle(a: float, b: float, c: float)
+ isTriangle(): boolean
+ isEquilateral(): boolean
+ isIsosceles(): boolean
+ isRight(): boolean
+ isRightIsosceles(): boolean
+ getType(): char
+ area(): float
+ display(): char

Trong đó:

  • Triangle() là hàm khởi tạo không đối số
  • Triangle(a: float, b: float, c: float) là hàm khởi tạo có đối số
  • isTriangle() là hàm kiểm tra 3 cạnh có tạo thành tam giác hay không
  • isEquilateral() là hàm kiểm tra tam giác đều
  • isIsosceles() là hàm kiểm tra tam giác cân
  • isRight() là hàm kiểm tra tam giác vuông
  • isRightIsosceles() là hàm kiểm tra tam giác vuông cân
  • getType() là hàm trả về thông tin kiểu tam giác
  • area() là hàm tính diện tích (theo công thức Heron)
  • display() là hàm trả về thông tin cạnh tam giác, kiểu tam giác và diện tích

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

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

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


package BuildClass;

public class Triangle {
    // Thuoc tinh
    private double a;
    private double b;
    private double c;

    // Phuong thuc
    // Ham khoi tao khong doi so
    public Triangle() {
        a = 0;
        b = 0;
        c = 0;
    }

    // Ham khoi tao co doi so
    public Triangle(double a, double b, double c) {
        if (a + b <= c || a + c <= b || b + c <= a) {
            a = 0;
            b = 0;
            c = 0;
        } else {
            this.a = a;
            this.b = b;
            this.c = c;
        }
    }

    // Ham kiem tam giac
    public boolean isTriangle() {
        if (a + b <= c || a + c <= b || b + c <= a) {
            return false;
        }
        return true;
    }

    // Ham kiem tra tam giac deu
    public boolean isEquilateral() {
        if ((a == b) && (b == c)) {
            return true;
        }
        return false;
    }

    // Ham kiem tra tam giac can
    public boolean isIsosceles() {
        if ((a == b) || (a == c) || (b == c)) {
            return true;
        }
        return false;
    }

    // Ham kiem tra tam giac vuong
    public boolean isRight() {
        if ((a * a == b * b + c * c) ||
                (b * b == a * a + c * c) ||
                (c * c == a * a + b * b)) {
            return true;
        }
        return false;
    }

    // Ham kiem tra tam giac vuong can
    public boolean isRightIsosceles() {
        if (((a * a + b * b == c * c) && (a == b)) ||
                ((a * a + c * c == b * b) && (a == c)) ||
                ((b * b + c * c == a * a) && (b == c))) {
            return true;
        }
        return false;
    }

    // Ham tra ve thong tin kieu tam giac tam giac
    public String getType() {
        if (isIsosceles()) {
            return "Tam giac can";
        } else if (isEquilateral()) {
            return "Tam giac deu";
        } else if (isRight()) {
            return "Tam giac vuong";
        } else if (isRightIsosceles()) {
            return "Tam giac vuong can";
        }
        return "Tam giac thuong";
    }

    // Ham tinh dien tich tam giac
    public double area() {
        double p = (a + b + c) / 2;
        return Math.sqrt(p * (p - a) * (p - b) * (p - c));
    }

    // Ham tra ve thong tin cua tam giac
    public void display() {
        System.out.println("\tDo dai cac canh lan luot la: " + a + "; " + b + " va " + c);
        System.out.println("\tLoai tam giac: " + getType());
        System.out.println("\tDien tich tam giac: " + area());
    }
}

File MainClass.java:


package UseClass;

import BuildClass.Triangle;

import java.util.Scanner;

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

        // Khai bao bien
        double a, b, c;

        do {
            System.out.print("Nhap vao canh thu nhat: ");
            a = sc.nextDouble();
            System.out.print("Nhap vao canh thu hai: ");
            b = sc.nextDouble();
            System.out.print("Nhap vao canh thu ba: ");
            c = sc.nextDouble();

            if (a + b <= c || a + c <= b || b + c <= a) {
                System.out.println("Khong thoa man canh tam giac. Hay nhap lai!");
            }
        } while (a + b <= c || a + c <= b || b + c <= a);

        Triangle tg = new Triangle(a, b, c);

        System.out.println("Thong tin tam giac la:");
        tg.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