Hướng dẫn abstract static method php

Lập trình hướng đối tượng [OOP] là một trong những kỹ thuật lập trình rất quan trọng hiện nay. Nó được áp dụng ở hầu hết các ứng dụng thực tế xây dựng tại các doanh nghiệp. Các lập trình viên đa phần đã được học về lập trình hướng đối tượng ở trường đại học nhưng các nguyên lý cơ bản của lập trình hướng đối tượng đôi khi lại không nắm rõ dẫn đến sử dụng sai, không đúng triết lý của lập trình hướng đối tượng. Trên đây mình cũng có một chút chia sẻ về một số kiến thức về Lập trình hướng đối tượng nhằm giúp các bạn có được một cái nhìn tổng quát về OOP cũng như cách áp dụng nó. Vậy lập trình hướng đối tượng là gì? Theo wikipedia :

lập trình hướng đối tượng là một mẫu hình lập trình dựa trên khái niệm "công nghệ đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu, trên các trường, thường được gọi là các thuộc tính; và mã nguồn, được tổ chức thành các phương thức. Phương thức giúp cho đối tượng có thể truy xuất và hiệu chỉnh các trường dữ liệu của đối tượng khác, mà đối tượng hiện tại có tương tác [đối tượng được hỗ trợ các phương thức "this" hoặc "self"]. Trong lập trình hướng đối tượng, chương trình máy tính được thiết kế bằng cách tách nó ra khỏi phạm vi các đối tượng tương tác với nhau. Ngôn ngữ lập trình hướng đối tượng khá đa dạng, phần lớn là các ngôn ngữ lập trình theo lớp, nghĩa là các đối tượng trong các ngôn ngữ này được xem như thực thể của một lớp, được dùng để định nghĩa một kiểu dữ liệu.

Để dễ hiểu, lập trình hướng đối tượng là một kỹ thuật lập trình cho phép lập trình viên tạo ra các đối tượng trong code trừu tượng hóa các đối tượng thực tế trong cuộc sống.

Mục lục

Phần 1

  • Các đặc điểm cơ bản của lập trình hướng đối tượng. Chúng được thể hiện như thế nào trong PHP
  • Sự khác biệt giữa Abstract Class và Interface.
  • Thế nào là một hàm static. Phân biệt cách dùng từ khoá static::method[] với self::method[]

Phần 2

  • Thế nào là Trait
  • Thế nào là Namespaces
  • Thế nào là magic functions
  • Tìm hiểu về các quy tắc trong PSR-2

Phần 3

  • Các phương pháp thiết kế hướng đối tượng [SOLID].

Trong bài đầu tiên, mình sẽ chia sẻ về 3 vấn đề đó là: Các đặc điểm cơ bản của lập trình hướng đối tượng. Chúng được thể hiện như thế nào trong PHP, Sự khác biệt giữa Abstract Class và Interface, Thế nào là một hàm static. Phân biệt cách dùng từ khoá static::method[] với self::method[]

Nội dung

1. Các đặc điểm cơ bản của lập trình hướng đối tượng. Chúng được thể hiện như thế nào trong PHP?

Trong lập trình hướng đối tượng, sẽ có 4 tính chất sau: Tính trừu tượng [abstraction] trong lập trình hướng đối tượng giúp giảm sự phức tạp thông qua việc tập trung vào các đặc điểm trọng yếu hơn là đi sâu vào chi tiết.

  • Ví dụ khi một lập trình viên tạo một lớp [class] dùng đại diên cho các tài khoản tiền gửi ngân hàng của các khách hàng và đặt tên cho lớp này là BankAccount. Lớp này có hai thuộc tính là $balance và $interest dùng để lưu dữ liệu số tiền dư và lãi suất tiền gửi của tài khoản.
class BankAccount
{
   public $balance;
   public $interest;
}
  • Tiếp theo lập trình viên này thêm các phương thức gửi tiền [deposit] và rút tiền [withdraw] :
class BankAccount
{
    public $balance;
    public $interest;
    
    public function deposit [$amount] {
        //code
    }
    public function withdraw [$amount] {
        //code
    }
}

Với tính trừu tượng [abstraction] thì toàn bộ sự phức tạp của việc xử lý quá trình gửi tiền và rút tiền sẽ được thực hiện trong 2 phương thức depositwithdraw. Các lập trình viên không cần phải quan tâm tới sự phức tạp [hay nội dung chi tiết] của việc xử lý các công việc gửi tiền và rút tiền trên mà chỉ cần biết mục đích của từng phương thức là gì.

Dưới đây là một cách thực hiện [implementation] của phương thức deposit:

//nap tien vao tai khoan
	public function deposit [$amount] {
	if [$amount  100000000] { //tai khoan nay cho phep ban nap toi da 100 trieu 1 lan
		return "Error! You exceed the maximum amount, please upgrade your account";
	}
	$balance += $amount // tang so du tai khoan 
}

Vậy với tính trừu tượng thì lập trình viên chỉ cần quan tâm tới mục đích của phương thức deposit là để nạp tiền vào tài khoản. Toàn bộ chi tiết của quy trình xử lý gửi tiền sẽ được thực hiện ở bên trong phương thức deposit.

Tính kế thừa [Inheritance] trong lập trình hướng đối tượng cho phép một lớp [class] có thể kế thừa các thuộc tính và phương thức từ các lớp khác đã được định nghĩa. Lớp được kế thừa còn được gọi là lớp cha và lớp kế thừa được gọi là lớp con. Trong PHP việc kế thừa được thực hiện thông qua sử dụng từ khóa extends. Ở ví dụ dưới đây lớp Animal được gọi là lớp cha và lớp Bird được gọi là lớp con.

Chủ Đề