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

EnglishVietnamese