Основные понятия в ООП

Примечание: Неинициализированное смещение строки: *

Как видно из названия, возникает такой тип ошибки, когда вы, скорее всего, пытаетесь перебрать или найти значение из массива с не- существующий ключ.

Считаем, что вы пытаетесь показать каждую букву из $string

$string = 'ABCD'; 
for ($i=0, $len = strlen($string); $i <= $len; $i++){
    echo "$string[$i] \n"; 
}

. Вышеприведенный пример сгенерирует ( онлайн-демонстрацию ):

A
B
C
D
Notice: Uninitialized string offset: 4 in XXX on line X

И, как только скрипт заканчивается эхом D, вы получите ошибку, потому что внутри цикла for() вы сказали PHP, чтобы показать вам от первого до пятого символа строки из 'ABCD' Что, существует, но поскольку цикл начинает отсчитываться от 0 и эха D к моменту достижения значения 4, он выдает ошибку смещения.

Аналогичные ошибки:

26
задан Peanut 30 April 2012 в 08:53
поделиться

12 ответов

Существует 3 требования для языка, чтобы быть объектно-ориентированными:

  • язык, который поддерживает только инкапсуляцию (объекты), не объектно-ориентирован, но это модульное
  • язык, который поддерживает просто инкапсуляцию (объекты), и передача сообщений (полиморфизм) не объектно-ориентирована, но это - объект - , базировался
  • язык, который поддерживает инкапсуляцию (объекты), передача сообщений (полиморфизм), и наследование (абстракция), объектно-ориентировано

ПРИМЕЧАНИЕ: Абстракция является намного более общим понятием; инкапсуляция и др. виды из абстракции, так же, как подпрограмма является своего рода абстракцией. См. Абстракция

49
ответ дан Steven A. Lowe 28 November 2019 в 06:11
поделиться

Я сказал бы, что абстракция не является только понятием ООП, в котором можно абстрагировать в значительной степени на многих языках не-ООП.

13
ответ дан SmacL 28 November 2019 в 06:11
поделиться

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

Две системы типов, которые делают это, являются системой типов Haskell, которая, consense, обычно не расценивается, чтобы быть объектно-ориентированными шаблонами, и C++ с шаблонным разделением на подклассы. Однако можно было, возможно, утверждать, что шаблонное разделение на подклассы эмулирует ООП.

разделение на подклассы шаблона Since не является широко известным механизмом, позвольте мне дать пример от библиотека SeqAn , где это было изобретено.

String<Char> cstr = "This is a test";
String<Dna, Packed<> > dstr = "GATTACA";

cout << "length(" << cstr << ") = " << length(cstr) << endl;
cout << "length(" << dstr << ") = " << length(dstr) << endl;

Здесь, String<Char> и String<Dna, Packed<> > , наследовался из “ краткий обзор class” String<>. Они инкапсулируют понятие строки, с помощью совершенно других методов. Они совместно используют полиморфный length метод, реализованный по-другому для обоих конкретных типов.

5
ответ дан Konrad Rudolph 28 November 2019 в 06:11
поделиться

Те - эти Четыре Всадника, поскольку я знаю их. Возможно, они по ошибке смешивают Наследование и Полиморфизм.

4
ответ дан duffymo 28 November 2019 в 06:11
поделиться

Да, те - стандартные четыре.

Некоторые люди комбинируют абстракцию и инкапсуляцию. Я не уверен, почему... они не являются абсолютно ортогональными, но возможно существует достаточно перекрытия? Существует, конечно, перекрытие между наследованием и полиморфизмом, но было бы трудно объединить их в моем уме.

3
ответ дан Mark A Johnson 28 November 2019 в 06:11
поделиться

Большинство людей считало бы это корректным, мое предположение - то, если бы они просили три, то это было бы Наследование, Инкапсуляция и Полиморфизм.

я лично нахожу, что те три понятия являются реальной "сутью", если Вы будете позади определения ООП. И большинство людей считает само собой разумеющимся абстракцию и lum это в с другими, поскольку действительно это можно было считать частью любого из других трех.

, Когда я говорю об ООП, хотя я всегда упоминаю 4.

3
ответ дан Mitchel Sellers 28 November 2019 в 06:11
поделиться

Вероятно, последние три - то, что они искали - наследование могло быть обсуждено, чтобы быть большим количеством механизма, чтобы помочь достигнуть других, которые являются высокоуровневыми целями.

нет действительно корректного ответа так или иначе, особенно, если ограничено 'лучшими 3'.

1
ответ дан frankodwyer 28 November 2019 в 06:11
поделиться

Это корректно.

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

1
ответ дан Frederick The Fool 28 November 2019 в 06:11
поделиться

3 основных понятия в ООП:

  • Позднее связывание
  • многократное использование Понятия (не уверенный в этом, так или иначе: многократное использование понятий; предотвращение переопределения даже самых простых понятий)
  • Абстракция
1
ответ дан Cheery 28 November 2019 в 06:11
поделиться

Надлежащий ответ на вопрос: "Разъяснитесь что Вы средний Объектно-ориентированным программированием". Ой, это сказало бы, потому что реальный вопрос, который задают: "Когда я говорю ООП, что я имею в виду?"

нет никакого корректного ответа.

1
ответ дан Apocalisp 28 November 2019 в 06:11
поделиться

Этот [статья] [1] относится к трем столбам хорошего кода. Я нашел, что это, чтобы быть превосходной статьей, устанавливающей ту инкапсуляцию, является "первый принцип" объектно-ориентированного дизайна.

"Первые" принципы являются фундаментальными, базовыми принципами от который все остальное пружины. Автор использует пример Золотого правила. Трудно преподавать детям все тонкости цивилизованного поведения, но если бы можно заставить их понимать (и что еще более важно, практика) Золотое правило обработки других, поскольку требуется рассматриваться, тогда они, более вероятно, "получат" все легальные и моральные стандарты, мы придерживаемся ежедневно.

Так, из этого следует, что, если разработчик понимает инкапсуляцию как "Первый Принцип" объектно-ориентированной разработки, все другие принципы будут следовать в свое время.

я не воздаю должному содержания автора, но я определенно поощрил бы людей читать его.

По некоторым причинам я не показываю гиперссылку проникающий, таким образом, вот URL: http://www.netobjectives.com/files/Encapsulation_First_Principle_Object_Oriented_Design.pdf

0
ответ дан Perry Neal 28 November 2019 в 06:11
поделиться

Это, возможно, был вопрос о приеме для интервью, но в занятиях по Информатике в эти дни они преподают 4 Столба Объектно-ориентированного программирования.

0
ответ дан 28 November 2019 в 06:11
поделиться
Другие вопросы по тегам:

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