Bài 1:
Triển khai một supper class có tên là Shape và subclass Circle, Rectangle, Square. Theo sơ đồ sau
Trong ví dụ này Shape là một abstract class có những thông tin sau:
- Hai protected instance biến color, filled (protected được ký hiệu trong UML là #), các biến protected có thể truy cập bởi các class con của nó.
- Các phương thức getter() và setter()
- getArea(): tính diện tích, tương tự cho các hình khác
- getPerimeter() : Tính chu vi, và method toString() in ra các thông tin của các instance biến tương ứng của class
Class Square là một dạng đăc biệt của hình chữ nhật, có chiều dài bằng với chiều rộng, cho nên Square sẽ kế thừa Rectangle. Chúng ta có thể sử các method getter(), setter() của Rectangle với width và heigth bằng nhau.
Ở ví dụ trên chúng ta thấy các method: getArea(), getPerimeter(), toString() của Shape nên là các abstract method, vì với mỗi class con tương ứng ta đều phải triển khai khác nhau.
Bài 2:
Triển khai interface Moveable và class implement Moveable là MovePoint và MoveableCircle theo sơ đồ sau
Trong ví dụ trên, chúng ta cần nhớ lại một chút kiến thức về interface. Các method trong Moveable là các method trừu tượng không có thân hàm. Các class implement Moveable sẽ bắt buộc phải triển khai các method của nó. Ngoài ra chúng ta còn có quan hệ HAS-A giữa MoveablePoint và MoveableCircle.
xSpeed và ySpeed là một khoảng toạ độ và mỗi lần dịch chuyển tương ứng có thể đi được.
Sudo code
MoveablePoint: x, y, xSpeed, ySpeed;
moveUp: x = x + xSpeed
moveDown: x = x – xSpeed
moveLeft: y = y – ySpeed
moveRigth: y = y + ySpeed
Mỗi lần MoveCircle thực hiện moveUp, hay moveRight,… tất chính là move center.