Доброго времени суток дорогой читатель Сегодня я поговорю с Вами о том, что такое объектно — ориентированное программирование в php, а именно затронем тему объектов и классов. Мне сложно говорить об этом, так как я сам только начал познавать это направление и мои слова могут быть не верными. Поэтому данная тема из области «Как я понял», а не «Повторяй за мной!» Исходя из этого, читаем данную заметку, и если я не прав — поправляем. А если я прав, то желаем удачи
Первым делом хотелось бы сказать следующее. Данные заметки (я надеюсь их будет много) было бы логичнее размещать в рубрике «Уроки по php», но так как данный материал, больше из области «Я так думаю», нежели «Я это точно знаю», я помещаю его в новую рубрику «Я учусь»
Ладно, давайте приступим.
Прислушайтесь к словосочетанию объектно — ориентированное программирование. Из него должно быть понятно, что весь процесс программирования базируется на неких объектах. Что же такое объекты? Объекты это экземпляр класса. Что же тогда такое классы? А классы это описание (на языке программирование) устройства еще не созданного объекта. Нормально объяснил, да?
Естественно все то, что я только что написал, не ответит Вам на вопрос, что же такое классы и объекты. Именно поэтому нужен простой и до боли знакомый пример.
Я очень долго думал, на каком примере Вам показать, что же такое классы и объекты. Была мыслишка повторить все то, что я слышал от автора курсов по самообучению Си. Он пояснял все на примере братьев наших меньших, от чего у меня шарики за ролики заехали.
Хотя сейчас, после некоторого времени работы с классами, пример с животными мне кажется вполне логичный. Но, как новичку, подобный пример мне не понравился.
В общем я решил показать Вам класс кружки. Да, да... Обычной кружки, в которую мы каждое утро наводим чай или кофе. В общем то это и будет делать наш класс, наводить чай или кофе
Для начало давайте поговорим из чего состоит класс. Класс состоит и двух вещей:
Давайте создадим наш класс, и объявим в нем свойства:
class glass
{
var $drink = '';// кофе или чай
var $water = FALSE;// вода (TRUE вода налита; FALSE вода не налита)
var $sugar = FALSE;// сахар (TRUE положили сахар; FALSE не положили сахар)
}
Класс объявляется ключевым словом class, после чего идет имя класса. Я назвал класс glass, что в переводе стакан (если верить гугл транслейт)
В теле класса я создал три свойства:
Теперь давайте создадим методы класса. Методов будет четыре. Нам понадобятся такие действия как:
class glass
{
var $drink = '';// кофе или чай
var $water = FALSE;// вода (TRUE вода налита; FALSE вода не налита)
var $sugar = FALSE;// сахар (TRUE положили сахар; FALSE не положили сахар)
// положить кофе или чай.. ну или еще что-нить =)
function set_drink($name)
{
$this->drink = $name;
}
// налить воды
function set_water()
{
$this->water = TRUE;
}
// положить сахар
function set_sugar()
{
$this->sugar = TRUE;
}
// мешать содержимое кружки ложкой
function interfere_with()
{
if (empty($this->drink) AND $this->water == FALSE AND $this->sugar == FALSE)
return "Дзынь-дзынь... кружка пуста, и я не знаю какого результата Вы ждете =(";
if (!empty($this->drink) AND $this->water == FALSE AND $this->sugar == FALSE)
return "Странный скрежет... К сожалению результата нет =(";
if (!empty($this->drink) AND $this->water == TRUE AND $this->sugar == FALSE)
return "Дзынь-дзынь... Ура! Вы получили НЕ сладкий ".$this->drink;
if (!empty($this->drink) AND $this->water == TRUE AND $this->sugar == TRUE)
return "Дзынь-дзынь... Ура! Вы получили сладкий ".$this->drink;
if (empty($this->drink) AND $this->water == TRUE AND $this->sugar == TRUE)
return "Дзынь-дзынь... Ура! Вы получили cладкую воду";
if (empty($this->drink) AND $this->water == FALSE AND $this->sugar == TRUE)
return "Странный скрежет... К сожалению результата нет =(";
if (empty($this->drink) AND $this->water == TRUE AND $this->sugar == FALSE)
return "Дзынь-дзынь... В кружке просто вода";
if (!empty($this->drink) AND $this->water == FALSE AND $this->sugar == TRUE)
return "Странный скрежет... К сожалению результата нет =(";
}
}
$glass = new glass();
Объект создается через ключевое слово new. После чего идет имя класса.
Давайте наполним кружку водой, и хорошенько размешаем.
$glass->set_water();// зальем водой
echo $glass->interfere_with();// помешаем
Вот, что я увидел на экране:
хм... Давайте добавим сахару
$glass->set_water();// зальем водой
$glass->set_sugar();// насыпим сахар
echo $glass->interfere_with();// помешаем
Ну а теперь давайте добавим все ингредиенты
$glass->set_drink('кофе');// насыпим кофе
$glass->set_sugar();// насыпим сахар
$glass->set_water();// зальем водой
echo $glass->interfere_with();// помешаем
Данный пример конечно не покажет Вам всей пользы использования ООП, но если у Вас богатая фантазия, то Вы уже скорее всего увидели какие горизонты Вам открылись
Мне осталось добавить, что объектов одного класса можно создать сколько угодно. Поэтому на своем столе (экране), Вы можете расположить несколько кружек, с разными напитками
Надеюсь данный пример Вам поможет приблизительно понять, что такое классы и объекты. Если есть какие либо вопросы, или просто комментарии, то пишите.
Всего Вам наилучшего! У меня все
>Кстати, если свойство имеет область видимости publick
правильно public
и впревые слышу такие словосочетания:
>каждое утро наводим чай
>наводить чай или кофе
Но это не важно)
По сути мы получаем одну логику (класс то один), а вот объектов данного класса может быть 100500 штук =) В этом как раз и кроется вся прелесть...