Bài giảng Phát triển phần mềm nguồn mở: Bài 4 - Nguyễn Hữu Thể
lượt xem 3
download
Bài 4 trình bày về lập trình hướng đối tượng "object oriented programming". Nội dung chính trong chương này gồm có: Class, visibility, properties & methods, Getter & getter, create objects, constructor, destructor, inheritance, abstract class, interfaces, autoloading classes, anonymous functions, closures, namespace. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Phát triển phần mềm nguồn mở: Bài 4 - Nguyễn Hữu Thể
- PHÁT TRIỂN PHẦN MỀM NGUỒN MỞ OBJECT ORIENTED PROGRAMMING Nguyễn Hữu Thể
- Content 1. Class 2. Visibility 3. Properties & Methods 4. Getter & Setter 5. Create objects 6. Constructor 7. Destructor 8. Inheritance 9. Abstract class 10. Interfaces 11. Autoloading classes 12. Anonymous functions 13. Closures 14. Namespace 2
- Class class ClassName { // Properties // Methods } 3
- Visibility (public, private, protected) Three levels: • public • private • protected By default, all class members are public. 4
- Properties & Methods class Person { private $name; //public, protected private $age; public function show(){ echo $this->name . " is " . $this->age . " years old!"; } } 5
- Create objects (Create a new instance of the class) Using the new keyword: new ClassName() For example: $person = new PerSon(); $person2 = new PerSon(); 6
- Getter & Setter PHP JAVA class Person class Person { { private $name; private String name; private $age; private int age; public function getName(){ public String getName(){ return $this->name; return name; } } public function setName($name){ public void setName(String name){ $this->name = $name; this.name = name; } } public function getAge(){ public int getAge(){ return $this->age; return age; } } public function setAge($age){ public void setAge(int age){ $this->age = $age; this.age = age; } } } } 7
- class Person{ Ex: Person.php private $name; private $age; public function getName(){ return $this->name; } public function setName($name){ $this->name = $name; } public function getAge(){ return $this->age; } public function setAge($age){ $this->age = $age; } public function show(){ echo $this->name . " is " . $this->age . " years old!"; } $p = new Person(); } $p->setName("Nguyễn Văn A"); $p->setAge(18); echo $p->getName() . " is " . $p->getAge() . " years old."; //echo "{$p->getName()} is {$p->getAge()} years old."; $p->show(); 8
- __set() method class SetName { public function __set($variable, $value) { // echo $variable; echo "My " . $variable . " is " . $value . "\n"; } } $obj = new SetName (); $obj->Name = ‘Tom'; $obj->Name = ‘Jerry'; My Name is Tom My Name is Jerry 9
- __get() method class GetName { public $type = 'chocolate'; public $choctype = array ( 'milk' => 0, 'dark' => 1, 'plain' => 2 ); public function wrap() { echo 'Its a wrap'; } public function __get($index) { echo '$choctype property with index of: ' . $index . ''; return $this->choctype [$index]; } } $candy = new GetName (); // set a non existant property echo 'Value of property is: ' . $candy->milk; $choctype property with index of: milk 10 Value of property is: 0
- Constructor public function __construct() { //... } public function __construct($name, $age) { //... } 11
- Constructor class Person{ private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function show(){ echo $this->name . " is " . $this->age . " years old!"; } } $p = new Person("Nguyễn Trần Lê", 18); $p->show(); 12
- Destructor public function __destruct() { //... } Example: public function __destruct() { echo "Bye bye!"; //... } Using: $p = new Person("Nguyễn Trần Lê", 18); unset( $p ); // or exit: call __destruct() object $p->show(); // Object not found 13
- Inheritance class ParentClass { public function myMethod() { // Method code here } } class ChildClass extends ParentClass { public function myMethod() { // For ChildClass objects, this method is called // instead of the parent class's MyMethod() } } 14
- Calling a parent method from a child method parent::myMethod(); Example: parent::show(); parent::__construct(); 15
- require_once 'Person.php'; class Employee extends Person{ private $salary; Inheritance public function __construct($name, $age, $salary){ parent::__construct($name, $age); // Call __construct() parent $this->salary = $salary; } public function getSalary(){ return $salary; } // Override public function show(){ parent::show(); echo " Salary: " . $this->salary; } public function display(){ echo " Name: " . $this->getName() . ""; echo " Age: " . $this->getAge() . ""; echo "Salary: " . $this->salary; } $e = new Employee("Nguyễn Lê", 20, 200); } $e->show(); Nguyễn Lê is 20 years old! Salary: 200 16
- Visibility (Example 1) Property Visibility class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj = new MyClass(); echo $obj->public; // Works echo $obj->protected; // Fatal Error echo $obj->private; // Fatal Error $obj->printHello(); // Shows Public, Protected and Private 17
- Visibility (Example 2) Property Visibility class MyClass2 extends MyClass { // We can redeclare the public and protected method, but not private public $public = 'Public2'; protected $protected = 'Protected2'; function printHello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj2 = new MyClass2(); echo $obj2->public; // Works echo $obj2->protected; // Fatal Error echo $obj2->private; // Undefined $obj2->printHello(); // Shows Public2, Protected2, Undefined 18
- Visibility (Example 3) Method Visibility class MyClass { // Declare a public constructor public function __construct() { } // Declare a public method public function MyPublic() { } // Declare a protected method protected function MyProtected() { } // Declare a private method private function MyPrivate() { } // This is public function Foo() { $this->MyPublic(); $myclass = new MyClass; $this->MyProtected(); $myclass->MyPublic(); // Works $this->MyPrivate(); $myclass->MyProtected(); // Fatal Error } $myclass->MyPrivate(); // Fatal Error } $myclass->Foo(); // Public, Protected and Private work 19
- Visibility (Example 4) Method Visibility class MyClass2 extends MyClass { // This is public function Foo2() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); // Fatal Error } } $myclass2 = new MyClass2; $myclass2->MyPublic(); // Works $myclass2->Foo2(); // Public and Protected work, not Private 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Phát triển phần mềm mã nguồn mở: Chương 2 - ThS. Dương Thành Phết
21 p | 104 | 12
-
Bài giảng Phát triển phần mềm mã nguồn mở: Chương 1 - ThS. Dương Thành Phết
31 p | 113 | 10
-
Bài giảng Phát triển phần mềm hướng dịch vụ: Phần 1
56 p | 49 | 8
-
Bài giảng Phát triển phần mềm mã nguồn mở: Linux Kernel - Bùi Minh Quân
32 p | 132 | 8
-
Bài giảng Phát triển phần mềm mã nguồn mở: Quản lý gói phần mềm - TS. Ngô Bá Hùng
12 p | 110 | 8
-
Bài giảng Phát triển phần mềm hướng dịch vụ: Phần 2
65 p | 30 | 7
-
Bài giảng Phát triển phần mềm mã nguồn mở: Lập trình C/Linux - Bùi Minh Quân
29 p | 94 | 6
-
Bài giảng Phát triển phần mềm mã nguồn mở: Mở đầu - Bùi Minh Quân
12 p | 104 | 5
-
Bài giảng Phát triển phần mềm mã nguồn mở: Thị trường điện tử
43 p | 51 | 5
-
Bài giảng Phát triển phần mềm mã nguồn mở: Linux user management - Bùi Minh Quân
28 p | 123 | 5
-
Bài giảng Phát triển phần mềm mã nguồn mở: Giới thiệu về phần mềm mã nguồn mở - Bùi Minh Quân
39 p | 93 | 5
-
Bài giảng Phát triển phần mềm mã nguồn mở: Linux operating system - Bùi Minh Quân (tt)
43 p | 91 | 5
-
Bài giảng Phát triển phần mềm mã nguồn mở: Giới thiệu
16 p | 80 | 4
-
Bài giảng Phát triển phần mềm mã nguồn mở: IDE và SDK
40 p | 38 | 4
-
Bài giảng Phát triển phần mềm mã nguồn mở: MVC
12 p | 40 | 4
-
Bài giảng Phát triển phần mềm mã nguồn mở: Linux operating system - Bùi Minh Quân
15 p | 97 | 4
-
Bài giảng Phát triển phần mềm mã nguồn mở: Giới thiệu Drupal
49 p | 29 | 3
-
Bài giảng Phát triển phần mềm mã nguồn mở: Zend framework
11 p | 33 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn