Bài tập lập trình hướng đối tượng – class & object

Bài 1: Triển khai class Circle theo diagram

Bài tập oop - class & object

Cho class Circle được thiết kế theo, có chứa:

  • Hai biến private (-): radius có kiểu dữ liệu là double, và color là String. Hai thuộc tính có có giá trị mặc định khi khởi tạo là radius = 1.0 và color = red.
  • Ba constructor trong đó có 1 constructor mặc định sẽ khởi tạo giá trị mặc định cho radius và red là 1.0 và red. Các constructor Circle(radius: double) sẽ khởi tạo giá trị cho radius và color là red. Circle(radius: double, color: String) sẽ khởi tạo giá trị cho cả radius và color.
  • getRadius() và setRadius(radius: double) là 2 hàm lấy và gán giá trị mới cho radius.
  • getColor và setColor(color: String) là 2 hàm gán và lấy giá trị mới cho color.
  • getArea(): dùng để tính diện tích hình tròn.
  • toString(): Trả về thông tin của radius và color ra màn hình console.

Output

Radius: 1.0 – Color: red
Area: 3.141592653589793

Radius: 2.0 – Color: red
Area: 12.566370614359172

Radius: 2.0 – Color: blue
Area: 12.566370614359172

Radius: 3.0 – Color: Green
Area: 28.274333882308138

Link source code tham khảo

Note

Ở bài tập ở trên đã giúp chúng ta nhớ lại các khái niệm cơ bản trong lập trình hướng đối tượng như:

  • Constructor trong java, khi khởi tạo một obiect từ một class, hàm constructor sẽ khởi chạy đầu tiên để khởi tạo các giá trị mặc định cho object.
  • Từ khóa this trong java dùng để tham chiếu đến các biến của class, tránh nhầm lẫn với các tham số đầu vào.
  • Access modifier dùng để hạn chế việc truy cập các biến của object, chỉ cho phép lấy và gán giá trị thông qua các method getter, setter. Từ đó thể hiện tính đóng gói trong lập trình hướng đối tượng.

Bài 2: Triển khai class Rectangle theo diagram 

excercise oop - classs & object

Thiết kế class Rectangle theo sơ đồ trên gồm:

  • Constructor mặc định và constructor có 2 tham số length, width để gán giá trị cho 2 thuộc tính tương ứng của Rectangle.
  • setLength(length: int): gán giá trị cho thuộc tính length của class.
  • getLength(): Trả về giá trị length của class.
  • setWidth(width: int): gán giá trị cho thuộc tính width của class.
  • getWidth(): Trả về giá trị width của class.
  • getArea(): Tính diện tích của Rectangle
  • toString(): Trả về chuỗi thông tin cần thiết của Rectangle như length, width. 

Gợi ý: area = length * width

Link source code tham khảo

Bài 3: Triển khai class Employee theo diagram

exercise-oop-class-object-employee

 

Gợi ý: 

getFullName(): FulllName = lastName + firstName

getAnnualSalary() tính tổng lương nhận hằng năm => salary * 12

upToSalary(): Tính tiền lương sau khi tăng lên percent(%). Ví dụ percent = 10% => output = salary  +  (salary * precent) / 100

Link source code tham khảo

Bài 4: Triển khai class Account theo diagram 

exercise-oop-account

Mô tả: class Account có 3 biến private: id, name, balance.

Một hàm khởi tạo Account 3 thuộc tính id, name, balance.

credit(amount: int): Nạp tiền vào tài khoản, tài khoản sẽ được cộng lên một khoản amount. Kiểm tra tham số đầu vào phải là số dương.

debit(amount: int): Thanh toán tiền, tài khoản sẽ được trừ một số lượng tiền amount. Nếu số tiền thanh toán lớn hơn số tiền trong tài khoản thì thông báo thanh toán không thành công.

tranferTo(account: Account), chuyển tiền từ tài khoản này cho tài khoản khác. Ví dụ Account A có balance = 50, B có balance = 10. A.tranferTo(B, 10). A (balance = 40), B (balance = 20). Chú ý kiểm tra nếu chuyển số tiền nhiều hơn tài khoản hiện Acó thông báo lỗi chuyển tiền không thành công.

Output:
Balance A: 50
Balance B: 10

Balance A: 80
Balance B: 10

Balance A: 60
Balance B: 10

Thanh Toan khong thanh cong
Balance A: 60
Balance B: 10

Balance A: 50
Balance B: 20

Link source code tham khảo

Bài 5: Triển khai class Date theo diagram

exercise-oop-date

Ở bài này, chúng ta chưa cần đến việc kiểm tra ngày tháng năm hợp lệ hay không. 

isLeapYear(): Kiểm tra năm nhuận, năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100.

Nếu các bạn muốn kiểm tra ngày tháng năm hợp lệ thì gợi ý:

  • Month: có giá trị từ 1 – 12
  • Các tháng 1, 3, 5, 7, 8, 10, 12 thì số ngày tối đa là 31 ngày
  • Tháng 2: nếu là năm nhuận thì số ngày tối đa là 29, còn lại là 28
  • Các tháng còn lại tối đa là 30 ngày.

Output:

Date{day=12, month=3, year=2016}
true

Link source code tham khảo

Please follow and like us:
error

Leave a Reply

Your email address will not be published. Required fields are marked *