Posted by : Unknown
2/9/12
Hướng đối tượng không phải là chỉ là một thuật
ngữ ngẫu nhiên mà bạn nghe trong giới lập trình. Có một lý do đằng sau
cái tên này - nhưng đó là gì? Hãy cũng bài viết khám phá một số nguyên
tắc cơ bản của khái niệm lập trình và giải thích lý do tại sao lập trình
hướng đối tượng lại chi phối cả công nghệ đằng sau bất kỳ phần mềm hiện
đại nào và sự đối lập với lập trình hướng thủ tục và logic.
Lịch sử của lập trình hướng thủ tục
Khi máy tính được phát minh lần đầu tiên, chúng cần được lập trình một cách rõ ràng với những cấu trúc đơn giản và "phần mềm" chỉ đơn thuần là một tập hợp của các lệnh rất đơn giản này kết hợp với nhau mà có thể chạy theo trình tự.
Ban đầu, những mã máy theo yêu cầu bằng văn bản - di chuyển "bit" này từ bộ nhớ này đến vị trí này, và thực hiện một cách logic toán tử "and" với những bit này, etc. Đó là khái niệm đầu tiên của lập trình Basic.
BASIC (Beginners All-Purpose Symbolic Instruction Code) là một ví dụ rất tốt cho lập trình hướng thủ tục. Mỗi dòng bắt đầu với một số dòng, theo sau bởi một lệnh đơn giản trong ngôn ngữ của con người có thể đọc được.
Kể từ khi ngôn ngữ thủ tục được viết tuần tự từng dòng, nó trở nên dễ dàng cho con người làm nắm bắt được những gì đang diễn ra trong chương trình. Tuy nhiên, nó cũng khó khăn để làm bất cứ điều gì ngoài một bài tập đơn giản và Lập trình hướng đối tượng ra đời.
Lập trình hướng đối tượng
Với lập trình hướng đối tượng, ý tưởng là nhóm lại với nhau các biến và hàm có liên quan trong một đối tượng, đại diện cho một số loại cấu trúc dữ liệu phức tạp. Đối tượng mà sau đó có thể được tái sử dụng nhiều lần, hoặc mở rộng ra những thứ phức tạp hơn.
Ví dụ, một trò chơi có thể có một đối tượng người chơi. Mỗi đối tượng người chơi trong game đại diện cho một cầu thủ thực sự duy nhất trong trò chơi trực tuyến nhiều người chơi. Mỗi đối tượng người chơi có một biệt danh, một vị trí hiện tại, trang bị, và cách di chuyển. Mặc dù mỗi người chơi là duy nhất, bạn vẫn muốn họ chia sẻ các chức năng cơ bản cùng mức độ. Mỗi người chơi có thể có một chức năng di chuyển, làm cho người chơi để di chuyển về phía trước số X của hình vuông. Mỗi người chơi có thể có một tốc độ di chuyển khác nhau, nhưng khi chúng tôi nói với các cầu thủ di chuyển trong một lệnh, nó sẽ biết làm thế nào để thích hợp với cơ chế của riêng mình.
Tại sao điều này hữu ích? Lấy một ví dụ thực tế cuộc sống - bởi vì giao diện người dùng đồ họa hiện đại sẽ không thể không có đối tượng - tất cả các hệ điều hành cung cấp một đối tượng Window. Do đó nó sẽ dễ dàng có một "cửa sổ" mới hoàn chỉnh với các nút chặt chẽ và toàn màn hình, và khả năng di chuyển xung quanh - mà không phải chương trình chính mình. Tất cả những gì bạn cần làm là tạo ra một cửa sổ.
Trong thực tế, phần mềm hiện đại bao gồm hàng ngàn hàng vạn đối tượng - không chỉ là cửa sổ, các nút, các field, và hộp thoại cảnh báo quá- mà bản thân chính là một loại đặc biệt của đối tượng cửa sổ - và chỉ cần được sắp xếp và logic giữa chúng, làm cho phần mềm khác nhau với những người khác nhau. Nó có nghĩa là các lập trình viên và nhà thiết kế phần mềm được tự do tập trung vào làm cho cơ cốt lõi của chương trình của họ mà không cần phải làm lại mỗi khi cần.
Một ưu điểm khác để thiết kế hướng đối tượng là chức năng được tách ra và vô hình với nhau. Vì vậy, khi người chơi nhấn nút quan trọng trong trò chơi của chúng tôi, nó gọi các chức năng di chuyển các đối tượng người chơi. Nếu chúng ta thực hiện một thay đổi nhỏ làm thế nào để di chuyển đó là chính xác được thực hiện trong các đối tượng người chơi như nhảy thay vì đi bộ, sau đó chúng tôi không cần phải điều chỉnh bàn phím. Nó vẫn gọi là "di chuyển" bất kể những gì xảy ra trong nội bộ các đối tượng người chơi - vì vậy chúng tôi có thể thay đổi chức năng mà không cần phá vỡ tất cả mọi thứ khác.
Điều này cũng đúng trong các hệ thống điều hành - nếu người dùng đột ngột quyết định thay đổi màu sắc cửa sổ màu đỏ, bạn không cần phải phát hiện và làm cho Window màu đỏ quá - đó là tất cả những gì được xây dựng vào các đối tượng cửa sổ.
Tính kế thừa
Một khi chúng ta có các đối tượng, chúng ta cũng có thể mở rộng và kế thừa để sản xuất các đối tượng có hành vi khác nhau hoặc các chức năng bổ sung hữu ích hơn. Bạn có thể tái phát minh ra bánh xe - nếu bạn muốn. Trong ví dụ cầu thủ của chúng tôi, có lẽ chúng ta muốn tạo ra một đối tượng siêu đẳng. Superman là một cầu thủ, giống như tất cả mọi người khác - ông muốn có một biệt danh, và muốn được nằm trong danh sách Ban lãnh đạo- nhưng thay vì hành động di chuyển chuẩn tương ứng với việc đi bộ của đối tượng cầu thủ X phía trước, chúng tôi muốn anh ta bay thay vì di chuyển 10 ô vuông ở một thời gian trên đầu trang của bất kỳ đối tượng trong đường đi. Bằng cách mở rộng đối tượng người chơi cơ bản chúng ta có thể "thừa hưởng" tất cả những chức năng hữu ích mà không cần phải viết lại nó một lần nữa - nhưng chúng tôi vẫn có thể "ghi đè lên" chức năng di chuyển với di chuyển đặc biệt bay siêu nhân của chúng tôi!
Lập trình hướng đối tượng là một việc rất khó nếu bạn chỉ có kinh nghiệm lập trình thủ tục.
Cuối cùng: ngôn ngữ lập trình dựa trên logic
Logic dựa trên ngôn ngữ lập trình như Prolog, không sử dụng các lệnh và các hướng dẫn trong ý nghĩa truyền thống. Thay vào đó, chúng sẽ giải quyết một vấn đề được đưa ra một tập hợp các quy tắc và điều kiện.
Hãy nghĩ về một bữa tiệc tối mà bạn đang chuẩn bị cho gia đình bạn. Dì của bạn không thể ngồi bên cạnh người chú của bạn bởi vì họ sẽ lập luận, bạn không muốn hai đứa con ngồi với nhau vì chúng sẽ ăn ít, chắc chắn bạn không muốn ngồi ở giữa hai con. Đó là những gì phải có - đó là chương trình Prolog bằng văn bản của bạn. Bây giờ chỉ cần cung cấp cho nó một danh sách các trẻ em và người lớn đến, và nó sẽ ra một danh sách những gợi ý về chỗ ngồi có thể xảy ra!
Nguồn: makeuseof.com
Bài viết liên quan :
- Trang chủ »
- Ebook - Lập trình »
- Tại sao có tên lập trình hướng đối tượng (Oject Oriented)?
{ 0 nhận xét }