6CC001 Workshop - week 02
From mi-linux
Jump to navigationJump to searchMain Page >> Web Application Development >> Workbook >> Week 02
We are looking here at the examples already covered in class.
First, let's create our superclass:
- The common properties applies to all product types
- The constructor initializes all common properties.
- The getProducer assessor method allows access to the class's properties
- The getProductDetails public method returns a brief summary of the product (title and producer name)
class ShopProduct { public $title; public $producerMainName; public $producerFirstName; public $price; function __construct($title, $firstName, $mainName, $price) { $this->title = $title; $this->producerFirstName = $firstName; $this->producerMainName = $mainName; $this->price = $price; } public function getProducer() { return "$this->producerFirstName $this->producerMainName"; } public function getProductDetails() { $s = "$this->title ($this->producerFirstName $this->producerMainName)"; return $s; } }
class CdProduct extends ShopProduct { public $playLength; // Let's override the constructor function __construct($title, $firstName, $mainName, $price, $playLength) { parent::__construct($title, $firstName, $mainName, $price); $this->playLength = $playLength; } function getPlayLength() { return $this->playLength; } // Let's override getProductDetails function getProductDetails() { $s = parent::getProductDetails(); $s.= " - playing time : $this->playLength"; return $s; } }
class BookProduct extends ShopProduct { public $numPages; // Let's override the constructor function __construct($title, $firstName, $mainName, $price, $numPages) { parent::__construct($title, $firstName, $mainName, $price); $this->numPages = $numPages; } function getNumberOfPages() { return $this->numPages; } // Let's override getProductDetails function getProductDetails() { $s = parent::getProductDetails(); $s.= " - number of pages : $this->numPages"; return $s; } }
$CD1 = new CdProduct("Back to black", "Amy", "Winehouse", 7.99, 63); $CD2 = new CdProduct("Back to bedlam", "James", "Blunt", 7.99, 51); $Book1 = new BookProduct("1984", "George", "Orwell", 8.99, 352); $Book2 = new BookProduct("Never Let", "Kazuo", "Ishiguro", 7.99, 276); echo $CD1->getProductDetails()."<br>"; echo $CD2->getProductDetails()."<br>"; echo $Book1->getProductDetails()."<br>"; echo $Book2->getProductDetails()."<br>";