// Выведем на экран элементы, имеющиеся в массиве foreach (Smedialtemsas $item) {
echo(" Маше; " . $itero->narne . "<br>"); echo("Items in stock: " . $item->inStock . "<br>"); echo(" Price; " . $item->price . "<br>"); echo("Rating: " . $item->ratinc . "<br>");
switch ($item->type) { case 'cd' :
echo("Serial No: " . $cds[$item->id]->serialNo . "<br>");
echo("Artist: " . $cds[$item->id]->artist . "<br>");
echo("# of Tracks: " . $cds[$item->id]->numberOfTracks . "<br>");
break;
case 'software' :
// вывод элементов, специфических для программ break;
case :
// вывод элементов, специфических для фильмов break;
case :
// вывод элементов, специфических для книг break;
}
Что если потребуется добавить еще один тип носителя? Придется снова обратиться к этому коду, добавить еще один блок case в оператор switch, а возможно, модифицировать другие места в нашей программе (таких операторов может оказаться много). ООП предоставляет возможность, называемую наследованием, которая позволяет отдельно помещать частности сходных между собой объектов, в то же время объединяя их сходства в базовом объекте. Благодаря чему можно вообще избавиться от оператора switch.
Например, в нашем интернет-магазине можно инкапсулировать аналогичные атрибуты различных типов носителей в объекте m edia. Этот объект называется базовым, или родительским, классом, или надклассом. Он содержит наиболее абстрактную реализацию (данные и методы), применимые к любому типу носителя, который мы позднее захотим включить. Вот воображаемая реализация класса Media:
<?php
define( "MIN_RATING", 0); define("MAX_RATING", 5);
// Media,php class Media !
var $id; var Sname; var SinStock; var Sprice; var Srating;
Media($id, Sname, SinStock, . $rating)
' (SinStock
if (Sprice< 0) $price = 0;
if (Srating< MIN_RATING) Srating = MIGRATING;
if (Srating MAX_RATING) $rating = MAX_RATING;
Sthis->id = Sid; $this->name = Sname;
$this->inStock = SinStock; $this->price = Sprice; $this->rating = Srating;
}
function buyО
Sthis->inS?tock--; '
function display() {
echo("Name: " . $this->name . "<br>");
echo("Items in stock: " . $this->inStock . "<br>");