Bài tập lập trình hướng đối tượng – đa hình(polymorphism)

Bài 1:

Triển khai một supper class có tên là Shape và subclass Circle, Rectangle, Square. Theo sơ đồ sau

exercise oop polymorphism

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()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 widthheigth 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.

Link source code tham khảo 

Bài 2:

Triển khai interface Moveable và class implement Moveable MovePointMoveableCircle theo sơ đồ sau

Exercise oop polymorphism

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. 

xSpeedySpeed 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.

Link code tham khảo

5 1 vote
Article Rating
Subscribe
Notify of
guest
4 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
4
0
Would love your thoughts, please comment.x
()
x