vfu sem - php oop [12.10.2013]

31
PHP: Hypertext Preprocessor @d_danailov PHP - OOP

Upload: dimitar-danailov

Post on 11-May-2015

1.442 views

Category:

Technology


0 download

DESCRIPTION

Course Website: http://sem.vfu.bg Github: https://github.com/dimitardanailov/sem-vfu-programming Google Docs: https://docs.google.com/presentation/d/1rCi7LaxdDc9-cbaSNSDgUkVv208iwFw559sIgJ2Kr1E/edit Object-oriented programming (OOP) is a programming paradigm that represents concepts as "objects" that have data fields (attributes that describe the object) and associated procedures known as methods. Objects, which are usually instances of classes, are used to interact with one another to design applications and computer programs. C++, Objective-C, Smalltalk, Java and C# are examples of object-oriented programming languages.

TRANSCRIPT

Page 3: VFU SEM - PHP OOP [12.10.2013]

Topics Today

● Object-oriented programming Overview● Objects & Classes● Abstraction and encapsulation● Inheritance● Polymorphism● Class Diagrams

Page 4: VFU SEM - PHP OOP [12.10.2013]

OOP

Object-oriented programming (OOP) is a programming paradigm that represents concepts as "objects" that have data fields (attributes that describe the object) and associated procedures known as methods. Objects, which are usually instances of classes, are used to interact with one another to design applications and computer programs. C++, Objective-C, Smalltalk, Java and C# are examples of object-oriented programming languages.

Page 5: VFU SEM - PHP OOP [12.10.2013]

OOP (2)

● Objects & Classes● Abstraction and encapsulation● Inheritance● Polymorphism

Page 7: VFU SEM - PHP OOP [12.10.2013]

What is an object

Objects are the elements through which we perceive the world around us. All objects have these characteristics : ● Identity● State ● Behaviour

Page 8: VFU SEM - PHP OOP [12.10.2013]

<?php//Objects

$human = new stdClass();$human->gender = 'm';$human->age = 35;$human->name = 'Todor Dimov';

$child1 = new stdClass();$child1->name = 'Dimo Todorov';

$child2 = new stdClass();$child2->name = 'Todorka Todorova';

$human->childrens = array($child1, $child2);

var_dump($human);?>

Page 9: VFU SEM - PHP OOP [12.10.2013]

Classes (classification of objects)

A class is a group of objects with same attributes and behavior. The characteristics of a class are : ● A name● Attributes● Methods / Functions

Page 10: VFU SEM - PHP OOP [12.10.2013]

<?php/* Classes */class Human { private $name = null; private $gender = null; private $age = null; private $childrens = array(); public function __construct($name, $gender, $age, $childrens = array()) { $this->name = $name; $this->gender = $gender; $this->age = $age; $this->childrens = $childrens; }}/* … */?>

Page 11: VFU SEM - PHP OOP [12.10.2013]

<?php/* ... */

$child1 = new Human('Dimo Todorov', 'm', 12);$child2 = new Human('Todorka Todorova', 'f', 16);

$childrens = array($child1, $child2);$human = new Human('Todor Dimov', 'm', 35, $childrens);

var_dump($human);

?>

Page 12: VFU SEM - PHP OOP [12.10.2013]

Abstraction and encapsulation

Page 13: VFU SEM - PHP OOP [12.10.2013]

Abstraction

In computer science, abstraction is the process by which data and programs are defined with a representation similar in form to its meaning (semantics), while hiding away the implementation details. Abstraction tries to reduce and factor out details so that the programmer can focus on a few concepts at a time. A system can have several abstraction layers whereby different meanings and amounts of detail are exposed to the programmer.

Page 14: VFU SEM - PHP OOP [12.10.2013]

Encapsulation

Encapsulation is the practice of including in an object everything it needs hidden from the other objects in the system.

Page 16: VFU SEM - PHP OOP [12.10.2013]

Inheritance

In object-oriented programming (OOP), inheritance is a way to establish Is-a relationships between objects. In classical inheritance where objects are defined by classes, classes can inherit attributes and behavior from pre-existing classes called base classes, superclasses, or parent classes.

Page 17: VFU SEM - PHP OOP [12.10.2013]

// Inheritanceclass Human { private $name = null; private $gender = null; private $age = null; public function __construct($name, $gender, $age) { $this->name = $name; $this->gender = $gender; $this->age = $age; } static function prinHello($name) { echo 'Hello, ' . $name; } private function greetings() { echo 'Greetings'; }}

Page 18: VFU SEM - PHP OOP [12.10.2013]

class ParentClass extends Human { private $name = null; private $gender = null; private $age = null; private $childrens = array(); public function __construct($name, $gender, $age) { $this->name = $name; $this->gender = $gender; $this->age = $age; } public function getName() { //$this->greetings(); return parent::prinHello($this->name); } public function getChildrens() { return $this->childrens; } public function setChildren(Child $child) { $this->childrens[] = $child; }}

Page 19: VFU SEM - PHP OOP [12.10.2013]

Class Child extends Human { private $parents = array(); public function __construct($name, $gender, $age) { $this->name = $name; $this->gender = $gender; $this->age = $age; } public function getParents() { return $this->parents; } public function setParent(ParentClass $parent) { $this->parents[] = $parent; }}

Page 21: VFU SEM - PHP OOP [12.10.2013]

Polymorphism

Polymorphism describes a pattern in object oriented programming in which classes have different functionality while sharing a common interface.

Page 23: VFU SEM - PHP OOP [12.10.2013]

Class Abstraction

PHP 5 introduces abstract classes and methods. Classes defined as abstract may not be instantiated, and any class that contains at least one abstract method must also be abstract. Methods defined as abstract simply declare the method's signature - they cannot define the implementation.

Page 24: VFU SEM - PHP OOP [12.10.2013]

<?phpabstract class AbstractHuman { private $name = null; private $gender = null; private $age = null; public function __construct($name, $gender, $age) { $this->name = $name; $this->gender = $gender; $this->age = $age; } abstract public function getName(); abstract public function setName($name); abstract public function getGender(); abstract public function setGender($gender); abstract public function getAge(); abstract public function setAge($age);}?>

Page 25: VFU SEM - PHP OOP [12.10.2013]

<?phpclass ParentClass extends AbstractHuman { public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } public function getGender() { return $this->gender; } public function setGender($gender) { $this->gender = $gender; } // ...}?>

Page 27: VFU SEM - PHP OOP [12.10.2013]

Object Interfaces

Object interfaces allow you to create code which specifies which methods a class must implement, without having to define how these methods are handled.Interfaces are defined using the interface keyword, in the same way as a standard class, but without any of the methods having their contents defined.All methods declared in an interface must be public, this is the nature of an interface.

Page 28: VFU SEM - PHP OOP [12.10.2013]

<?php// Interfacesinterface iHuman { public function getName(); public function setName($name); public function getGender(); public function setGender($gender); public function getAge(); public function setAge($age);}?>

Page 29: VFU SEM - PHP OOP [12.10.2013]

<?phpclass ParentClass implements iHuman { public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } public function getGender() { return $this->gender; } public function setGender($gender) { $this->gender = $gender; } // ...}?>