Bài giảng Phát triển phần mềm nguồn mở - Bài 4: Object oriented programming - 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
JAVA
PHP
class Person
class Person
{
{
private String name;
private $name;
private int age;
private $age;
public String getName(){
public function getName(){
return name;
return $this->name;
}
}
public void setName(String name){
public function setName($name){
this.name = name;
$this->name = $name;
}
}
public int getAge(){
public function getAge(){
return age;
return $this->age;
}
}
public void setAge(int age){
public function setAge($age){
this.age = age;
$this->age = $age;
}
}
}
}
7
class Person{
private $name;
Ex: Person.php
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 . '<br />';
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
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;
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() . "<br>";
echo " Age: " . $this->getAge() . "<br>";
echo "Salary: " . $this->salary;
$e = new Employee("Nguyễn Lê", 20, 200);
$e->show();
}
}
Nguyễn Lê is 20 years old! Salary: 200
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;
$myclass->MyPublic(); // Works
$myclass->MyProtected(); // Fatal Error
$myclass->MyPrivate(); // Fatal Error
$myclass->Foo(); // Public, Protected and Private work
$this->MyProtected();
$this->MyPrivate();
}
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
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phát triển phần mềm nguồn mở - Bài 4: Object oriented programming - Nguyễn Hữu Thể", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_phat_trien_phan_mem_nguon_mo_bai_4_object_oriented.pdf

