Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 23 kết quả

Đề tài: Lập trình hướng đối tượng?!!

  1. #1
    Ngày gia nhập
    08 2006
    Bài viết
    14

    Lightbulb Lập trình hướng đối tượng?!!

    Nhân có bạn thắc mắc về lập trình hướng đối tượng mà mình có bài viết khá lý thú sưu tầm được nên đưa ra để các bạb tham khảo.

    Hiện nay các bạn có thể nghe rất nhiều về cụm từ "Lập trình hướng đối tượng" nhưng cũng còn có nhiều người chưa thực sự hiểu cụm từ này hoặc hiểu chưa chính xác Nay tôi viết bài này để chia sẻ kinh nghiệm cùng các bạn, đặc biệt là những bạn chưa có nhiều kinh nghiệm trong lập trình. Những nội dung trong bài viết được tổng hợp từ Wikipedia và một số tài liệu khác. Bài viết của tôi có thể còn nhiều thiếu sót rất mong nhận được sự góp ý của các bạn.

    Ngoài ra để tiện cho các bạn theo dõi tôi để một số từ tiếng Anh trong ngoặc.


    Tôi xin nêu bố cục bài viết của tôi để các bạn tiện theo dõi

    1. Định nghĩa Lập trình hướng đối tượng (Object-oriented Programming).

    2. Định nghĩa một Lớp (Class).

    3. Định nghĩa một Đối tượng (Object).

    4. Nhận thức được sự khác biệt giữa Lớp và đối tượng.

    5. Những ưu điểm của Lập trình hướng đối tượng.

    1. Định nghĩa Lập trình hướng đối tượng.

    Lập trình hướng Đối tượng (OOP) là một phương pháp thiết kế và phát triển phần mềm. Những ngôn ngữ OOP không chỉ bao gồm cú pháp và một trình biên dịch (compiler) mà còn có một môi trường phát triển toàn diện. Môi trường này bao gồm một thư viện được thiết kế tốt, thuận lợi cho việc sử dụng các đối tượng.

    Đối với một ngôn ngữ lập trình hỗ trợ OOP thì việc triển khai kỹ thuật lập trình hướng đối tượng sẽ dễ dàng hơn. Kỹ thuật lập trình hướng đối tượng cải tiến việc phát triển các hệ thống phần mềm. Kỹ thuật ấy đề cao nhân tố chức năng (functionality) và các mối quan hệ dữ liệu.

    OOP là phương thức tư duy mới để giải quyết vấn đề bằng máy tính. Để đạt kết quả, lập trình viên phải nắm vấn đề thành một thực thể quen thuộc với máy tính. Cách tiếp cận hướng đối tượng cung cấp một giải pháp toàn vẹn để giải quyết vấn đề.

    Bây giờ tôi sẽ đi vào một đối tượng cụ thể. Bây giờ tui sẽ đặt ra một yêu cầu cho việc viết phần mềm quản lí việc buôn dược phẩm trong một cửa hàng.

    Vấn đề vi tính hóa việc mua bán dược phẩm bao gồm những gì?

    Những yếu tố đặc trưng nhất liên quan đến việc mua bán dược phẩm là:

    - Thuốc.

    - Nhân viên bán thuốc.

    - Khách hàng.

    Những hành động đặc trưng của việc mua bán dược phẩm bao gồm:

    - Nhân viên giới thiệu thuốc.

    - Khách hàng chọn thuốc loại thuốc phù hợp.

    - Khách hàng trả tiền.

    - Thuốc được trao cho khách hàng.

    Trên đây chỉ là ví dụ minh họa. Trong thực tế còn khá nhiều thao tác mà chúng ta - những người làm lập trình cần quan tâm.
    Mỗi vấn đề được chia ra thành nhiều yếu tố, được gọi là các Đối tượng (Objects) hoặc các Thực thể (Entities). Chẳng hạn như ở ví dụ trên, khách hàng, dược phẩm và nhân viên bán hàng là những đối tượng hoặc thực thể.

    Lập trình viên luôn luôn cố gắng tạo ra những kịch bản (scenarios) thật quen thuộc với những tình huống thực tiễn. Bước thứ nhất trong phương pháp này là làm cho máy tính liên kết với những đối tượng thế giới thực.

    Tuy nhiên, máy tính chỉ là một cỗ máy. Nó chỉ thực hiện những công việc được lập trình mà thôi. Vì thế, trách nhiệm của lập trình viên là cung cấp cho máy tính những thông tin theo cách thức mà nó cũng nhận thức được cùng những thực thể như chúng ta nhận thức.

    Đó chính là vai trò của kỹ thuật hướng đối tượng. Chúng ta sử dụng kỹ thuật hướng đối tượng để ánh xạ những thực thể chúng ta gặp phải trong đời sống thực thành những thực thể tương tự trong máy tính.

    Phát triển phần mềm theo kỹ thuật lập trình hướng đối tượng có khả năng giảm thiểu sự lẫn lộn thường xảy ra giữa hệ thống và lĩnh vực ứng dụng.

    Lập trình hướng đối tượng đề cập đến dữ liệu và thủ tục xử lý dữ liệu theo quan điểm là một đối tượng duy nhất. Lập trình hướng đối tượng xem xét dữ liệu như là một thực thể hay là một đơn vị độc lập, với bản chất riêng và những đặc tính của thực thể ấy. Bây giờ chúng ta hãy khảo sát những thuật ngữ ‘đối tượng’ (object), ‘dữ liệu’ (data) và ‘phương thức’ (method).

    Có nhiều loại đối tượng khác nhau. Chúng ta có thể xem các bộ phận khác nhau trong một cơ quan là các đối tượng. Điển hình là một cơ quan có những bộ phận liên quan đến việc quản trị, đến việc kinh doanh, đến việc kế toán, đến việc tiếp thị … Mỗi bộ phận có nhân sự riêng, các nhân sự được giao cho những trách nhiệm rõ ràng. Mỗi bộ phận cũng có những dữ liệu riêng chẳng hạn như thông tin cá nhân, bảng kiểm kê, những thể thức kinh doanh, hoặc bất kỳ dữ liệu nào liên quan đến chức năng của bộ phận đó. Rõ ràng là một cơ quan được chia thành nhiều bộ phận thì việc quản trị nhân sự và những hoạt động doanh nghiệp dễ dàng hơn. Nhân sự của cơ quan điều khiển và xử lý dữ liệu liên quan đến bộ phận của mình.

    Chẳng hạn như bộ phận kế toán chịu trách nhiệm về lương bổng đối với cơ quan. Nếu một người ở đơn vị tiếp thị cần những chi tiết liên quan đến lương bổng của đơn vị mình, người ấy chỉ cần liên hệ với bộ phận kế toán. Một người có thẩm quyền trong bộ phận kế toán sẽ cung cấp thông tin cần biết, nếu như thông tin ấy có thể chia sẻ được. Một người không có thẩm quyền từ một bộ phận khác thì không thể truy cập dữ liệu, hoặc không thể thay đổi làm hư hỏng dữ liệu. Ví dụ này minh chứng rằng các đối tượng là hữu dụng trong việc phân cấp và tổ chức dữ liệu.

    Khái niệm về đối tượng có thể được mở rộng đến hầu hết các lãnh vực đời sống, và hơn nữa, đến thế giới lập trình. Bất kỳ ứng dụng nào đều có thể được định nghĩa theo thuật ngữ thực thể hoặc đối tượng để tạo ra tiến trình xử lý mô phỏng theo tiến trình xử lý mà con người nghĩ ra.

    Phương pháp giải quyết ‘top-down’ (từ trên xuống) cũng còn được gọi là ‘lập trình hướng cấu trúc’ (structured programming). Nó xác định những chức năng chính của một chương trình và những chức năng này được phân thành những đơn vị nhỏ hơn cho đến mức độ thấp nhất. Bằng kỹ thuật này, các chương trình được cấu trúc theo hệ thống phân cấp các module. Mỗi một module có một đầu vào riêng và một đầu ra riêng. Trong mỗi module, sự điều khiển có chiều hướng đi xuống theo cấu trúc chứ không có chiều hướng đi lên.
    Phương pháp OOP cố gắng quản lý việc thừa kế phức tạp trong những vấn đề thực tế. Để làm được việc này, phương pháp OOP che giấu một vài thông tin bên trong các đối tượng. OOP tập trung trước hết trên dữ liệu. Rồi gắn kết các phương thức thao tác trên dữ liệu, việc này được xem như là phần thừa kế của việc định nghĩa dữ liệu.

    2. Định nghĩa một Lớp. (class)

    Lớp (class) có thể hiểu thông qua một trong ba định nghĩa sau:

    - Một lớp định nghĩa một thực thể theo những thuộc tính và những hành động chung.
    - Những thuộc tính và những hành động chung của một thực thể được nhóm lại để tạo nên một đơn vị duy nhất gọi là một lớp.
    - Một lớp là một sự xác định cấp chủng loại của các thực thể giống nhau.

    Một lớp là một mô hình khái niệm về một thực thể. Nó mang tính cách tổng quát chứ không mang tính cách đặc thù.

    Khi định nghĩa một lớp, chúng ta muốn phát biểu rằng một lớp sẽ phải có một tập hợp các thuộc tính và các hành động riêng.

    Để hiểu rõ hơn tôi có thể lấy ví dụ như sau.
    Lớp con người bao gồm:
    - Tên.
    - Chiều cao.
    - Cân nặng.
    - Màu tóc.
    - Viết.
    - Nói.
    Lớp này định nghĩa thực thể ‘Con người’. Mọi thực thể thuộc kiểu ‘Con người’ sẽ đều có những đặc tính và những hành động như đã được định nghĩa.

    Một khi một lớp đã được định nghĩa, chúng ta biết được những thuộc tính và những hành động của những thực thể ‘trông giống’ như lớp này. Vì thế, tự bản chất một lớp là một nguyên mẫu (prototype).

    3. Định nghĩa Đối tượng. (Object)

    Một lớp là một nguyên mẫu phác họa những thuộc tính và những hành động có thể của một thực thể. Để có thể sử dụng thực thể mà lớp định nghĩa, chúng ta phải tạo một ‘đối tượng’ từ lớp đó.

    Lớp là một khái niệm, còn đối tượng là một thể hiện được định nghĩa bởi lớp.

    Một đối tượng là một thực thể cụ thể (thông thường bạn có thể sờ chạm, xem thấy và cảm nhận).

    Kể từ lúc một đối tượng hiện hữu, những thuộc tính của nó là những giá trị xác định, và những hành động được định nghĩa cho đối tượng này được thực thi.

    Một đối tượng cụ thể được nhìn nhận thông qua các khía cạnh sau:
    - Tình trạng (state).
    - Thái độ (behavior).
    - Chân tính (identity).

    Để có thể kết hợp được một đối tượng ngoài đời thành đối tượng trong máy tính thì phải kết hợp các thuộc tính cũng như các hành động của đối tượng. Mỗi đối tượng có những đặc tính riêng mô tả đối tượng ấy là gì, hoặc hành động ra sao.

    Các yếu tố cấu thành một đối tượng:

    1. Thuộc tính: thuộc tính là một đặc tính mô tả một đối tượng.

    2. Hoạt động (Operation): Một hoạt động là một dịch vụ được yêu cầu của một đối tượng.

    3. Phương thức (Method): Phương thức là sự xác định về cách thức thực thi một hoạt động được yêu cầu.

    4. Thông điệp (Message): Một thông điệp là một lời yêu cầu một hoạt động.

    5. Sự kiện (Event): Một sự kiện là một sự việc xảy ra cho một đối tượng tại một thời điểm. Để đáp ứng lại sự kiện ấy, đối tượng sẽ thực hiện một hoặc nhiều phương thức.

    Nói cách khác, một sự kiện là một tác nhân mà đối tượng này gây ra cho một đối tượng khác. Chẳng hạn như click chuột trái trên một nút.

    Để hiểu rõ hơn các sự kiện, hãy khảo sát ví dụ sau từ thực tế:

    ‘Một người sẽ kêu lên khi bị đâm bằng một vật nhọn’.

    ‘Đâm’ là sự kiện gây ra sự phản ứng là ‘kêu lên’.

    Trong máy tính, một người sử dụng nhấn một nút trên bàn phím là một sự kiện chung. Sự phản hồi đối với sự kiện này là việc hiển thị ký tự tương ứng trên màn hình.
    4. Sự khác nhau giữa Lớp và Đối tượng.

    Có một sự khác biệt thực sự giữa một lớp và một đối tượng. Cần nhận thức rõ sự khác biệt này.

    Một lớp định nghĩa một thực thể, trong khi đó một đối tượng là một trường hợp của thực thể ấy.

    Đối tượng là một mô hình thực, trong khi lớp là một mô hình khái niệm - định nghĩa tất cả các thuộc tính và các phương thức cần thiết của một đối tượng.

    Tất cả các đối tượng thuộc về cùng một lớp có cùng các thuộc tính và các phương thức.

    Một lớp là một nguyên mẫu của một đối tượng. Nó xác định các hành động khả thi và các thuộc tính cần thiết cho một nhóm các đối tượng cụ thể.

    5. Ưu điểm của việc Lập trình hướng đối tượng.

    Lập trình hướng đối tượng đòi hỏi một sự chuyển hướng quan trọng trong tư duy của các lập trình viên. Phương pháp này làm cho tốc độ phát triển các chương trình mới nhanh hơn, và nếu được sử dụng đúng đắn phương pháp này sẽ cải tiến việc duy trì (maintenance), việc tái sử dụng (reusability) và việc đánh giá (revision) phần mềm.

    Những điểm ưu điểm của phương pháp hướng đối tượng là:

    - Phương pháp này tiến hành tiến trình phân tích, thiết kế và phát triển một vấn đề trong khuôn khổ những khái niệm và thuật ngữ thuộc lĩnh vực ứng dụng. Vì thế, có một sự tương hợp cao nhất giữa việc phát triển ứng dụng và vấn đề thực tế.

    - Chẳng hạn như trong trường hợp bán dược phẩm, ở mọi giai đoạn của việc phân tích, thiết kế và phát triển ứng dụng, luôn luôn có tiếng nói của khách hàng, của nhân viên bán hàng …

    - Phương pháp này hỗ trợ việc chia sẻ bên trong một ứng dụng.

    - Phương pháp này hỗ trợ việc tái sử dụng các đối tượng khi các ứng dụng mới được phát triển. Đây là ưu điểm rất quan trọng xét trong khía cạnh giảm thiểu chi phí về lâu về dài.

    - Chẳng hạn như hành vi của khách hàng một khi được mô hình hóa trong một ứng dụng thì có thể được sử dụng lại cho những ứng dụng liên hệ có bao gồm mô hình khách hàng.

    - Phương pháp này giảm thiểu các lỗi và những vấn đề liên quan đến việc bảo trì ứng dụng do khả năng tái sử dụng các đối tượng.

    - Phương pháp này tăng tốc tiến trình thiết kế và phát triển, một lần nữa đây là kết quả của việc tái sử dụng các đối tượng.

    Trong những phần trên tui đã nói khá nhiều. Bây giờ tui sẽ tóm tắt lại một cách ngắn gọn nhất các khái niệm.

    - Lập trình hướng Đối tượng là một cách tư duy mới để giải quyết vấn đề bằng máy vi tính. Thay vì nỗ lực đưa vấn đề vào trong khuôn khổ quen thuộc với máy vi tính, phương pháp hướng đối tượng tìm kiếm một giải pháp toàn vẹn cho một vấn đề.

    - Sự trừu tượng hóa dữ liệu là tiến trình xác định và nhóm các thuộc tính và các phương thức liên quan đến một thực thể cụ thể, trong tương quan với một ứng dụng.

    - Một lớp định nghĩa một thực thể theo những thuộc tính và những phương thức chung.

    - Một đối tượng là một trường hợp của một lớp.

    - Một lớp định nghĩa một thực thể, còn đối tượng là thực thể hiện thực.

    - Tiến trình hiện thực hóa một đối tượng được gọi là Thiết lập (Construction).

    - Tiến trình hủy bỏ một đối tượng được gọi là Hủy (Destruction).

    - Tính bền vững là khả năng lưu trữ dữ liệu của một đối tượng vượt quá thời gian tồn tại của đối tượng đó.

    - Việc đóng gói là tiến trình che giấu việc thực thi chi tiết của một đối tượng đối với người sử dụng đối tượng ấy.

    - Tính thừa kế là cơ chế cho phép một lớp chia sẻ các thuộc tính và các phương thức được định nghĩa trong một hoặc nhiều lớp khác.

    - Tính đa hình là một thuộc tính cho phép một phương thức có các tác động khác nhau trên nhiều đối tượng khác nhau.

    - Phương pháp hướng đối tượng đưa ra tiến trình phân tích, thiết kế và phát triển ứng dụng trong khuôn khổ các khái niệm và các thuật ngữ thuộc lĩnh vực ứng dụng.


    Bài viết trích từ http://giasuhanoi.com
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 09-08-2006 lúc 12:36 AM. Lý do: Để cho liền mạch

  2. #2
    No Avatar
    thandongdatviet Khách

    Thêm nữa đi bác ơi !
    Em muốn nghe tiếp ạ ...Bác làm ơn đi nha .

  3. #3
    Ngày gia nhập
    10 2006
    Nơi ở
    Bốn biển là nhà
    Bài viết
    36

    lần sau bác đưa thêm nhiều ví dụ minh họa vao cho dân amator như bọn em dễ nắm bắt

    Warning: Bạn nên Post bài cho đàng hoàng, nên nhìn người khác post bài để post bài nhé. Đừng có 'Nổ' quá như vậy. Cảm ơn bạn nhiều.(Last edit by Dreaminess 16/11/2006 10:28 PM GMT+7)

  4. #4
    Ngày gia nhập
    08 2006
    Bài viết
    18

    Xin hỏi bản quyền của bài viết này là gì thế (mình có thể copy sang site khác được không?)

  5. #5
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,749

    Xin hỏi bản quyền của bài viết này là gì thế (mình có thể copy sang site khác được không?)
    Cộng đồng C Việt hoạt động không ngoài mục đích học tập và trao đổi kinh nghiệm cho nên việc truyền bá thông tin ở đây cũng là việc tốt mà.
    Bản quyền thì không rõ, nhưng ở cuối có ghi "Bài viết trích từ http://giasuhanoi.com", thì anh cứ tùy ý ghi sao thì ghi thôi.

    Chúc may mắn nhiều.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  6. #6
    Ngày gia nhập
    01 2007
    Bài viết
    1

    Mặc định Lập trình hướng đối tượng?!!

    Mình cũng chỉ biết sơ sơ,Xin nêu ý kiến và mong được chỉ giáo!

    Theo mình hiểu thì Lập trình hướng cấu trúc thì phải định nghĩa phần dữ lệu riêng, phần hàm(phương thức trong ooP) riêng.Trong khi đó thì OOP cao hơn là xây dựng các Class vừa có các thành phần dữ liệu(thuộc tính) và các hàm(phương thức) trong cùng 1 class
    -UIT-

  7. #7
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Lập trình hướng cấu trúc: Chương trình được chia thành các hàm rời rạc và độc lập với nhau. Thông tin được trao đổi qua lại giữa các hàm con thông qua tham số,
    Lập trình hướng đối tượng: Chương trình thiết kế xoay quanh các dữ liệu mà ta làm trên đó hơn là bản thân chức năng của chương trình.
    Đây là định nghĩa mà tôi đúc kết được trong quá trình học.

  8. #8
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Em đang học về C, nhưng em muốn tìm hiểu thêm về "Lập trình hướng đối tượng". Em muốn mình chuyên sâu hơn trong lĩnh vực này.Nhờ các huynh chỉ giùm em cơ bản và tài liệu tham khảo nhé!

  9. #9
    Ngày gia nhập
    05 2007
    Bài viết
    1

    Mình thích vừa lý thuyết vừa thực hành & vừa có ví dụ minh họa cho rõ đọc khó hình dung ra quá !

  10. #10
    Ngày gia nhập
    12 2006
    Bài viết
    9

    cảm ơn ban rất nhiều

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn