OOP Lab 05 Inheritance and Polymorphism - Tài liệu tham khảo | Đại học Hoa Sen

OOP Lab 05 Inheritance and Polymorphism - Tài liệu tham khảo | Đại học Hoa Sen và thông tin bổ ích giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng, ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả

Object-Orient Programming (Java) Lab 05 Trang 1/7
Lab 05
Inheritance and Polymorphism
A. Chuẩn bị
a. Đọc kỹ nội dung Slides “Inheritance and Polymorphism”.
b. Tạo package labxx trong Project.
c. Lưu ý: mỗi bài tập một package nằm trong labxx, chứa các lớp ơng ứng.
Ví dụ: labxx.Exercise01.Person.java
B. Bài tập
Bài tập 1.
a. Xây dựng các lớp và method theo class diagram sau
Lưu ý: phương thức getVolume(): = Diện ch hình tròn (Circle) * chiều cao hình trụ (height)
Object-Orient Programming (Java) Lab 05 Trang 2/7
b. Thực hiện ếp các yêu cầu sau:
- Lớp Cylinder: bổ sung phương thức (override) getArea() nh diện ch bề mặt
hình trụ (surface area) thông qua hình tròn và chiều cao hình trụ.
- Nhận xét phương thức getArea() của lớp Circle và lớp Cylinder?
c. Xây dựng lớp TestCylinder:
- In ra thông n radius, height, surface area, volume của 3 hình trụ c1 =new
Cylinder(); c2 = new Cylinder(10.0); c3 = new Cylinder(2.0, 10.0)
Bài tập 2.
a. Xây dựng lớp hình chữ nhật (Rectangle) bao gồm:
- Length, width
- Constructors 0 tham số và 2 tham số: nếu length và width là số âm thì mặc định
bằng 0
- Geers, seers: nếu length và width là số âm thì mặc định bằng 0
- Phương thức nh diện ch getarea(): protected
- Phương thức nh chu vi getperimeter(): protected
- Override phương thức tostring(): return chuỗi thông n (length, width)
b. Xây dựng lớp hình hộp (Box) kế thừa Rectangle, định nghĩa thêm các thành viên:
- Height
- Constructors 0 tham số và 3 tham số: nếu height là số âm thì mặc định bằng 0
- Geers, seers: nếu heigth là số âm thì mặc định bằng 0
- Override phương thức nh diện ch getarea():
2*(length*width+ width*heigth+heigth*length)
- Override phương thức tostring(): return chuỗi thông n (length, width, heigth)
- Phương thức nh thể tích getvolume(): length*width* heigth
c. Lớp TestBox.
- Tính chu vi và diện ch và chu vi hình chữ nhật (10, 3).
- Tính diện ch và thể ch của hình hộp (2, 4, 6).
Bài tập 3.
a. Xây dựng các lớp theo sơ đồ sau
Object-Orient Programming (Java) Lab 05 Trang 3/7
b. Lưu ý phương thức toString() của Mammal có gọi đến toString() của Animal…
c. Tạo lớp TestAnimal gồm
- Mảng 4 phần tử Animal
- Khởi tạo các phần tử tương ứng các đối tượng thuộc lớp Animal, Mammal, Cat,
Dog
- In ra thông n các phần tử trong mảng Animal
- Gọi phương thức greets() cho các đối tượng trong mảng Animal.
- Hint:
Bài tập 4.
a. Xây dựng các lớp theo sơ đồ sau
Object-Orient Programming (Java) Lab 05 Trang 4/7
b. Tạo lớp TestPerson
- Tạo 1 đối tượng Student. Thêm vào điểm (addCourseGrade())của 2 môn học,
và in ra điểm trung bình.
- Tạo 1 đối tượng Teacher. Thêm vào các môn học (addCourse()), xóa các môn
học (removeCourse()).
Bài tập 5. **
a. Xây dựng các lớp theo sơ đồ sau
b. Tạo lớp TestShape để kiểm tra các phương thức của các lớp.
Object-Orient Programming (Java) Lab 05 Trang 5/7
Bài tập 6.
a. Xem sơ đồ lớp sau & nhận xét mối quan hệ (relaonship) giữa 2 lớp Circle và Cylinder.
Object-Orient Programming (Java) Lab 05 Trang 6/7
Hint: không phải quan hệ kế thừa (Inheritance) is-a. quan hệ thành phần
(Composion relaonship hay has-a relaonship).
Về bản chất có thể xem như Circle một kiểu dữ liệu Data Type (tương tự như lớp/kiểu
String) được sử dụng trong lớp Cylinder.
b. Cài đặt các lớp theo sơ đồ trên với các phương thức khởi tạo, toString() tương ứng.
Bài tập 7. ** (Game caro 3x3)
a. Thiết kế các lớp theo sơ đồ sau
Bài tập 8.
a. Xây dựng lớp phương trình bậc nhất bao gồm:
- 2 tham số a, b và nghiệm x1
- Constructor 0 tham số và 2 tham số
- Geers và Seers
- Phương thức giải phương trình int giai(): return 11 nghiệm, return 0 có VSN
và return -1 vô nghiệm
- Phương thức xuatNghiem(): Dựa vào kết quả giai() để xuất thông báo
Phuong trinh 0x + 3 = 0 vo nghiem
Phuong trinh 0x + 0 = 0 co vo so nghiem
Phuong trinh 6x - 3 = 0 co 1 nghiem x = 0.5
Object-Orient Programming (Java) Lab 05 Trang 7/7
b. Xây dựng lớp phương trình bậc hai kế thừa lớp lớp phương trình bậc nhất, định nghĩa
thêm các thành viên sau
- Tham số c và nghiệm x2
- Constructor 0 tham số và 3 tham số
- Geers và Seers
- Override phương thức void giai():
Nếu a=0 (đây là pt bậc nhất) thì return super.giai();
Nếu a !=0 thì giải pt bậc 2: return 1 nếu có 1 nghiệm kép (x1=x2), return
2 nếu có 2 nghiệm phân biệt và return -1 nếu vô nghiệm
- Override phương thức xuatNghiem(): Dựa vào kết quả giai() để xuất thông báo
Nếu a=0 thì gọi super.xuatNghiem()
Nếu a!=0 thì xuất thông báo, như ví dụ sau:
Phuong trinh x + 2x + 5 vo nghiem
2
Phuong trinh 2x - 4x + 2 co 1 nghiem kep x1=x2=1
2
Phuong trinh 2x - 4x + 0 co 2 nghiem phan biet x1=0 và x2=2
2
c. Xuất kết quả giải các phương trình sau
- 2x + 3=0
- 8x = 0
- 2x2 - x + 2=0
-
0x
2
+ 5x = 0
| 1/7

