Rumah >pembangunan bahagian belakang >tutorial php >Pengaturcaraan Berorientasikan Objek PHP: Latihan Praktikal

Pengaturcaraan Berorientasikan Objek PHP: Latihan Praktikal

WBOY
WBOYasal
2024-05-09 21:57:01553semak imbas

PHP Pengaturcaraan berorientasikan objek (OOP) ialah paradigma pengaturcaraan yang menyerupai entiti sebenar. Konsep teras OOP termasuk: Kelas dan Objek: Kelas menentukan cetak biru untuk objek, yang merupakan contoh kelas. Enkapsulasi: Sifat dan kaedah objek diasingkan daripada kod lain. Warisan: Subkelas boleh mewarisi sifat dan kaedah kelas induk. Polimorfisme: Kaedah dengan nama yang sama mempamerkan tingkah laku yang berbeza pada masa jalan bergantung pada jenis objek.

Pengaturcaraan Berorientasikan Objek PHP: Latihan Praktikal

Pengaturcaraan Berorientasikan Objek PHP: Panduan Praktikal

Pengenalan

Pengaturcaraan berorientasikan objek (OOP) ialah paradigma pengaturcaraan yang diterima pakai secara meluas dalam idea pembangunan perisian moden yang entiti dunia sebenar. Dalam artikel ini, kami akan meneroka OOP dalam PHP secara mendalam dan menunjukkan kuasanya melalui contoh praktikal.

Kelas dan Objek

Dalam OOP, kelas ialah pelan tindakan objek, yang mentakrifkan data dan gelagatnya. Objek ialah contoh kelas yang mempunyai data dan gelagatnya sendiri, tetapi gelagat itu dikawal oleh takrifan kelas yang dimilikinya.

Contoh Kod:

class Car {
  private $model;
  private $make;

  public function __construct($model, $make) {
    $this->model = $model;
    $this->make = $make;
  }

  public function getDetails() {
    return "Model: {$this->model}, Make: {$this->make}";
  }
}

$car = new Car('Camry', 'Toyota');
echo $car->getDetails();

Encapsulation

Encapsulation ialah salah satu prinsip teras OOP, yang menerangkan keupayaan untuk mengasingkan sifat dan kaedah objek daripada kod lain.

Contoh Kod:

class User {
  private $username;
  private $password;

  public function setUsername($username) {
    // 验证用户名并设置
    $this->username = $username;
  }

  public function getUsername() {
    return $this->username;
  }
}

$user = new User();
$user->setUsername('admin');
echo $user->getUsername();

Warisan

Warisan membolehkan penciptaan kelas baharu (kelas anak) daripada kelas sedia ada (kelas induk) Kelas baharu akan mewarisi data dan tingkah laku kelas induk, dan juga boleh menentukan sifat dan kaedah khususnya sendiri.

Contoh Kod:

class Vehicle {
  private $make;
  private $model;

  public function __construct($make, $model) {
    $this->make = $make;
    $this->model = $model;
  }

  public function getDetails() {
    return "Make: {$this->make}, Model: {$this->model}";
  }
}

class Car extends Vehicle {
  private $numWheels;

  public function __construct($make, $model, $numWheels) {
    parent::__construct($make, $model);
    $this->numWheels = $numWheels;
  }

  public function getDetails() {
    return parent::getDetails() . ", Num Wheels: {$this->numWheels}";
  }
}

$car = new Car('Toyota', 'Camry', 4);
echo $car->getDetails();

Polymorphism

Polymorphism membolehkan kaedah kelas ibu bapa dan anak mempunyai nama yang sama tetapi mempamerkan tingkah laku yang berbeza pada masa jalan bergantung pada jenis objek sebenar.

Contoh kod:

class Polygon {
  abstract public function getArea();
}

class Rectangle extends Polygon {
  private $width;
  private $height;

  public function __construct($width, $height) {
    $this->width = $width;
    $this->height = $height;
  }

  public function getArea() {
    return $this->width * $this->height;
  }
}

class Circle extends Polygon {
  private $radius;

  public function __construct($radius) {
    $this->radius = $radius;
  }

  public function getArea() {
    return pi() * pow($this->radius, 2);
  }
}

function calculateTotalArea($polygons) {
  $totalArea = 0;
  foreach ($polygons as $polygon) {
    $totalArea += $polygon->getArea();
  }
  return $totalArea;
}

$polygons = [
  new Rectangle(5, 10),
  new Circle(5),
];

echo calculateTotalArea($polygons);

Atas ialah kandungan terperinci Pengaturcaraan Berorientasikan Objek PHP: Latihan Praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn