Hướng đối tượng – OO (P.1)

1.  GIỚI THIỆU

1.1.  Phương pháp lập trình truyền thống

1.1.1.     Lập trình tuyến tính

–         Đặc trưng cơ bản của lập trình tuyến tính là tư duy theo lối tuần tự. Chương trình sẽ được thực hiện tuần tự từ đầu đến cuối, lệnh này kế tiếp lệnh kia cho đến khi kết thúc chương trình.

–         Đặc trưng

  • Đơn giản: chương trình được tiến hành đơn giản theo lối tuần tự, không phức tạp.
  • Đơn luồng: chỉ có một luồng công việc duy nhất, và các công việc được thực hiện tuần tự trong luồng đó.

–         Tính chất

  • Ưu điểm: Do tính đơn giản, lập trình tuyến tính có ưu điểm là chương trình đơn giản, dễ hiểu. Lập trình tuyến tính được ứng dụng cho các chương trình đơn giản.
  • Nhược điểm: Với các ứng dụng phức tạp, người ta không thể dùng lập trình tuyến tính để giải quyết.

1.1.2.     Lập trình hướng thủ tục

–         Trong lập trình hướng cấu trúc, chương trình chính được chia nhỏ thành các chương trình con và mỗi chương trình con thực hiện một công việc xác định. Chương trình chính sẽ gọi đến chương trình con theo một giải thuật, hoặc một cấu trúc được xác định trong chương trình chính.

–         Với các tiếp cận này thì một hệ thống phần mềm được xem như là một danh sách các công việc cần thực hiện(đọc dữ liệu, xử lý, kết xuất…). Những công việc này sẽ được thực hiện bởi một số hàm nhất định, và các hàm chức năng này được xem là trọng tâm của phương pháp lập trình hướng thủ tục

–         Đặc trưng

Chương trình = Cấu trúc dữ liệu + Giải thuật

  • Cấu trúc dữ liệu là cách tổ chức dữ liệu, cách mô tả bài toán dưới dạng ngôn ngữ lập trình
  • Giải thuật là một quy trình để thực hiện một công việc xác định

Trong chương trình, giải thuật có quan hệ phụ thuộc vào cấu trúc dữ liệu:

  • Một cấu trúc dữ liệu chỉ phù hợp với một số hạn chế các giải thuật.
  • Nếu thay đổi cấu trúc dữ liệu thì phải thay đổi giải thuật cho phù hợp.
  • Một giải thuật thường phải đi kèm với một cấu trúc dữ liệu nhất định.

–         Tính chất

  • Ưu điểm
    • Chia nhỏ chương trình thành các nhóm chức năng, các chương trình con giúp lập trình viên dễ nhận biết và quản lý chương trình
    • Tư duy giải thuật rõ ràng
  • Nhược điểm
    • Phương pháp này chú trọng vào các hàm chức năng nên khi một chức năng được thực hiện bằng nhiều hàm thì chúng sẽ phải khai báo các nhóm dữ liệu chung (toàn cục) để nhập, thay đổi … do đó khó kiểm soát
    • Khó khăn trong việc nâng cấp, bổ sung, không hỗ trợ mạnh việc sử dụng lại mã nguồn.
    • Không phù hợp với các hệ thống phần mềm lớn
    • Không thể hiện trung thực thế giới thực

1.2. Phương pháp lập trình hướng đối tượng

–         Xuất phát từ hai hạn chế chính của phương pháp lập trình cấu trúc:

  • Không quản lí được sự thay đổi dữ liệu khi có nhiều chương trình cùng thay đổi một biến chung. Vấn đề này đặc biệt nghiêm trọng khi các ứng dụng ngày càng lớn, người ta không thể kiểm soát được sự truy nhập đến các biến dữ liệu chung.
  • Không tiết kiệm được tài nguyên con người: Giải thuật gắn liền với cấu trúc dữ liệu, nếu thay đổi cấu trúc dữ liệu, sẽ phải thay đổi giải thuật, và do đó, phải viết lại mã chương trình từ đầu.

–         Để khắc phục  được hai hạn chế này khi giải quyết các bài toán lớn, người ta xây dựng một phương pháp tiếp cận mới, là phương pháp lập trình hướng đối tượng, với hai mục đích chính:

  • Đóng gói dữ liệu để hạn chế sự truy nhập tự do vào dữ liệu, không quản lí được.
  • Cho phép sử dụng lại mã nguồn, hạn chế việc phải viết lại mã từ đầu cho các chương trình.

Việc đóng gói dữ liệu được thực hiện theo phương pháp trừu tượng hoá đối tượng thành lớp từ thấp lên cao như sau:

  • Thu thập các thuộc tính của mỗi đối tượng, gắn các thuộc tính vào đối tượng tương ứng.
  • Nhóm các đối tượng có các thuộc tính tương tự nhau thành nhóm, loại bỏ bớt các thuộc tính cá biệt, chỉ giữ lại các thuộc tính chung nhất. Đây được gọi là quá trình trừu tượng hoá đối tượng thành lớp.
  • Đóng gói dữ liệu của các đối tượng vào lớp tương ứng. Mỗi thuộc tính của đối tượng trở thành một thuộc tính của lớp tương ứng.
  • Việc truy nhập dữ liệu được thực hiện thông qua các phương thức được trang bị cho lớp. Không được truy nhập tự do trực tiếp đến dữ liệu.
  • Khi có thay đổi trong dữ liệu của đối tượng, ta chỉ cần thay đổi các phương thức truy nhập thuộc tính của lớp, mà không cần phải thay đổi mã nguồn của các chương trình sử dụng lớp tương ứng.

Việc cho phép sử dụng lại mã nguồn được thực hiện thông qua cơ chế kế thừa trong lập trình hướng đối tượng. Theo đó:

  • Các lớp có thể được kế thừa nhau để tận dụng các thuộc tính, các phương thức của nhau.
  • Trong lớp dẫn xuất (lớp được kế thừa) có thể sử dụng lại các phương thức của lớp cơ sở (lớp bị lớp khác kế thừa) mà không cần thiết phải cài đặt lại mã nguồn.
  • Ngay cả khi lớp dẫn xuất định nghĩa lại các phương thức cho mình, lớp cơ sở cũng không bị ảnh hưởng và không phải sửa lại bất kì một đoạn mã nguồn nào.

–         Đặc trưng

  • Đóng gói dữ liệu: dữ liệu luôn được tổ chức thành các thuộc tính của lớp đối tượng. Việc truy nhập đến dữ liệu phải thông qua các phương thức của đối tượng lớp.
  • Sử dụng lại mã nguồn: việc sử dụng lại mã nguồn được thể hiện thông qua cơ chế kế thừa. Cơ chế này cho phép các lớp đối tượng có thể kế thừa từ các lớp đối tượng khác. Khi đó, trong các lớp kế thừa, có thể sử dụng các phương thức (mã nguồn) của các lớp bị kế thừa, mà không cần phải định nghĩa lại.

–         Lập trình hướng đối tượng có một số ưu điểm nổi bật:

  • Không còn nguy cơ dữ liệu bị thay đổi tự do trong chương trình. Vì dữ liệu đã được đóng gói vào các đối tượng. Nếu muốn truy nhập vào dữ liệu phải thông qua các phương thức cho phép của đối tượng.
  • Khi thay đổi cấu trúc dữ liệu của một đối tượng, không cần thay đổi các đổi mã nguồn của các đối tượng khác, mà chỉ cần thay đổi một số hàm thành phần của đối tượng bị thay đổi. Điều này hạn chế sự  ảnh hưởng xấu của việc thay đổi dữ liệu  đến các đối tượng khác trong chương trình.
  • Có thể sử dụng lại mã nguồn, tiết kiệm tài nguyên. Vì nguyên tắc kế thừa cho phép các lớp kế thừa sử dụng các phương thức được kế thừa từ lớp khác như những phương thức của chính nó, mà không cần thiết phải định nghĩa lại.
  • Phù hợp với các dự án phần mềm lớn, phức tạp.

Các khái niệm cốt lõi của phương pháp lập trình hướng đối tượng: đối tượng (Object), lớp (Class), tính trừu tượng hóa (Abstraction), tính bao đóng (Ecapsulation), tính kế thừa (Inheritance), tính đa hình (Polymorphism), giao tiếp.

  1. #1 by Roland 01695849839 on Tháng Bảy 23, 2010 - 11:58

    Rat bo ich cho sinh vien muon on lai OOP, ma khi tuyen dung nhan vien thi van de ve OOP thi de bi out nhat,
    thank so much with sharing Exp

  2. #2 by nghiavt on Tháng Mười 4, 2010 - 10:12

    Rất bổ ích😉 mặc dù đã làm nhiều năm nhưng đây là nơi để ôn lại lý thuyết khi muốn đi làm chỗ khác hì hì

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: