Bài 03: Các Lớp – thuộc tính – phương thức của đối tượng

Ở phần trước các bạn đã biết được định nghĩa lập trình hướng đối tượng. Nhưng chỉ nói ở mức độ lý thuyết chứ chưa thấy đụng đến code. Bài này bắt đầu sử dụng code để tạo các đối tượng thông qua class (lớp).

Nội dung chính

  • 1. Lớp (class) là gì?
  • 2. Thuộc tính của lớp
  • 3. Phương thức của lớp
  • 4. Khởi tạo, gán và gọi thuộc tính – phương thức
    • Khởi tạo lớp mới
    • Truy xuất đến các thuộc tính của đối tượng
    • Gọi các phương thức của đối tượng

1. Lớp (class) là gì?

Như ta đã biết đối tượng là những sự vật, sự việc. Mà nó có những tính chất, hành động giống nhau. Vậy thì lớp (class) có thể được. Ví như là một mẫu mô tả trạng thái, hành động của đối tượng đó. Có rất nhiều người hiểu nhầm lớp chính là đối tượng,

Cú pháp:

ảnh minh họa

Ví dụ: Hãy khai báo lớp sinh viên (lớp này đại diện cho đối tượng sinh viên.

Ảnh minh họa

2. Thuộc tính của lớp

Thuộc tính của lớp đó là thuộc tính của đối tượng mà lớp đó mô tả. Ví dụ đối tượng động vật có những thuộc tính như là: mắt, mũi, tai, chân. Thì những thứ đó cũng chính là thuộc tính của lớp động vật.

Cú Pháp:

Ảnh minh họa

Bên trong đó var $tenthuoctinh chính là cách khai báo thuộc tính cho lớp.

Ví dụ: Đối tượng là động vật có các thuộc tính như mắt, mũi, tai, chân. Bạn hãy khai báo lớp động vật và các thuộc tính của lớp đó.

Ảnh mình họa

3. Phương thức của lớp

Phương thức của lớp thì chính là phương thức của đối tượng. Đó là tất cả hành động (hành vi) của đối tượng. Ví dụ đối tượng là động vật có các hành động như ăn, sủa, chạy …

Các phương thức nó rất giống với hàm. Có các tính chất như hàm đó chỉ khác đó là phương thức nằm trong một lớp đối tượng. Muốn gọi đến nó thì ta phải thông qua lớp đối tượng này. Từ nay để cho dễ tôi sẽ gọi các phương thức là hàm nhé.

Cú pháp:

Ảnh minh họa

Bên trong đó tenPhuongThuc chính là tên phương thức mình muốn tạo.

Ví dụ: Đối tượng là động vật có các thuộc tính như mắt, mũi, tai, chân. Các hành động như ăn, sủa, chạy hãy khai báo lớp động vật và các thuộc tính. Phương thức của lớp đó.

Ảnh minh họa

4. Khởi tạo, gán và gọi thuộc tính – phương thức

Khởi tạo lớp mới:

Tất nhiên bạn phải phân biệt được 2 từ khởi tạo đối tượng và khai báo đối tượng. Bạn khai báo đối tượng là ta tạo một lớp (class) của đối tượng đó. Còn khởi tạo đối tượng là ta phải tạo một hình tượng của lớp mà ta đã khai báo. Vì lớp mô phỏng cho đối tượng vậy nên sau này tôi sẽ dùng từ lớp thay cho đối tượng luôn.

Cú pháp: $ten_bien = new ClassName();

Ví Dụ: 

Ảnh minh họa

Truy xuất đến tất cả các thuộc tính của đối tượng

Để truy xuất đến tất cả các thuộc tính của đối tượng ta hãy dùng toán tử (->) để trỏ đến.

Cú pháp: $classname->method

Ví dụ:

Ảnh minh họa

Gọi các phương thức của đối tượng

Cũng tương tự như là truy xuất đến tất cả các thuộc tính của đối tượng, ta hãy dùng toán tử (->) để gọi các hàm trong đối tượng.

Cú pháp: $classname->function();

Ví dụ: 

ảnh minh họa

Các bạn thấy đó nó cũng giống như cách gọi hàm bình thường thôi đúng không nào?

Hàm trong đối tượng gọi đến các thuộc tính của chính mình bằng cú pháp sau đây:$this->ten_thuoc_tinh;

Ví dụ:

ảnh minh họa

Bài 04: Trừu tượng hóa dữ liệu

Nhắc đến đối tượng là nghĩ ngay đến sự trừu tượng của nó. Thông thường khi làm việc với đối tượng thì chúng ta hay có câu hỏi? Làm thế nào để xác định các phương thức và thuộc tính của một đối tượng và mô phỏng bằng code PHP? Để giải đáp được câu hỏi này, thì ta cần phải tìm hiểu khái niệm trừu tượng hóa dữ liệu trong lập trình hướng đối tượng PHP.

Nội dung bao gồm:

  • Trừu tượng hóa dữ liệu là gì?
  • Đối tượng bên trong thế giới thực và trong lập trình

Nội dung chính

  • 1. Trừu tượng hóa dữ liệu là gì ?
  • 2. Đối tượng bên trong thế giới thực và trong lập trình

1. Trừu tượng hóa dữ liệu là gì?

Trừu tượng hóa là quá trình đơn giản hóa một đối tượng mà trong đó chỉ bao gồm những đặc điểm quan tâm và bỏ qua những đặc điểm chi tiết nhỏ. Quá trình trừu tượng hóa dữ liệu sẽ giúp ta xác định được những thuộc tính. Hành động nào của đối tượng cần thiết sử dụng cho chương trình.

Trừu tượng hóa dữ liệu là quá trình trừu tượng hóa của một đối tượng một cách đủ thông tin. Để lưu vào hệ thống dữ liệu. Quá trình này rất giống với bộ phận phân tích hệ thống dữ liệu. Ta lấy thông tin của khách hàng và trừu tượng hóa để đưa vào CSDL.

Ví dụ: Xây dựng chương trình quản lý sinh viên

Đối tượng: Các Sinh Viên.

Dữ liệu:

  • Họ Tên
  • Ngày Sinh
  • Giới Tính
  • Địa Chỉ
  • Học Lớp

Hành động:

  • Thêm Sinh Viên
  • Đuổi Sinh Viên
  • Đăng ký học phần cho Sinh Viên

Ta thấy có rất nhiều thuộc tính và hành động của sinh viên nhưng khi lưu vào hệ thống ta phải trừu tượng hóa lại CSDL, tức là sàng lọc thuộc tính, hành động cần thiết cho phần mềm quản lý sinh viên, bỏ đi những thuộc tính không cần thiết và hành động không cần thiết.

Tóm lại: Trừu tượng hóa dữ liệu là quá trình để tổ chức một bài toán phức tạp thành những đối tượng có cấu trúc chặt chẽ, trong đó các dữ liệu và hành động của đối tượng được định nghĩa. Trong đối tượng dữ liệu và hành động sẽ có sự gắn kết chặt chẽ với nhau.

2. Đối tượng ở trong thế giới thực và trong lập trình

Đối tượng trong thế giới thực là một thực thể mà ta có thể sờ, nhìn thấy và cảm nhận được. Mỗi đối tượng đều có những thuộc tính, hành động riêng biệt.

Ví dụ:

Đối tượng trong lập trình dùng để mô tả, biểu diễn đối tượng trong thế giới thực, nó cũng có các thuộc tính hành động tác động lên nó (tác động lên dữ liệu).

Ví dụ: Lớp đối tượng mô tả con chó

Bài 05: Tính kế thừa trong PHP

Tính kế thừa là một tính chất quan trọng trong ba tính chất của lập trình hướng đối tượng. Nó đòi hỏi sự logic về phân tích các đối tượng trong phần mềm để từ đó đưa ra những mô hình design pattern giúp việc nâng cấp, bảo trì phần mềm dễ dàng hơn. Đây là tính chất được coi là tính chất quan trọng nhất. Bởi hầu hết các Framework trong PHP đều có sử dụng tính kế thừa, vì vậy nếu bạn đã xác định đi theo con đường lập trình PHP thì ắt phải hiểu về kế thừa.

Nội dung bài học như sau:

  • Tính kế thừa là gì ?
  • Gọi phương thức và thuộc tính của lớp cha trong kế thừa

Nội dung chính

  • 1. Tính kế thừa là gì ?
  • 2. Gọi các phương thức và thuộc tính của lớp cha
    • Gọi bên trong lớp con
    • Gọi từ bên ngoài lớp

1. Tính kế thừa là gì?

Giả sử tôi có 2 lớp Động Vật và lớp Con Trâu có những thuộc tính và phương thức sau:

Nhìn vào hình ta thấy 2 đối tượng Động Vật và Con Trâu có những đặc điểm chung và riêng. Đối tượng Con trâu chỉ có một đặc tính khác đó là nó có sừng, còn đối tượng động vật thì không có. Vậy ta có nhận xét như sau: Con trâu cũng là một động vật nên nó có những đặc tính của động vật, hay nói cách khác nó có những đặc điểm và hành động của động vật. Vì vậy con trâu có thể kế thừa những đặc điểm và phương thức của động vật.

Đấy là tôi đang nói đến tính kế thừa của các đối tượng trong thế giới thực, còn trong lập trình thì như thế nào ?

Rõ ràng 2 đối tượng Động Vật và Con Trâu có những thuộc tính và phương thức giống nhau tại sao ta lại phải khai báo 2 đối tượng.

2. Gọi các phương thức và thuộc tính của lớp cha

Sau khi kế thừa thì lớp có sẽ có những thuộc tính và phương thức ở lớp cha. Vậy làm thế nào để lớp con có thể truy xuất đến những thuộc tính và phương thức đó? Ta sẽ tìm hiểu thông qua 2 cách gọi đó là gọi từ bên trong lớp con và gọi từ bên ngoài lớp.

Gọi bên trong lớp con

Như khái niệm về tính kế thừa. Lớp con kế thừa từ lớp cha nên tất cả các phương thức và thuộc tính đều coi như là của nó (coi như chứ không phải là của nó hẳn) nên cách gọi cũng như cách nó gọi các phương thức thuộc tính của nó, đó là từ khóa $this->thuoctinh$this->phuong_thuc().

Tuy nhiên để phân biệt hàm nào của cha, hàm nào của con người ta hay gọi bằng từ khóa: parent::thuoctinhparent::phuong_thuc().

Gọi từ bên ngoài lớp

Cách gọi cũng như cách 1 của phần gọi bên trong lớp con, tuy nhiên không được sử dụng cách 2 (parent::thuoctinhparent::phuong_thuc()).


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.