Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Другие темы раздела
PHP ООП Класс изображения img https://www.cyberforum.ru/ php-oop/ thread599837.html
можно ли переменную класса сделать изображением ? если можно подскажите где поискать, в инете уже час роюсь, пока что не нашел, или покажите на примере этого простого класса class My { ...
Выдернуть данные из $_SESSION PHP ООП
Имеется вот такой набор данных в сессии: => shoppingCart Object ( => Array ( => Array ( => 1 ) ) => 64474 => 30 => => physical => 1 => Array ( ) ) необходимо выдернуть значение поля ,...
PHP ООП Simple MVC - Blog
Здравствуйте :) У меня такая проблема, нужно написать простой MVC - блог. Кто подскажет с чего лучше начать, ну а если лучше примерную последовательность действий. :)
PHP ООП Фильтрация информации на сайте! Делаю блог с использованием MVC. И вот дошел до того, что надо реализовать фильтрацию постов. В общем есть на странице отдельно список раздело и отдельно список всех месяцев за которые существую... https://www.cyberforum.ru/ php-oop/ thread594268.html
PHP ООП Не выводится результат полученной переменной https://www.cyberforum.ru/ php-oop/ thread591433.html
Ситуация следующая. В форме ввожу данные и обрабатываю их. <form action="result.php" method="post"> <p><input type="text" name="name" id="name"></p> <p><input name="submit" type="submit"...
PHP ООП Не знаю с чего начать в ООП
Народ, вообщем дело такое, вроде бы прочел не одну книгу по ооп на php теоритически вроде все знаю, но не знаю как начать писать сайт. МОгли бы вы выложить пример не большого сайта на ооп. Вопрос...
PHP ООП Меню и под меню (Вывод в шаблон)
Привет всем. Есть две таблицы таб.Category id title 1 Кат.1 2 Кат.2 3 Кат.3 4 Кат.4
PHP ООП как реализовать запросы в ооп приложении Изучаю потихоньку ооп и решил написать небольшой проект. В проекте конечно будет бд :) Так вопрос: как лучше всего реализовать хранение запросов к бд в ооп приложении. мои идеи: 1) написать... https://www.cyberforum.ru/ php-oop/ thread582926.html
PHP ООП Кодировка в скрипте https://www.cyberforum.ru/ php-oop/ thread581398.html
Здравствуйте, У меня на всех страницах стоит кодировка Utf-8 ,а в этом скрипте поиска кодировка windows-1251. Если меняю на своей страничке кодировку закарючки получаются. Подскажите пожалуйста,...
PHP ООП В DreamWeawer ошибка, а рабоатет всё отлично! Где проблема? Строка: $class::$func(); работает как надо, а вот DreamWeawer подсвечивает ошибку! В чем проблема, можно ли обращаться к методу класса таким образом? Или это опасно или нежелательно? я использую... https://www.cyberforum.ru/ php-oop/ thread576622.html
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
11.06.2012, 23:09 0

В чем суть интерфейсов?

11.06.2012, 23:09. Просмотров 6430. Ответов 6
Метки (Все метки)

Лучший ответ Сообщение было отмечено как решение

Решение


Представь игру MMORPG.
Есть мобы.
Мобы могут бегать, прыгать, драться.
Теперь представь что ты пишешь нового моба для игры.
В игре всех мобов обрабатывают какие то классы, они берут в цикле и перебирают всех мобов вызываю у них функцию обновления. Пусть будет Update().

Просто класс
PHP
1
2
3
4
class Mob
{
    public update() {...}
}
сам по себе класс Update не запустится.
Его запускает что то, например
PHP
1
2
3
4
5
6
7
8
9
10
11
class World
{
    public Update()
    {
         // когда в мире происходит слеюующий кадр, вызываетс я функция обновления.
         // тут в цикле перебираютя все объекты мира и для них вызывается эта функция.
         // тебя взяли на работу в близзард, и ты пишешь моба для дьябло 3
         // но ты по запарке забыл какую либо функцию, ну так как у нас в примере одна она, то 
         // ты забыл молу реализоватьф ункцию Update или опечатался при наборе
    }
}
теперь компилируем игру, и о чудо, ошибок нет, так как функуия будет вызвана только уже во время самой игры когда моб появится на карте.

мы бежим, тут появляется наш моб, и вызывается для него функция Update()!
Но у него нет этой фукнции, ты опечатался при наборе, и игра упала

Теперь представим что тот кто делал класс World решил подстраховаться, он сделал интерфейс с медобом Update() и при добавлении моба в массииу, он проверит, есть ли у моба данный интерфейс?
Если нет, то он выведет в лог ошибку, а моба не добавит в список.
Теперь если ты не указал мобу своиму интерфейс, он просто не добавится в список, а в лог посыпятся ошибки.
Игра не упадёт.
с другйо стороны, если ты указал мобу что у него есть интерфейс IMob но не реализовал функцию или опечатался, то игра даже не скомпилируется, так как комплятор сразу определить что у тебя не реализован такой то метод который есть в интерфейсе. Ты сразу поправишь свою ошибку и все довольны

Добавлено через 12 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
 
interface IMob
{
    public function Update();
}
 
class Dog implements IMob
{
    public function Update()
    {
        echo 'собачка побежала<br/>';
    }
}
 
class Cat implements IMob
{
    public function Update()
    {
        echo 'кошка побежала<br/>';
    }
}
 
class Cow
{
    public function Updat() // ошибка в имени
    {
        echo 'корова побежала<br/>';
    }
}
 
class World
{
    private $mobs = array();
    
    public function addMob(IMob $mob)
    {
        $this->mobs[] = $mob;
    }
    
    public function Update()
    {
        foreach ($this->mobs as $mob)
        {
            $mob->Update();
        }
    }
}
 
$world = new World;
 
$world->addMob(new Dog);
$world->addMob(new Cat);
$world->addMob(new Cow); //корова 
 
for ($i = 0; $i < 5; $i++)
{
    $world->Update();
}
Вот так, ты сразу получишь ошибку, что класс не совпадает.
HTML5
1
Catchable fatal error: Argument 1 passed to World::addMob() must implement interface IMob, instance of Cow given, called in
а если добавишь интерфейс
PHP
1
class Cow implements IMob
То ты получишь новую ошибку
HTML5
1
 Fatal error: Class Cow contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (IMob::Update)
Которая скажет что у тебя в классе Cow нет метода Update

Ну вот так ты не поломаешь игру Так как она даже не стартанёт, пока не исправишь. А если бы небыло проверки.
PHP
1
class Cow
PHP
1
public function addMob($mob)
То код запустится, и будет работать, может сутками, пока не придёт время вызова функции Update, а потом бац
HTML5
1
2
3
собачка побежала
кошка побежала
( ! ) Fatal error: Call to undefined method Cow::Update() in
А если это крупный проект)? типа дьябло или мира варкрафт?) и сервер упал?)
Вот для этого они и нужны.

Вернуться к обсуждению:
В чем суть интерфейсов?
4
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2012, 23:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Интерфейсы - в чем их суть
В чем суть интерфейсов объясните пожалуйста. Добавлено через 19 минут А если быть точнее, то...

В чем суть PHP?
Ребят, подскажите пожалуйста правильно ли я понял суть PHP. Вот лежит на сервере код определенный....

Указатели - в чем суть?
Кто нибидь может мне обястнить укасзатели в С++,ато я некак не врубаюсь.

подскажите в чем суть программы?
решение дифференциального уравнения? clc;clear;close all; global n Wp = tf(,) = tfdata(Wp,...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.