Vận dụng OOP trong lập trình Web

Chào các anh chị, em là newbie đang học lập trình web. Em đã học qua OOP và làm project phần mềm Paint bằng OOP, sử dụng mẫu prototype, singleton, factory, … Nhưng mà khi em học lập trình web thì em thấy ko cần vận dụng OOP nhiều nữa ở Frontend và cả Backend.

  • Ở Frontend em dùng React, Vue chỉ cần lấy dữ liệu JSON trả về Backend và render ra giao diện
  • Còn ở Backend, em dùng Nodejs và PHP, ở php ngoài việc kế thừa các lớp có sẵn ra thì em thấy chưa dùng nhiều kĩ thuật đã được học.
  • Các Model thì đều dựa trên thiết kế của Database, ví dụ như như nếu trong DB có 2 table là Car và Motor thì thì ở code cũng có 2 class Car và Motor extend Model chứ ko cần phải tạo 1 class cha là Vehicle (mang các đặc điểm chung).

Nên em đang bị mơ hồ chỗ vận dụng OPP vào các code web hay App có sử dụng Database. Em có tìm hiểu Google nhưng cũng chỉ nhận được các câu trả lời chung chung và các ví dụ cơ bản như Bird, Dog kế thừa Animal, …, mong anh chị giúp đỡ và cho em xin ví dụ từ thực tế của các anh chị. Em cảm ơn ạ.

2 Likes

Chào em! Việc áp dụng OOP trong lập trình web và ứng dụng có sử dụng cơ sở dữ liệu là một vấn đề khá phổ biến và quan trọng. Mặc dù trong một số trường hợp đơn giản, việc sử dụng OOP có thể không rõ ràng nhưng nó vẫn có thể mang lại lợi ích trong các dự án lớn và phức tạp hơn.

Dưới đây là một số ví dụ về cách áp dụng OOP trong lập trình web và ứng dụng có sử dụng cơ sở dữ liệu:

  1. Quản lý người dùng: Trong hệ thống quản lý người dùng, bạn có thể tạo một lớp User để đại diện cho thông tin người dùng như tên, email, mật khẩu, v.v. Lớp này có thể có các phương thức như tạo mới người dùng, xác thực đăng nhập, lấy thông tin người dùng, v.v.
  2. Quản lý bài đăng: Trong một hệ thống blog, bạn có thể tạo lớp Post để đại diện cho bài đăng. Lớp này có thể chứa các thuộc tính như tiêu đề, nội dung, tác giả, ngày đăng, v.v. Ngoài ra, lớp Post cũng có thể có các phương thức như tạo mới bài đăng, lấy danh sách bài đăng, v.v.
  3. Quản lý sản phẩm: Trong một cửa hàng trực tuyến, bạn có thể tạo lớp Product để biểu diễn thông tin về sản phẩm như tên, giá, mô tả, hình ảnh, v.v. Lớp này cũng có thể có các phương thức để thêm sản phẩm vào giỏ hàng, lấy thông tin chi tiết sản phẩm, v.v.
  4. Quản lý đơn hàng: Trong một hệ thống bán hàng trực tuyến, bạn có thể tạo lớp Order để đại diện cho đơn hàng. Lớp này có thể bao gồm các thuộc tính như người đặt hàng, sản phẩm, số lượng, tổng giá trị, v.v. Lớp Order cũng có thể có các phương thức để tạo mới đơn hàng, xem danh sách đơn hàng, v.v.

Trong các ví dụ trên, OOP có thể giúp bạn quản lý các đối tượng trong ứng dụng một cách cấu trúc, dễ dàng mở rộng và bảo trì. Bạn có thể tận dụng tính kế thừa, đa hình, và gói gọn dữ liệu và logic vào các lớp riêng biệt.

Ngoài ra, OOP cũng hỗ trợ trong việc xây dựng các mô hình dữ liệu phức tạp hơn. Ví dụ, bạn có thể sử dụng kế thừa để xây dựng các lớp con kế thừa từ lớp cha chung để chia sẻ các thuộc tính và phương thức chung.

1 Like

cái này có 2 lý do

  1. là vì thật sự không cần
  2. là vì bạn không biết chỗ áp dụng

mục tiêu cuối cùng là giải quyết vấn đề, có dùng hay không dùng cũng chỉ là thứ yếu, theo cách bạn mô tả trong bài post thì có vẻ như bạn có thể giải quyết được vấn đề mà không dùng oop, vậy được rồi

ủa, kế thừa không phải là oop sao? sao phải cố dùng hết khi bạn không cần?
ví dụ như mình code mọi prop đều là public thì vẫn được đó thôi, vậy sao phải private/protected cho i cho nhức đầu? vì lý thuyết dạy abstraction à? không áp dụng thì vẫn giải quyết được vấn đề đó thôi

cái này giống như sách giáo khoa thôi, chỉ dạy cho bạn kiến thức
còn vận dụng như thế nào thì đó là kĩ năng, kinh nghiệm
thế nên kinh nghiệm mới có giá trị

5 Likes

OOP chỉ là 1 phương pháp lập trình thôi, khi nào cần thì mới dùng, không thì cứ KISS cho tiện.
Thực sự thì đúng như op nói, trong lập trình web thì ít dùng OOP. Hầu như chỉ là dùng ở mức cơ bản (khai báo class, extend, method,…) hoặc dùng của thư viện/framework.

Theo kinh nghiệm BE của mình, thì có 2 chỗ cần dùng OOP nâng cao hơn tí:

  • Dùng các design pattern trong code: giúp code có structure hơn
  • Domain driven design (DDD): dùng OOP trừu tượng hóa business logic, dùng build phần core ứng dụng tách biệt với infrastructure code. Nói chung khá hay, nên tìm hiểu.
3 Likes

Về cơ bản khi em sử dụng các Framework thì bên trong lõi của nó đã sử dụng OOP rồi, cái em dùng chỉ là bề mặt (giao diện) của họ nên mới không thấy gì.

Em muốn thấy bên trong nó ra sao thì phải mở source của framework đó ra mà đọc nghiên cứu.

OOP thường sẽ cần thiết khi em bắt đầu code các Tool, Library hay một Open Source cho người khác sử dụng.

Tức là khi em có thể cần làm các việc như:

  • Tổng quát hoá một vấn đề
  • Giải quyết nó với các nhiều loại Input của người dùng
  • Đơn giản hoá cách sử dụng cho người dùng
  • v.v

Và nhiều thứ nữa, khi đó thì em mới bắt đầu cần các thuộc tính của OOP và các Design Patterns.

Anh gửi ví dụ một số thư viện PHP sử dụng OOP em có thể tham khảo.

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