Thứ Ba, 2 tháng 2, 2016

Hướng đối tượng là gì, cách khai báo, thiết lập và truy xuất đối tượng, thuộc tính, phương thức

banner

Phần 1 : Hướng đối tượng là gì, cách khai báo, thiết lập và truy xuất đối tượng, thuộc tính, phương thức

Trong nhiều năm, PHP đã bị coi là một ngôn ngữ nghèo nàn, và đứng thứ hạng thấp trong bảng xếp hạng ngôn ngữ lập trình bởi ví nó không hỗ trợ tính hướng đối tượng. Đến năm 2004, phiên bản PHP 5 ra đời đã tạo ra bước ngoặc mới cho ngôn ngữ lập trình PHP, giúp PHP bắt kịp với xu thế và trở thành một trong những đối thủ nặng ký so với các ngôn ngữ lập trình khác. Vậy thì hướng đối tượng là gì? và tại sao nó lại đóng một vai trò to lớn như vậy ? Hít một hơi thật sâu, làm vài động tác thể dục, ngồi thẳng lưng và chúng ta bắt đầu phân tích và tìm hiểu về hướng đối tượng (OOP) trong PHP nào :)
Theo như định nghĩa của Wikipedia thì :
Object-oriented programming as a ‘programming paradigm that represents concepts as “objects” that have data fields and associated procedures known as “methods”.
Hướng đối tương là môt mô hình lập trình phân tách nội dụng của chương trình theo hướng cổ điển (thủ tục) và nhóm các thuộc tính, phương thức (properties, methods) giống nhau thành một đối tượng (class), giúp rút ngắn , tránh việc dư thừa, và giữ vững được nguyên lý DRY – DONT REPEAT YOURSELF, dễ dàng trong vấn đề báo trì, tăng hiệu quả công việc.
Hãy thử hình dung bạn xây dựng 1 website hoặc một hệ thống lên cả nghìn, thậm chí hàng triệu dòng code, các mã lệnh đươc viết theo hướng cổ điển, một trang web (page) chứa nào là html, php,js, xử lý xen lẫn, trà trộn với nhau. Và thế là mỗi lần xuất hiện lỗi, gặp phải một vấn đề  nào đó hay chỉ đơn thuần là sửa vài chỗ nhỏ khi có thay đổi yêu cầu thì bạn phải lục tung cả mớ code, đi sửa từng chỗ này chỗ kia vì các đoạn code trùng lặp, điều này quả thật là một cơn ác mộng đối với một lập trình viên. Chính vì thế OOP ra đời nhằm giúp bạn giải quyết vấn đề này.

a. Cấu trúc class

Để khai báo một class trong PHP, ta sử dụng từ khóa class, theo sau là tên class và một cặp ngoặc nhọn
Sau khi tạo class xong, chúng ta có thể lưu trữ class vào một biến, và sử dụng biến này truy xuất các phương thức , thuộc tính của class
Để lưu trữ class vào biến, ta sử dụng từ khóa new
Để xem cấu trúc và nội dung của class như thế nào, bạn dùng từ khóa var_dump() ,
Copy toàn bộ nội dung :
vào một file đặt tên là bai1.php và lưu vào thư mục gốc của website, chạy đường dẫn http://localhost/bai1.php và xem kết quả. Vậy là xong, chúng ta đã hoàn thành đoạn mã hướng đối tượng đầu tiên một cách đơn giản nhất, tiếp theo hãy tìm hiểu cách thức khai báo thuộc tính và phương thức trong class.

b) Khai báo phương thuộc tính của class

Thuộc tính của class hiểu một cách đơn giản là chỉ như là một biến chứa dữ liệu thông thường của PHP, chỉ có khác biệt là nó được đặt vào  class và có mối liên quan mật thiết với class chưa nó, và muốn truy xuất được thuộc tính của class thì phải thông qua một object . Cách khai báo thuộc tính của class như sau

c ) Truy xuất thuộc tính trong class

Để có thể truy xuất thuộc tính trong class, ta dùng con trỏ “->” của đối tượng object. Giả sử chúng ta muốn truy xuất thuộc tính $property1 và xuất ra ngoài màng hình dòng chữ “Mình là thuộc tính của class KungfuClass!”, hãy xem đoạn code dưới đây

d ) Khai báo phương thức trong class

Cũng như thuộc tính, phương thức của class hiểu đơn giản chính là function được đặt trong class, và có mối liên quan mật thiết với class. Để tạo phương thức trong class, chúng ta làm như sau
e ) Truy xuất phương thức trong class
Để truy xuất phương thức trong class, cũng như truy xuất thuộc tính, đơn giản chúng ta dùng con trỏ ->
Ngoài ra, hướng đối tượng cho phép chúng ta thiết lập và truy xuất thuộc tính, phương thức bên trong class thông qua con trỏ $this
Chạy lại đoạn script trên, chúng ta sẽ thấy xuất hiện ra ngoài trình duyệt 2 dòng chữ đó là  “Mình là thuộc tính của class KungfuClass !” và “Xin chào, tôi là phương thức của class KungfuClass !”.
Bằng cách nhóm các đối tượng có điểm tương đồng về thuộc tính và phương thức trong một class, ta gọi là lớp cha, và được các lớp khác kế thừa lại (lớp con). Chúng ta sẽ không phải mất thời gian cho việc phải khai báo đi , khai báo lại những đặc điểm chung đó. chẳng hạn như khi nói về xe, chúng ta có nào là xe hơi, xe máy, xe ô tô, xe tăng,…Chúng ta nhận thấy tất cả chúng đều có những đặc điểm chúng như là : vận tốc màu sắc, trọng lương, có thể chạy được,…chúng ta sẽ quy chúng về một lớp chung, tạm gọi là lớp Xe, trong lớp Xe này sẽ có các thuộc tính là vận tốc, màu sắc, kích thước và phương thức chung đó là chạy
Ở ví dụ trên, lớp xe là lớp cha, chứa các đặc điểm chung của  các loại xe và các loại xe như xe hơi, xe máy, xe tăng,.. là các lớp con sẽ mang nhưng đặc điểm của lớp cha, nhưng khác nhau ở những chi tiết như xe hơi thì có tốc độ chạy cao hơn xe máy, xe máy thì chạy nhanh hơn xe tăng,.. hoặc sự khác nhau về màu sắc như xanh, đỏ, tím, vàng,…
Ở các ví dụ trên, các bạn có để ý thấy từ khóa “public” không ? Đó chính là tầm vực của biến, bài viết tới mình sẽ nói chi tiết hơn về vấn đề này. Thân !

0 nhận xét: