Я всегда слышал, что С++ не является объектно-ориентированным, а скорее "C с классами". Итак, когда я сказал интервьюеру, что С++ не был объектно ориентирован, он спросил меня, почему я не рассматривал его как язык OO. Я не делал С++ с Университета, и у меня не было большого количества ответов. Объект С++ ориентирован или нет? и почему?
Является ли С++ объектно-ориентированным языком?
Ответ 1
С++ обычно считается языком "многопарадигмы". То есть вы можете использовать его для объектно-ориентированного, процедурного и даже функционального программирования.
Те, кто отрицает, что С++ - это OO, обычно имеют говядину с тем фактом, что примитивные типы не являются самими объектами. По этому стандарту Java также не будет считаться OO.
Конечно, С++ не является OO в той же степени, что и Smalltalk, Ruby, Self и т.д., но это, безусловно, эффективный язык OO по большинству стандартов.
Ответ 2
С++ - это многоязычный язык paradigm, поддерживающий
- imperative
- object-oriented (на основе класса)
- generic (метапрограммирование шаблонов)
стили программирования. Вы можете свободно выбирать (и смешивать их) для удовлетворения потребностей вашего проекта.
Ответ 3
С++ - объектно-ориентированный язык. Проблема в том, что у некоторых языковых фанатиков есть свое, иногда противоречивое определение ООП. Например, некоторые люди Java говорят, что С++ не является языком OOP, потому что вы можете определять функции вне класса.
Просто игнорируйте их.
Ответ 4
Ба! Люди, которые говорят, что С++ не являются объектно-ориентированными, являются теми же, что и Spam не является продуктом: -)
ОО "религиозный псих" будет говорить, что вы можете иметь только истинный язык ОО, если абсолютно все является объектом. Это прекрасно, они могут сидеть в своих башнях из слоновой кости и верить в то, что они хотят. У некоторых из нас есть реальные задания.
Если вы используете мышление объекта, С++ (и даже C, если вы используете всевозможные трюки с указателями функций внутри структур), более чем достаточно, чтобы считаться объектно-ориентированным.
Ответ 5
Мех. У каждого есть свое деление ООП. Алан Кей, который изобрел термин ООП, сказал: http://www.noulakaz.net/weblog/2007/02/12/true-meaning-of-oop/
OOP для меня означает только обмен сообщениями, локальный сохранения и защиты и процесс состояния и экстремальный поздняя привязка всех вещей. Может быть сделано в Smalltalk и в LISP. Там возможно, другие системы, в которых это возможно, но я не знаю их.
По этому определению даже Java, С#, Python и т.д. не являются языками OO.
ИМХО, эти обсуждения бессмысленны.
Ответ 6
Ключами объектной ориентации являются абстракция, инкапсуляция, полиморфизм и наследование.
Я бы сказал, что С++ показывает все четыре, поэтому он квалифицируется как объектно-ориентированный язык.
Возможно писать С++ как "лучше C" и использовать чисто процедурный стиль. Объекты не являются обязательными. Возможно, это то, о чем вы думаете.
Ответ 7
С++ - это язык OO.
Но это не единственный стиль кодирования, который можно использовать в С++. N
Таким образом, С++ является технически многопарадигменным языком, OO которого является лишь одной парадигмой.
Термин "C с классами" имеет пару значений.
- Это может означать, что С++ - это OO (поскольку классы предоставляют возможности OO).
- Он может ссылаться на оригинальную версию "cfront"
- Что было в основном C с расширением классов и еще немного.
- Он может относиться (отвратительно) к стилю программирования, который не использует всю мощь С++, но использует только небольшое подмножество языка.
Ответ 8
Идея состоит в том, что С++ не является просто объектно-ориентированным языком.
Ответ 9
С++ объектно ориентирован, потому что классы обеспечивают абстракцию и наследование и весь этот джаз. Это не всегда относится к объектно-ориентированным, потому что код не должен быть объектно-ориентированным. Это похоже на то, что Scheme не работает, потому что он установил!.
Ответ 10
Как говорили другие, С++ не является языком PURE OO. Опять же, единственный чистый язык OO, который я знаю, является небольшим. Единственный чистый функциональный язык, который я знаю, - это исчисление Лямбды. Я не знаю ЛЮБЫХ чистых структурированных языков (все они имеют goto и/или несколько операторов возврата)
Большинство людей не любят писать на чистых языках программирования. Это сужает их стиль.
Ответ 11
Термин "объектно-ориентированный" слишком туман, чтобы дать определенный ответ "да" или "нет". Я думаю, вы увидите, что представление большинства состоит в том, что С++ является языком OO или, по крайней мере, вы можете писать в OO-способе на С++. Если вы хотите получить более конкретный ответ, вам нужно задать более четкий вопрос, например:
В: Имеются ли в С++ объекты "объект" (т.е. поля данных + связанные функции-члены)?
A: Да.
Q: Имеются ли в С++ типы объектов, не являющихся объектами?
A: Да.
Q: Имеются ли в С++ функции, не являющиеся членами?
A: Да.
Ответ 12
С++ является объектно-ориентированным. С++ - это c с классами, это еще один способ сказать, что С++ c с добавлением oop (и, конечно, больше, чем на c).
Ответ 13
Если я интервьюер, задающий вам этот вопрос, я, вероятно, не забочусь о да/нет ответа - я действительно хочу знать, что вы понимаете в программировании, и на С++ или на других языках. Вы просто выбрасываете термины, о которых вы не думаете или не понимаете, или вы на самом деле внимательно относитесь к тому, что вы делаете и говорите. Поэтому в этой ситуации хороший ответ
"Я определяю объектно-ориентированное кодирование как a, b, c и d. Я определяю объект-ориентированный язык как тот, который поддерживает это определение, т.е. позволяет мне (легко/равномерно/строго/другое прилагательное) разработать код, который удовлетворяет этим требованиям. С++ поставляет a, b, c и частично на d. Поэтому я (не) считаю С++ для OO соображением."
Для моего личного определения С++ достаточно объектно-ориентированный, плюс он поддерживает другие подходы.
Ответ 14
Stroustrup, который проектировал C с классами, а именно. оригинальная реализация стандарта ISO С++, ответила на тот же вопрос в ACM OOPSLA '95. Бумажная копия доступна в http://www.stroustrup.com/oopsla.pdf.
Ответ 15
Это действительно объектно-ориентированное, но не строго, хотя.
Скажем, например, мы можем просто
int main()
{
return 1;
}
который является ничего в названии Object oriented, а с другой стороны мы можем иметь классы, наследование, полиморфизм и т.д., что соответствует объектно-ориентированному. p >
Мы должны развязать власть языка.
К интервьюеру, который спросил у вас вопрос, покажите класс a из С++ и спросите его, структурирован он или обработан. Он покажет вам ту же самую функцию main(), которую я предполагаю:)
Итак, я полагаю, что он основан на том, что вы реализовали. Но у него есть функции, которые могут заставить его считаться ООП.
Ответ 16
С++ не является объектно-ориентированным языком. Язык не парадигма. Это находится в соответствии с Java, которая ориентирована на религиозность объектно-ориентированной (например, нет заявления друга). С++ предлагает объектную ориентацию, но не является объектно ориентированной.
Ответ 17
С++ частично OO, потому что код может быть написан без класса, и он также имеет множественную концепцию наследования, то есть один ребенок может иметь более одного родителя.
Ответ 18
Объектно-ориентированное программирование (ООП) стало предпочтительным программным подходом в отраслях программного обеспечения, поскольку оно предлагает мощный способ справиться с cpmlexity реальных пролетей. Среди языков ООП, доступных сегодня, С++ является наиболее широко используемым языком.
Языки должны поддерживать несколько концепций ООП, чтобы утверждать, что они объектно ориентированы. в зависимости от поддерживаемых им фетров, их можно разделить на две категории.
-
Языки программирования на основе объектов.
-
Объектно-ориентированные языки программирования.
-
Языки программирования на основе объектов. если он поддерживает
A. DATA ENCAPSULATION B. DATA HIDING AND ACCESS MECHANISAMS C. AUTOMATIC INITIALIZATION& CLEAR-UP OF OBJECTS D. OPERATOR OVER LOADING
2. Объектно-ориентированные языки программирования.
Он поддерживает все функции объектного программирования вместе с двумя дополнительными функциями
E. INHERITANCE F. DYNAMIC BINDING
-
поэтому объектно-ориентированные языки программирования означают
**Object-based features+ inheritance+ dynamic binding.**
Примеры: С++, SMALLTALK, OBJECT PASCAL, JAVA
Итак, С++ - ЯВЛЯЮЩИЙ ЯЗЫК ПРОГРАММИРОВАНИЯ ОБЪЕКТОВ
Если у вас все еще есть сомнения в концепциях объектно-ориентированного программирования, обратитесь к книге E.Balaguruswamy.