Preview text:

Lab 05 Inheritance and Polymorphism A. Chuẩn bị
a. Đọc kỹ nội dung Slides “Inheritance and Polymorphism”.
b. Tạo package labxx trong Project.
c. Lưu ý: mỗi bài tập là một package nằm trong labxx, chứa các lớp tương ứng.
Ví dụ: labxx.Exercise01.Person.java B. Bài tập Bài tập 1.
a. Xây dựng các lớp và method theo class diagram sau
Lưu ý: phương thức getVolume(): = Diện ch hình tròn (Circle) * chiều cao hình trụ (height)
Object-Orient Programming (Java) Lab 05 Trang 1/7
b. Thực hiện ếp các yêu cầu sau:
- Lớp Cylinder: bổ sung phương thức (override) getArea() nh diện ch bề mặt
hình trụ (surface area) thông qua hình tròn và chiều cao hình trụ.
- Nhận xét phương thức getArea() của lớp Circle và lớp Cylinder?
c. Xây dựng lớp TestCylinder:
- In ra thông n radius, height, surface area, volume của 3 hình trụ c1 =new
Cylinder(); c2 = new Cylinder(10.0); c3 = new Cylinder(2.0, 10.0) Bài tập 2.
a. Xây dựng lớp hình chữ nhật (Rectangle) bao gồm: - Length, width
- Constructors 0 tham số và 2 tham số: nếu length và width là số âm thì mặc định bằng 0
- Ge ers, se ers: nếu length và width là số âm thì mặc định bằng 0
- Phương thức nh diện ch getarea(): protected
- Phương thức nh chu vi getperimeter(): protected
- Override phương thức tostring(): return chuỗi thông n (length, width)
b. Xây dựng lớp hình hộp (Box) kế thừa Rectangle, định nghĩa thêm các thành viên: - Height
- Constructors 0 tham số và 3 tham số: nếu height là số âm thì mặc định bằng 0
- Ge ers, se ers: nếu heigth là số âm thì mặc định bằng 0
- Override phương thức nh diện ch getarea():
2*(length*width+ width*heigth+heigth*length)
- Override phương thức tostring(): return chuỗi thông n (length, width, heigth)
- Phương thức nh thể tích getvolume(): length*width* heigth c. Lớp TestBox.
- Tính chu vi và diện ch và chu vi hình chữ nhật (10, 3).
- Tính diện ch và thể ch của hình hộp (2, 4, 6). Bài tập 3.
a. Xây dựng các lớp theo sơ đồ sau
Object-Orient Programming (Java) Lab 05 Trang 2/7
b. Lưu ý phương thức toString() của Mammal có gọi đến toString() của Animal…
c. Tạo lớp TestAnimal gồm - Mảng 4 phần tử Animal
- Khởi tạo các phần tử tương ứng các đối tượng thuộc lớp Animal, Mammal, Cat, Dog
- In ra thông n các phần tử trong mảng Animal
- Gọi phương thức greets() cho các đối tượng trong mảng Animal. - Hint: Bài tập 4.
a. Xây dựng các lớp theo sơ đồ sau
Object-Orient Programming (Java) Lab 05 Trang 3/7 b. Tạo lớp TestPerson
- Tạo 1 đối tượng Student. Thêm vào điểm (addCourseGrade())của 2 môn học,
và in ra điểm trung bình.
- Tạo 1 đối tượng Teacher. Thêm vào các môn học (addCourse()), và xóa các môn học (removeCourse()). Bài tập 5. **
a. Xây dựng các lớp theo sơ đồ sau
b. Tạo lớp TestShape để kiểm tra các phương thức của các lớp.
Object-Orient Programming (Java) Lab 05 Trang 4/7 Bài tập 6.
a. Xem sơ đồ lớp sau & nhận xét mối quan hệ (rela onship) giữa 2 lớp Circle và Cylinder.
Object-Orient Programming (Java) Lab 05 Trang 5/7
Hint: không phải quan hệ kế thừa (Inheritance) is-a. Mà là quan hệ thành phần
(Composi on rela onship hay has-a rela onship).
Về bản chất có thể xem như Circle là một kiểu dữ liệu Data Type (tương tự như lớp/kiểu
String) được sử dụng trong lớp Cylinder.
b. Cài đặt các lớp theo sơ đồ trên với các phương thức khởi tạo, toString() tương ứng. Bài tập 7. ** (Game caro 3x3)
a. Thiết kế các lớp theo sơ đồ sau Bài tập 8.
a. Xây dựng lớp phương trình bậc nhất bao gồm:
- 2 tham số a, b và nghiệm x1
- Constructor 0 tham số và 2 tham số - Ge ers và Se ers
- Phương thức giải phương trình int giai(): return 1 có 1 nghiệm, return 0 có VSN và return -1 vô nghiệm
- Phương thức xuatNghiem(): Dựa vào kết quả giai() để xuất thông báo
Phuong trinh 0x + 3 = 0 vo nghiem
Phuong trinh 0x + 0 = 0 co vo so nghiem
Phuong trinh 6x - 3 = 0 co 1 nghiem x = 0.5
Object-Orient Programming (Java) Lab 05 Trang 6/7
b. Xây dựng lớp phương trình bậc hai kế thừa lớp lớp phương trình bậc nhất, định nghĩa thêm các thành viên sau - Tham số c và nghiệm x2
- Constructor 0 tham số và 3 tham số - Ge ers và Se ers
- Override phương thức void giai():
Nếu a=0 (đây là pt bậc nhất) thì return super.giai();
Nếu a !=0 thì giải pt bậc 2: return 1 nếu có 1 nghiệm kép (x1=x2), return
2 nếu có 2 nghiệm phân biệt và return -1 nếu vô nghiệm
- Override phương thức xuatNghiem(): Dựa vào kết quả giai() để xuất thông báo
Nếu a=0 thì gọi super.xuatNghiem()
Nếu a!=0 thì xuất thông báo, như ví dụ sau:
Phuong trinh x2 + 2x + 5 vo nghiem
Phuong trinh 2x2 - 4x + 2 co 1 nghiem kep x1=x2=1
Phuong trinh 2x2 - 4x + 0 co 2 nghiem phan biet x1=0 và x2=2
c. Xuất kết quả giải các phương trình sau - 2x + 3=0 - 8x = 0 - 2x2 - x + 2=0 - 0x2 + 5x = 0
Object-Orient Programming (Java) Lab 05 Trang 7/7