Классы и объекты

Первое препятствие для понимания объектно-ориентированного программиро­вания — это странная и удивительная связь между классом и объектом. Для мно­гих людей именно эта связь становится первым моментом откровения, первой ис­крой интереса к объектно-ориентированному программированию. Поэтому давай­те уделим должное внимание основам.

Первый класс

Классы часто описывают с помощью объектов. Это очень интересно, потому что объекты часто описывают с помощью классов. Это хождение по кругу может сде­лать очень трудными первые шаги в объектно-ориентированном программирова­нии. Поскольку именно классы определяют объекты, мы должны начать с опреде­ления классов.

Если говорить кратко, то класс — это шаблон кода, который используется для создания объектов. Мы объявляем класс с помощью ключевого слова class и про­извольного имени класса. В именах классов может использоваться любое сочета­ние букв и цифр, но они не должны начинаться с цифры. Код, связанный с клас­сом, должен быть заключен в фигурные скобки. Давайте объединим эти элементы, чтобы построить класс.

class ShopProduct

{

// Тело класса

}

Класс ShopProduct из этого примера — уже полноправный класс, хотя пока и не слишком полезный. Но тем не менее мы сделали нечто очень важное. Мы определили тип; т.е. создали категорию данных, которые можем использовать в своих сценариях. Важность этого станет для вас очевидной по мере дальнейшего чтения.

Первые пару объектов

Если класс — это шаблон для создания объектов, следовательно, объект — это дан­ные, которые структурируются в соответствии с шаблоном, определенным в классе. При этом говорят, что объект—это экземпляр класса. Его тип определяется классом.

Мы будем использовать класс ShopProduct как форму для создания объектов типа ShopProduct. Для этого нам нужен оператор new. Он используется совместно с именем класса следующим образом.

$productl = new ShopProductО;

$product2 = new ShopProduct();

После оператора new указывается имя класса в качестве его единственного опе­ранда. В результате он создает экземпляр этого класса; в нашем примере создается объект типа ShopProduct.

Итак, мы использовали класс ShopProduct как шаблон для создания двух объ­ектов типа ShopProduct. Хотя функционально они идентичны (т. е. пусты), $product1 и $product2 — это два разных объекта одного типа, созданных с помо­щью одного класса.

Если вам все еще непонятно, давайте приведем такую аналогию. Представьте, что класс — форма для отливки, с помощью которой изготавливают пластмассовых уток. Объекты — это и есть утки. Тип создаваемых объектов определяется формой отливки. Утки выглядят одинаковыми во всех отношениях, но все-таки это разные предметы. Другими словами, это разные экземпляры одного и того же типа. У уток могут быть даже разные серийные номера, подтверждающие их индивидуаль­ность. Каждому объекту, создаваемому в PHP-сценарии, также присваивается уни­кальный идентификатор (он уникален на время жизни объекта), т.е. PHP повторно использует идентификаторы, даже в пределах одного и того же процесса (т.е. за­пуска сценария). Это можно продемонстрировать, выведя на печать объекты $productlи $product2:

var_dump($productl);
var_dump($product2);

После выполнения этих функций будут выведены следующие данные.

object(ShopProduct)#1 (0) { }

object(ShopProduct)#2 (0) { }

Передав наши объекты функции vardump (), мы можем узнать о них полезную информацию, включая внутренний идентификатор каждого объекта, указанный после символа ‘ #’.

Чтобы сделать наши объекты более интересными, мы должны немного изме­нить определение класса ShopProduct, добавив в него специальные поля данных, называемые свойствами (properties).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Перед отправкой формы: