OO объяснение PHP braindead n00b

Вы можете просто изменить текст кнопки после того, как пользователь нажал кнопку, предполагая, что противником ИИ является человек

12
задан hellweaver666 17 September 2008 в 14:56
поделиться

7 ответов

Я был на Вашем месте, но я видел свет после того, как я прочитал эту книгу (несколько раз!) http://www.apress.com/book/view/9781590599099 После того, как я считал это, я действительно "получил" его, и я не оглянулся назад. Вы получите его на Amazon.

я надеюсь, что Вы сохраняете, получаете его и любите его. Когда это объединится, это заставит Вас улыбнуться.

Состав бьет наследование.

0
ответ дан 2 December 2019 в 03:16
поделиться

Думайте о штуке. Любая штука, штука Вы хотите сделать материал к. Скажите, завтрак.

(Весь код является псевдокодом, любое подобие любому проживанию языка, мертвому, или быть клинически злоупотребленным в банковском деле, является совершенно случайным и ничто, чтобы сделать с Вашим сообщением, отмечаемым PHP)

, Таким образом, Вы определяете шаблон для того, как Вы представили бы завтрак. Это - класс:

class Breakfast {

}

Завтраки содержат атрибуты. В нормальном необъектно-ориентированном материале Вы могли бы использовать массив для этого:

$breakfast = array(
'toast_slices' => 2,
'eggs' => 2,
'egg_type' => 'fried',
'beans' => 'Hell yeah',
'bacon_rashers' => 3 
);

И у Вас были бы различные функции для игры с ним:

function does_user_want_beans($breakfast){
     if (isset($breakfast['beans']) && $breakfast['beans'] != 'Hell no'){
         return true;
     }
     return false;
}

И у Вас есть путаница, и не только из-за бобов. У Вас есть структура данных, с которой могут завинтить программисты по желанию, когда-либо расширяющийся набор функций, чтобы сделать с завтраком, полностью разведенным от определения данных. Таким образом вместо этого, Вы могли бы сделать это:

class Breakfast {
  var $toast_slices = 2;
  var $eggs = 2;
  var $egg_type = 'fried';
  var $beans = 'Hell yeah';
  var $bacon_rashers = 3;

  function wants_beans(){

     if (isset($this->beans) && $this->beans != 'Hell no'){
         return true;
     }

     return true;

  }

  function moar_magic_pig($amount = 1){

     $this->bacon += $amount;

  }

  function cook(){
      breakfast_cook($this);
  }

}

И затем управление идеей программы Завтрака становится намного более чистым:

$users = fetch_list_of_users();

foreach ($users as $user){
    // So this creates an instance of the Breakfast template we defined above

    $breakfast = new Breakfast(); 

    if ($user->likesBacon){
       $breakfast->moar_magic_pig(4);
    }

    // If you find a PECL module that does this, Email me.
    $breakfast->cook();
}

я думаю, что это выглядит более чистым, и намного более опрятный способ представить блобы данных, которые мы хотим рассматривать как последовательный объект.

существуют лучшие объяснения того, что OO на самом деле, и почему это академически лучше, но это - моя практическая причина, и это содержит бекон.

34
ответ дан 2 December 2019 в 03:16
поделиться

Предупреждение в месте: Вы не изучите программирование OO, не изучая дизайн OO! Ключевое понятие состоит в том, чтобы определить функции, воздействующие на Ваши данные вместе с соответствующими данными. Тогда Вы можете говорить Ваши объекты, что сделать, не имея необходимость запрашивать их содержание.

, Конечно, смотрят на" , Говорят, не Спрашивайте " философия и "Потребность знать, что" принцип (иначе "Закон Demeter") является очень важным, также.

7
ответ дан 2 December 2019 в 03:16
поделиться

Лучший совет был от: xtofl.myopenid.com ^^^^

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

0
ответ дан 2 December 2019 в 03:16
поделиться

Другой указатель для изучения OO:

Большинство учебных руководств OO сфокусируется на наследовании (например, класс X расширяет класс Y). Я думаю, что это - плохая идея. Наследование полезно, но оно может также вызвать проблемы. Что еще более важно, наследование не является точкой OO. Точка является абстракцией; сокрытие реализации детализирует, таким образом, можно работать с простым интерфейсом. Изучите, как записать хорошие абстракции Ваших данных, и Вы будете в хорошем состоянии. Не потейте материал наследования сразу же.

0
ответ дан 2 December 2019 в 03:16
поделиться

Вместо того, чтобы изучить OO с нуля, я думаю, что было бы легче при принятии платформы, которая упрощает объектно-ориентированное программирование. Это "вынудит" Вас использовать правильные методы ООП; Вы будете в состоянии извлечь уроки из способа, которым платформа записана относительно того, как сделать ООП лучше всего.

я рекомендовал бы платформу QCodo PHP5 http://www.qcodo.com . Это имеет большие видео учебные руководства о том, как настроить его, а также видео обучение ( http://www.qcodo.com/demos/ ).

Полное раскрытие: я разрабатывал сверху этой платформы в течение двух лет, и я внес код в их кодовую базу (таким образом, я не абсолютно беспристрастный:-)).

0
ответ дан 2 December 2019 в 03:16
поделиться

Некоторые основные причины использовать OO должен структурировать код похожим способом к тому, как нам люди нравится чувствовать и касаться вещей и использовать преимущества [1 112] экономика , пригодность для обслуживания , надежность , и масштабируемость .

т.е.: Humankind разработал колесо тысячи лет назад. Мы можем совершенствовать все это время, но мы, конечно, не должны переосмысливать его снова....

1) Нам нравится к [1 117], категоризируют вещи: "это большее, чем этот", "эти затраты больше, чем тот", "этот - почти то же как тот один".

2) Нам нравится к [1 119], упрощают вещи: "Хорошо, это - охлажденное турбо жидкости V8 управляемое устройство подачи, но я все еще просто поворачиваю руль и нажимаю мои ноги на торговании вразнос для управления им, правильно?".

3) Нам нравится к [1 121], стандартизируют вещи: "Хорошо, давайте назовем треугольники, круги и квадраты все ФОРМЫ, и давайте ожидать, что у них всех будут ОБЛАСТЬ и ОКРУЖНОСТЬ".

4) Нам нравится к [1 123], адаптируются вещи: "hmmm, мне нравится этот, но у меня может быть он на Гонках Зеленого вместо этого?".

5) Нам нравится создавать проекты : "У меня нет времени или денег (или одобрение) для создания этого все же, но это будет иметь дверь и крышу, и некоторые окна и стены".

6) Нам нравится к [1 127], защищают вещи: "Хорошо, я позволю Вам видеть общую стоимость, но я скрываю разметку, которую я добавил от Вас!".

7) Нам нравятся вещи к [1 129], связываются друг с другом: "Я хочу получить доступ своему банковскому сальдо через: мой мобильный телефон; мой компьютер; ATM; сотрудник банка; и т.д.".

, Чтобы изучить, как использовать OO (и видеть некоторые преимущества) тогда я предполагаю, что Вы принимаетесь осуществление как домашняя работа - возможно, приложение на базе браузера, которое имеет дело с ФОРМАМИ, такими как круги, прямоугольники и треугольники, и отслеживает их область, цвет, положение, и z-индекс и т.д. Тогда добавляет квадраты как особый случай прямоугольника, так как это - то же относительно большей части из него - определение, область, и т.д. Просто имеет добавленное условие, где высота совпадает с шириной. Чтобы мешать тогда, Вы могли сделать прямоугольник типом четырехугольника, который является типом полигона. и т.д. и т.д.

ПРИМЕЧАНИЕ: я не начал бы использовать Платформу PHP, пока Вы не довольны основами OO, программирующего сначала. Они намного более мощны, когда можно расширить собственные классы и если Вы не можете тогда он быть немного похожим на выучивание чего-то наизусть-> намного тяжелее!

6
ответ дан 2 December 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: