Menu
CoddyTech

Ôn tập: bộ đếm và tiện ích

Thuộc phần Lập trình hướng đối tượng trong hành trình Java của Coddy. Bài học 19 trên 87.

challenge icon

Thử thách

Dễ

Hãy xây dựng một hệ thống hoàn chỉnh kết hợp lớp Counter để theo dõi các đối tượng với lớp tiện ích MathUtils, qua đó tổng hợp mọi kiến thức bạn đã học về biến tĩnh (static variable), phương thức tĩnh (static method), khối tĩnh (static block) và hằng số (constant).

Bạn sẽ tạo ba tệp để sắp xếp code:

  • Counter.java: Tạo một lớp theo dõi số lượng đối tượng đã được tạo:
    • Một biến tĩnh riêng tư để đếm tổng số đối tượng
    • Một biến đối tượng riêng tư id để lưu mã định danh duy nhất của mỗi bộ đếm
    • Một hàm khởi tạo tăng tổng số lượng lên 1 và gán số lượng hiện tại làm mã định danh của đối tượng này
    • Một phương thức getId() trả về mã định danh duy nhất của bộ đếm này
    • Một phương thức tĩnh getTotalCount() trả về số lượng đối tượng Counter đã được tạo
  • MathUtils.java: Tạo một lớp tiện ích chỉ có các thành viên tĩnh, không bao giờ tạo đối tượng từ lớp này:
    • Một hằng số công khai PI có giá trị 3.14159
    • Một hằng số công khai HALF có giá trị 0.5
    • Một phương thức tĩnh square(int n) trả về bình phương của n
    • Một phương thức tĩnh cube(int n) trả về lập phương của n
    • Một phương thức tĩnh circleArea(double radius) trả về PI * radius * radius
  • Main.java: Minh họa cách hai lớp phối hợp với nhau. Bạn sẽ nhận hai đầu vào: một số dùng cho các phép tính và số lượng đối tượng Counter cần tạo. In ra các dòng sau:
    • Square: [value]
    • Cube: [value]
    • Circle area (radius=[number]): [value] (diện tích được định dạng với 2 chữ số thập phân)
    • Với mỗi đối tượng Counter được tạo, in ra: Counter [id] created
    • Cuối cùng: Total counters: [count]

Bạn sẽ nhận hai đầu vào: một số (int) dùng cho các phép tính và một số lượng (int) cho biết cần tạo bao nhiêu đối tượng Counter.

Hãy truy cập các thành viên tĩnh thông qua tên lớp, chẳng hạn như MathUtils.PI và Counter.getTotalCount(), đồng thời dùng String.format("%.2f", value) để định dạng các giá trị thập phân.

Tự làm thử

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number = scanner.nextInt();
        int count = scanner.nextInt();
        
        // TODO: Dùng các phương thức tĩnh của MathUtils để tính và in ra:
        // - Bình phương: [value]
        // - Lập phương: [value]
        // Circle area (radius=[number]): [value] (định dạng đến 2 chữ số thập phân)
        
        // TODO: Tạo 'count' đối tượng Counter
        // Với mỗi đối tượng Counter được tạo, in ra: Counter [id] created
        
        // TODO: In ra tổng số bộ đếm đã tạo
        // Total counters: [count]
    }
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Java online