Аргерих Л. О языке РНР. Часть 1. Страница 100


// Выведем на экран элементы, имеющиеся в массиве 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>");




Если вы занимаетесь прокладкой кабеля или проводки, вам просто не обойтись без качественной трубы пвх. На нашем специализированном сайте вы сможете найти широкий выбор различных труб, кабелей и др. по выгодной для вас цене.