Làm thế nào để xác định lớp(class) từ bài toán đặt ra? Làm thế nào để xác định phương thức của lớp?

Mình đang học lập trình hướng đối tượng C++ trên trường được 2 buổi , thầy mình có hỏi 2 câu:

  1. Làm thế nào để xác định lớp(class) từ bài toán đặt ra?
  2. Làm thế nào để xác định phương thức của lớp?
    Mọi người giúp mình trả lời 2 câu hỏi này với.
    p.s: hơi lệch chủ đề của chủ topic nhưng cũng liên quan đến hướng đối tượng =)))
2 Likes

Đầu tiên bạn nên tiếp cận yêu cầu theo hướng từ trên xuống , tức là từ mục đích quan trọng nhất sau đó tìm cách chia nhỏ mục đích ấy ra , ví dụ : tạo ứng dụng quản lí thông tin sinh viên , thì mục đích quan trọng nhất là quản lí được sinh viên, tuy nhiên mục đích này quá chung, ta tiếp tục phân tích ,thấy rằng quản lí sinh viên có thể gồm

1: quản lí điểm ( xem điểm , cập nhật điểm , chỉnh sửa điểm …)
2: quản lí về thông tin sinh viên ( gồm học tên nơi ở , số điện thoại ,…)
3: tìm kiếm tra cứu thông tin sinh viên

Đến bước này ta sẽ tìm một đối tượng ( có thể hiểu nôm na là người ) có thể dùng để nhóm các hành động trên ,

Ta để ý ở mục 2 , họ tên , nơi ở chính là các thuộc tính cơ bản của sinh viên vì vậy ta tạo ra một đối tượng “SinhVien” (class SinhVien) để lưu trữ và quản lí mục 2 .

Và ta cũng nhận ra các thao tác ở mục 1 và 3 là công việc của các thầy giáo vụ, vậy ta tạo ra một đối tượng “GiaoVu” với các phương thức xem điểm, cập nhật điểm , v.v

Từ đây bạn sẽ thấy yêu cầu đặt ra quy về tương tác giữa hai đối tượng là SinhVien và GiaoVu , lúc này ta sẽ dùng hai đối tượng này để tạo ra chương trình quản lí sinh viên đơn giản.

Chú ý khái niệm, lúc này bạn chỉ có trong tay 2 đối tượng bạn dùng 2 đối tượng này để giải quyết vấn đề chính là hướng tiếp cận từ dưới lên , trong hình vẽ thì từ hai đối tượng này sẽ có mũi tên chỉ về vấn đề trung tâm,

Trong lập trình bạn sẽ phải suy nghĩ theo nhiều hướng khác nhau để đạt hiệu quả tốt nhất.

chúc bạn học tốt ^^~

4 Likes

Chia nhỏ bài toán ra thành các tập hợp chức năng(method) nhỏ nhất, từ đó tạo ra đối tượng(Class) và gộp những chức năng phù hợp cho nó.
Ngoài ra những chức năng như kiểu convertString, ReadFile… có thể gom lại thành 1 Utilities Class.

2 Likes

Câu trả lời của thầy mình là phát biểu bài toán thành lời viết ra giấy sau đó liệt kê các danh từ thì các danh từ đó là class, động từ là method. Bước tiếp theo là sàn lọc những class và method dư thừa không cần đến cho bài toán.

3 Likes

Bạn nói mình mới nhớ ra, khóa java của udacity cũng hướng dẫn cách tìm class, method như thế, nhưng họ bảo đấy chỉ là chiêu cơ bản :smile:


(Có vietsub nhá :stuck_out_tongue_winking_eye:)

3 Likes

Cảm ơn bạn nhé :kissing_closed_eyes:

1 Like

nhớ không lầm thì có học môn thiết kế hệ thống hay phân tích thiết kết phần mềm.
Nghe nói dùng để phần tích hệ thống phần mềm thành những phần nhỏ, thiết kế thành object.
Tiếc hồi xưa không theo ngành công nghệ phần mềm nên không có học.

2 Likes

hồi học lớp database bà cô cũng nói na ná như vậy. Danh từ = enities, động từ = relations. Ngoài còn có attributes của entity rồi triggers rồi views nữa :smile:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?