}
return false;
}
Метод stop() устроен аналогично. Он проверяет, работает ли двигатель, и если да, то останавливает автомобиль. Обратите внимание, что проверку работы двигателя можно было бы выполнить в функции stop() объекта engine, чтобы вообще не думать о ней. Необходимо часто задаваться вопросами о том, где лучше поместить логику. Это основа разработки хорошей, успешной
function stop()
{
if ($this->engine->isRunning()) { $this->engine->stop();
)
}
// Некоторые другие функции, такие как движение, поворот и т. д. Теперь посмотрим, как этот объект может быть использован в программах.
Объекты
Объект в нашей программе является экземпляром (instance) класса. Причина, по которой он называется экземпляром, заключается в том, что мы можем создавать несколько объектов (или экземпляров) одного и того же класса, подобно тому как на шоссе может быть много машин одного и того же класса. Чтобы создать два новых автомобиля, нам надо лишь выполнить в своей программе такие строчки кода:
<?php
5 carl = new Car(); $car2 = new Car() ;
Новые экземпляры класса, т. е. новые объекты, создаются с помощью ключевого слова new. Ссылки на вновь созданные объекты помещаются в переменные $саг1 и соответственно. Теперь у нас есть два объекта доступных для использования. А для того чтобы создать десять автомобилей, мы могли бы воспользоваться таким массивом объектов:
$cars = array(); for ($i = 0; $i < 10; $i++) { $cars[$i] = new Car();
>
Чтобы завести автомобиль, мы вызываем его метод =
if (ScarHasStarted) echofCar has started."); А чтобы остановить автомобиль, следует поступить так:
$car1->stop();
Как можно видеть, использовать интерфейс этого объекта просто. При этом не требуется знать, как устроен этот метод. Программисту надо лишь знать, какие сервисы предоставляет объект. Эта программа вполне могла бы заводить и останавливать физический автомобиль, оставляя совершенно неиз-
сложность выполняемых методов и детали, касающиеся членов. Эта идея создания простых в использовании объектов подводит нас к следующему разделу, инкапсуляции. Но пока подробнее поговорим о создании экземпляров объектов с помощью методов-фабрик.
Фабричные методы
Иногда удобно не вызывать самому оператор new, а попросить некоторый объект создать для вас новый объект. Такие классы называются фабриками (factories), а методы, которые создают объекты, называются фабричными методами (factory methods). Слово «фабрика» в данном контексте представляет собой метафору производственного оборудования. Например, фабрика, производящая двигатели и принадлежащая General Motors, вполне аналогична фабрике объектов, производящей объекты конкретного типа. Не вникая пока слишком подробно в сложные объектные модели, посмотрим, как можно использовать фабрики в некоторых областях разработки веб-приложений. Вот несколько примеров: