Bài tập lập trình hướng đối tượng cơ bản, nâng cao

Đọc về Object-Oriented Programming (OOP) thôi là chưa đủ, quan trọng là bạn phải thực hành. Làm các bài tập lập trình hướng đối tượng sẽ giúp bạn nắm chắc hơn về OOP. Dưới đây là một số bài tập OOP Got It đã tổng hợp được. Hãy cùng làm để thành thạo lập trình hướng đối tượng nhé. Khi đã làm xong thì hãy kiểm tra bằng đáp án ở cuối bài nhé. 

Trước hết, hãy cùng kiểm tra bạn đã nắm rõ những kiến thức cơ bản chưa nhé.

1. Bài tập lập trình hướng đối tượng cơ bản

1. Đâu là ngôn ngữ lập trình hướng đối tượng đầu tiên?

A. Java

B. C++

C. SmallTalk

D. Kotlin

2. Đâu là thứ định nghĩa một lớp tốt nhất? 

A. Phần tử cha của một đối tượng

B. Bản sao của một đối tượng

C. Blueprint của một đối tượng

D. Phạm vi của một đối tượng

3. Đâu là tính năng có thêm trong lớp mà không có trong cấu trúc? 

A. Thành phần dữ liệu

B. Hàm thành phần

C. Dữ liệu tĩnh cho phép

D. Chỉ định truy cập công khai

4. Đâu không phải đặc điểm của OOP theo định nghĩa chung?

A. Tái sử dụng code

B. Tính mô-đun

C. Sao chép/Dự phòng dữ liệu

D. Code hiệu quả

5. OOP có thể được triển khai mà không cần dùng đến lớp trong một chương trình. Đúng hay Sai

A. Đúng

B. Sai

6. Đặc điểm nào của OOP thể hiện tính tái sử dụng code? 

A. Đa hình

B. Trừu tượng

C. Đóng gói

D. Kế thừa

7. Ngôn ngữ lập trình nào không hỗ trợ cả 4 loại kế thừa? 

A. C++

B. Java

C. Kotlin

D. Small Talk

8. Có thể định nghĩa bao nhiêu lớp trong một chương trình? 

A. 1

B. 100

C. 999

D. Không hạn chế

9. Tại sao Java không hẳn là một ngôn ngữ hướng đối tượng?

A. Nó không hỗ trợ cách khai báo thông thường của những loại dữ liệu cơ bản 

B. Nó không hỗ trợ tất cả các loại kế thừa.

C. Nó cho phép viết code ngoài lớp

D. Nó không hỗ trợ con trỏ

10. Nhận định nào về OOP không đúng với C++?

A. Code có thể viết mà không cần đến class.

B. Code phải chứa ít nhất một lớp

C. Một class phải có các member function.

D. Ít nhất phải có một đối tượng được khai báo trong code

11. File header nào là bắt buộc để sử dụng OOP trong C++?

A. iostream.h

B. stdio.h

C. stdlib.h

D. OOP có thể sử dụng mà không cần file header.

12. Hai đặc điểm nào luôn song hành với nhau? 

A. Kế thừa và Đóng gói

B. Đóng gói và Đa hình

C. Đóng gói và Trừu tượng

D. Trừu tượng và Đa hình

13. Tính năng nào cho phép mở đệ quy (recursion) ?

A. Sử dụng con trỏ

B. Sử dụng con trỏ

C. Sử dụng pass by value

D. Sử dụng constructor tham số hóa

2. Bài tập thực hành

Bài 1: Viết một chương trình định nghĩa một lớp hình có constructor đưa ra giá trị của chiều rộng và chiều dài. Sau đó định nghĩa hai lớp con hình tam giác và hình chữ nhật. Hai lớp con này tính diện tích của hình. Trong lớp chính, định nghĩa hai biến hình tam giác và hình chữ nhật. Sau đó gọi hàm area() trong hai biến này. 

Bài 2: Viết một chương trình mẹ với một lớp con kế thừa. Cả hai đều phải có method void display () để print một message (message của mẹ và con khác nhau). Trong phần chính, định nghĩa lớp con và gọi method display() dựa trên lớp con. 

Bài 3: Viết một chương trình với lớp mẹ animal. Trong chương trình này, định nghĩa các biến tên, tuổi và hàm set_value(). Sau đó tạo hai biến cơ bản Zebra và Dolphin để viết message thông báo tên tuổi và những thông tin khác (như nguồn gốc)

Bài 4:

a. Tạo một lớp Vehicle với các thuộc tính max_speed và bản sao tổng số b. Tạo một lớp Vehicle không có biến và phương thức nào cả. c. Tạo một lớp con Bus kế thừa mọi biến và phương thức của lớp cha Vehicle. d. Hãy đưa ra đối số sức chứa của Bus.seating_capacity() một giá trị mặc định là 50.  e. Xác định mỗi đối tượng của Bus thuộc lớp nào. f. Xác định nếu School_bus cũng là một bản sao của lớp Vehicle

3. Đáp án cho các bài tập

Bài tập cơ bản

1

2

3

4

5

6

7

8

9

10

11

12

13

C

C

B

C

B

D

B

D

A

B

D

C

A

Bài tập thực hành

Bài 1:

Bài tập thực hành lập trình hướng đối tượng
Đáp án bài thực hành 1

Bài 2:

Thực hành lập trình hướng đối tượng
Đáp án bài thực hành 2

Bài 3:

Bài tập lập trình hướng đối tượng
Đáp án bài thực hành 3

Bài 4:

a.

def __init__(self, name, max_speed, mileage):
    self.name = name
    self.max_speed = max_speed
    self.mileage = mileage

b.

class Vehicle:
    pass

c.

class Vehicle:

    def __init__(self, name, max_speed, mileage):
        self.name = name
        self.max_speed = max_speed
        self.mileage = mileage

class Bus(Vehicle):
    pass

School_bus = Bus("School Volvo", 180, 12)
print("Vehicle Name:", School_bus.name, "Speed:", School_bus.max_speed, "Mileage:", School_bus.mileage)

d.

class Vehicle:
    def __init__(self, name, max_speed, mileage):
        self.name = name
        self.max_speed = max_speed
        self.mileage = mileage

    def seating_capacity(self, capacity):
        return f"The seating capacity of a {self.name} is {capacity} passengers"

class Bus(Vehicle):
    def seating_capacity(self, capacity=50):
        return super().seating_capacity(capacity=50)

School_bus = Bus("School Volvo", 180, 12)
print(School_bus.seating_capacity())

e.

class Vehicle:
    def __init__(self, name, mileage, capacity):
        self.name = name
        self.mileage = mileage
        self.capacity = capacity

class Bus(Vehicle):
    pass

School_bus = Bus("School Volvo", 12, 50)

# use Python's built-in type() function
print(type(School_bus))

f.

class Vehicle:
    def __init__(self, name, mileage, capacity):
        self.name = name
        self.mileage = mileage
        self.capacity = capacity

class Bus(Vehicle):
    pass

School_bus = Bus("School Volvo", 12, 50)

# use Python's built-in isinstance() function
print(isinstance(School_bus, Vehicle))

Hy vọng rằng với những bài tập lập trình hướng đối tượng trên, các bạn đã hiểu hơn về khái niệm lập trình hướng đối tượng. Happy Coding!

Got It Vietnam – Tham khảo: PyNative, Sanfoundry

Nếu bạn quan tâm, hãy xem các vị trí đang tuyển dụng của Got It tại: bit.ly/gotit-hanoi và đọc thêm về quy trình tuyển dụng tại đây.

https://vn.got-it.ai/blog/wp-content/uploads/2021/04/1_QAG9RXQyyMAY7i9OYo84FA.png
Got It Vietnam
February 09, 2021
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
4 quyển sách Python tiếng Việt cho người mới bắt đầu

4 quyển sách Python tiếng Việt cho người mới bắt đầu

Bạn muốn tìm hiểu về Python nhưng tìm đâu cũng chỉ thấy sách tiếng Anh? Đừng lo, Got It sẽ dành tặng bạn 4 quyển sách Python tiếng Việt cực kỳ hữu ích ngay trong bài viết này! Cùng khám phá nhé! Mục lụcPython cơ bản… Rất là cơ bản – Võ Tuấn DuyTớ Học […]
4 khóa học lập trình hướng đối tượng miễn phí cho người mới

4 khóa học lập trình hướng đối tượng miễn phí cho người mới

Nếu bạn muốn theo nghề IT thì sớm muộn cũng phải học lập trình hướng đối tượng. Đây là một kiến thức cơ bản, bắt buộc phải biết. Bài viết sẽ chia sẻ với bạn 4 khóa học miễn phí, phù hợp với người mới bắt đầu. Mục lục1. Học lập trình hướng đối tượng […]
Phương pháp lập trình hướng đối tượng và các ưu, nhược điểm

Phương pháp lập trình hướng đối tượng và các ưu, nhược điểm

Từ lâu phương pháp lập trình hướng đối tượng đã không còn xa lạ với các lập trình viên. Bài viết sẽ chia sẻ với các bạn một số ưu điểm và nhược điểm của phương pháp này. Mục lục1. Phương pháp lập trình hướng đối tượng là gì?2. Ưu điểm của phương pháp lập […]
4 khái niệm bạn phải biết khi lập trình hướng đối tượng

4 khái niệm bạn phải biết khi lập trình hướng đối tượng

Lập trình hướng đối tượng (Object-oriented programming) là một phương pháp quen thuộc đối với các chuyên gia phát triển phần mềm. Sau đây là 4 khái niệm bạn bắt buộc phải biết để hiểu về lập trình hướng đối tượng. Mục lục1. Class (Lớp)2. Objects (Đối tượng)3. Attributes (Thuộc tính)4. Methods (Phương thức) 1. […]
Tài liệu lập trình Python tiếng Việt tốt nhất hiện nay

Tài liệu lập trình Python tiếng Việt tốt nhất hiện nay

Nếu bạn đang tìm tài liệu lập trình Python tiếng Việt thì hãy tham khảo ngay ebook “Python cơ bản… Rất là cơ bản” của tác giả Võ Duy Tuấn. Đây là tài liệu cung cấp đầy đủ kiến thức Python cơ bản dành cho người Việt. Hãy cùng Got It khám phá tài liệu […]
Lộ trình học lập trình web dành cho người mới bắt đầu

Lộ trình học lập trình web dành cho người mới bắt đầu

Nhiều bạn muốn học lập trình web nhưng chưa biết bắt đầu từ đâu? Lộ trình học lập trình web như thế nào thì hiệu quả? Nếu bạn đang băn khoăn về đề này, hãy tham khảo lộ trình học lập trình web cho người mới bắt đầu dưới đây nhé! Mục lục1. Xác định […]