Thế nào là tư duy hướng đối tượng?

Hi all,
Mình hiện đang intern trong một công ty về embedded linux, trong thời gian làm việc mình phải đọc source code linux rất nhiều. Mặc dù công việc chỉ là đọc source example, rồi dev driver theo cái form example đó. Tuy nhiên cá nhân mình thấy rằng việc đọc code của mình khá chậm. Chậm từ việc hiểu cái model quản lý source trong chương trình, chậm hiểu phần cách cả hệ thống quản lý cái chương trình của mình ntn.
Khi hỏi mấy ông anh, thì họ nói họ đọc nhanh là vì có tư duy OOP. Mình cũng biết OOP, cũng đã code mấy ngôn ngữ như C++, Java. Nhưng mình không hiểu các ông ấy ốp được tư duy OOP vào trong việc đọc source C của kernel kiểu gì. Trước giờ mình đều tư duy theo hướng module hóa, tức là từng phần trong hệ điều hành sẽ là ntn và rồi mình đọc source code, trace source theo đúng kiểu hàm gọi hàm và không thấy cái nhìn OOP về kernel source.

Mọi người cho mình hỏi, thế nào là tư duy hướng đối tượng ( NOT “Thế nào là OOP” ).

Và cho mình xin một bài tập để luyện OOP về cách các đối tượng tương tác với nhau.

Thanks to you !

2 Likes

Tư duy hướng đối tượng ít khi áp dụng trong lập trình cấp thấp, bởi vì lập trình cấp thấp đối tượng thu hẹp trong phạm vi cái máy tính, và lúc đó thì tư duy hướng đối tượng không có tác dụng. Chả thế mà lập trình cấp thấp người ta chọn ngôn ngữ C để dùng.

Hướng đối tượng là sao? Theo cách hiểu của mình (không phải dân IT chuyên nghiệp) nghĩa là bạn dùng ngôn ngữ lập trình + các công cụ hỗ trợ lập trình để giải quyết một vấn đề trong thực tế.

Do đó, hướng suy nghĩ truyền thống của lập trình khi chưa có OOP là bạn suy nghĩ là ta có búa, có đinh, cưa, có băng keo, có gỗ,… giờ thì ta loay hoay sao đó để đóng được cái bàn, cái tủ, cứ nhảy vào đóng từng thứ một rồi ghép thành bàn, thành tủ. Nói cách khác, tôi đang có một đống đây, giờ cứ đóng, ra cái gì tính sau.

Trong khi đó, suy nghĩa OOP là nào thì cái tủ gọi là gì (class, object) sẽ cao bao nhiêu, màu sắc gì (thuộc tính), cách cửa mở ra hay mở vào (method), có mấy bộ phận làm bằng chất liệu cụ thể gì (variable). Lúc này cái tủ là đối tượng, và từ đó ta mới sử dụng búa, cưa, đinh,… để đóng. Hay nói cách khác, tôi không cần biết anh có gì, anh làm sao làm sao đóng cho tôi cái tủ.

OOP nghĩa là phân rã/ trừu tượng hóa thứ có trong đời thật thành các thứ trong một ngôn ngữ lập trình. Còn theo kiểu chức năng cũ là trong lập trình có các món này, giờ tìm xem trong thực tế cần lấy món này chọc vào chỗ nào.

7 Likes

Cám ơn bạn. Rất dễ hiểu
Rất nhiều người biết (có thể biết rất rõ) định nghĩa OOP là gì, nhưng để vận dụng nó như thế nào lại là cái khác.
Theo tôi cách vận dụng nó ntn chính là tư duy hướng đối tượng!

1 Like

Đúng, cái khó khi đọc source code chính là việc hình dung ra đối tượng nó là gì, đã được phân rã ra thành những gì và tương tác với các đối tượng khác ntn.
Thanks sir.

1 Like

Một là chưa đủ kiến thức để hiểu.
Hai là mã nguồn không theo tiêu chuẩn.

Khả năng 1 cao hơn nên cần luyện tập va chạm thêm đến một lúc đủ lượng tự nhiên thấy mọi thứ nó sáng sủa dễ đọc ngay.
Còn tư duy OOP nó có vẻ không đúng.

5 Likes

lý thuyết nhiều thì đọc chán cũng ko hiểu đc, cứ đc giao làm chục cái task thì sẽ hiểu dần thôi.

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