Абсолютно объектно-ориентированный язык C++?

function changeText() {
  return document.querySelector("#button").innerHTML = "New text";
}

document.addEventListener("click", changeText);
<button type="button" id="button">Text</button>

13
задан Roh 10 June 2014 в 08:12
поделиться

9 ответов

Нет, это не так. Вы можете написать действительную, хорошо закодированную программу на C ++ с превосходным стилем, даже не используя объект.

C ++ поддерживает объектно-ориентированное программирование, но объектно-ориентированное программирование не является неотъемлемой частью языка. Фактически, функция main не является членом объекта.

В smalltalk или Java вы не можете завязать шнурки (или написать «Hello, world») без хотя бы одного класса.

(Of Конечно, можно спорить и о том, что Java является полностью объектно-ориентированным языком, потому что его примитивы (скажем, int) не являются объектами.)

32
ответ дан 1 December 2019 в 18:49
поделиться

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

-1
ответ дан 1 December 2019 в 18:49
поделиться

C ++ содержит диалект 'C' в качестве подмножества, что позволяет использовать чисто процедурный стиль кода.

5
ответ дан 1 December 2019 в 18:49
поделиться

Большой аргумент против объявления C ++ «чистым» объектно-ориентированным интерфейсом состоит в том, что для него по-прежнему требуется как минимум один не-объектно-ориентированный бит, main () , и что не все является объектом ( int , long и др.).

Он также раскрывает состояние объекта для манипуляций без использования парадигмы передачи сообщений ( общественные члены). Это нарушает инкапсуляцию объектов.

Java, с другой стороны, имеет main () как просто статический метод класса, поэтому он ближе, но в нем все еще есть не объектные вещи.

Smalltalk - это лингва-франка, обычно считающийся чистейшим из чистых, но я не знаю о нем достаточно, чтобы комментировать.

Я,

3
ответ дан 1 December 2019 в 18:49
поделиться

Определить OOL. Если вы имеете в виду использование классов и т. Д., То C ++ поддерживает, помимо прочего, объектно-ориентированный стиль программирования. Нет ничего, что мешает вам не использовать классы. Java OTOH допускает только классы. (Да, я знаю, что Java поддерживает FP.)

1
ответ дан 1 December 2019 в 18:49
поделиться

Короткий ответ: нет - C ++ не является полностью объектно-ориентированным языком. Вы можете написать "не совсем" ООП, используя C ++, даже не прибегая к использованию подмножества C. Одним из таких примеров является ваш основной метод, который не содержится ни в одном классе.

Основная причина заключается в том, что C ++ произошел от C - когда Страуструп создавал язык, он стремился создать новую версию C (с классами) . фактически он пытался представить свое творение как новую разновидность C (C84).

1
ответ дан 1 December 2019 в 18:49
поделиться

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

Примерами чисто объектно-ориентированных языков являются C # и JAVA.

0
ответ дан 1 December 2019 в 18:49
поделиться

конечно нет !! Он поддерживает внутренние типы данных.

0
ответ дан 1 December 2019 в 18:49
поделиться

Нет, это не чисто объектно-ориентированный язык. В частности, примитивные типы данных в C ++ имеют правила, которые часто отличаются от не примитивных типов данных. Кроме того, можно иметь функции, которые вообще не связаны с каким-либо типом данных. Существует множество других причин, по которым C ++ не является чистым объектно-ориентированным языком, но это две из основных причин.

Ни Java, ни C # не являются чистыми объектно-ориентированными языками, потому что у них есть примитивные типы данных, которые не подчиняются та же семантика, что и у типов данных «объект».

0
ответ дан 1 December 2019 в 18:49
поделиться
Другие вопросы по тегам:

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