Я читал о маленьком разговоре, полностью объектно ориентированном .. является C++ также полностью объектно-ориентированным? если нет .. то почему так ???Является ли C++ полностью объектно-ориентированным языком?
ответ
Нет, это не так. Вы можете написать действительную, хорошо закодированную, отлично написанную C++-программу без использования объекта даже один раз.
C++ поддерживает объектно-ориентированное программирование, но OO не является неотъемлемой частью языка. Фактически, основная функция не является членом объекта.
В smalltalk или Java вы не можете привязать обувь (или написать «Hello, world») без хотя бы одного класса.
(Конечно, можно спорить о том Java является полностью объектно-ориентированный язык тоже, потому что его примитивов (например, целое) не являются объектами.)
У него даже есть утилиты, которые делают его общим языком программирования например Шаблоны. Но я видел много школьных учебников, которые связывают C++ как объектно-ориентированный язык. Проблема заключается в том, когда авторы делают это, читатели (в основном студенты) легко забывают, что C++ также подходит для многих типов языков программирования. – sjsam
Определить OOL. Если вы имеете в виду использование классов и т. Д., То C++ поддерживает OO-стиль программирования среди других. Нет ничего, что помешало бы вам не использовать классы. Java OTOH, не допускает, кроме классов. (Да, я знаю, что Java поддерживает FP.)
«Да, я знаю, что Java поддерживает FP.». Это ново для меня. Есть ли у вас пример FP на Java? –
Простой поиск дает мне немало статей. Один такой:
дирк. Я думаю, вы можете сказать, что Java поддерживает ** процедурное ** программирование? Ne? –
C++ содержит диалоги 'C' как подмножество, допускающее чисто процедурный стиль кода.
C++ не является чисто объектно-ориентированный язык, и, как уже упомянутое ничего не заставляет вас использовать концепции ООП на C++. C++ - это то, что вы называете гибридным объектно-ориентированным языком, поскольку оно основано на C, которое является чисто процедурным языком.
Примерами чистых объектно-ориентированных языков являются C# и JAVA.
Ни один из них не является примитивным типом данных, не подчиняется той же семантике, что и пользовательские типы данных. Операции с ними не определяются с точки зрения передачи сообщений, и они не могут быть перегружены или переопределены в производном классе. – Omnifarious
Я думаю, что вы прокомментировали неправильный пост. ;) –
Нет, Omni говорит, что ни C#, ни Java не являются чистыми OO, поскольку у них есть такие вещи, как int и long, которые являются объектами * not *. – paxdiablo
Нет, это не чисто объектно-ориентированный язык. В частности, примитивные типы данных в C++ имеют правила, которые часто отличаются от типов данных, которые не являются примитивными. Кроме того, возможно иметь функции, которые вообще не связаны с каким-либо типом данных. Существует множество других способов, в которых C++ не является чисто объектно-ориентированным языком, но это две из самых больших причин.
Ни Java, ни C# не являются чисто объектно-ориентированными языками либо потому, что у них есть примитивные типы данных, которые не подчиняются той же семантике, что и типы данных «object».
Короткий ответ: нет - C++ не является полностью языком OO. Вы можете написать «не совсем» ООП, используя C++, даже не прибегая к использованию подмножества C. Одним из таких примеров является ваш основной метод, который не содержится ни в одном классе.
Основная причина заключается в том, что C++ возник из C - когда Stroustrup создал язык, на который он стремился создать новую версию C (с классами). на самом деле он попытался представить свое творение как новый аромат C (C84).
БОЛЬШОМ аргументы люди имеют против объявления C++, как «чистый» OO является то, что она по-прежнему требует, по крайней мере один не-OO немного, main()
, и что не все является объектом (int
, long
и др).
Он также предоставляет состояние объекта для манипуляций без использования парадигмы передачи сообщений (публичные элементы). Это нарушает инкапсуляцию объектов.
Java, с другой стороны, имеет main()
как статичный метод класса, поэтому он ближе, но в нем все еще есть не объекты.
Smalltalk - это lingua franca, обычно поддерживаемый как чистый из чистого, но я не знаю достаточно об этом, чтобы комментировать.
Me, я склонен оставить эти роды аргументы для интеллигенции в то время как я ладить с разработкой коды и доставки своих клиентов :-)
На самом деле не нужен главный. Его просто хорошо известная точка входа, поэтому командная строка и (некоторые) графические интерфейсы не позволяют передать управление после загрузки. –
Вы * делаете * нужен главный, это предусмотрено стандартом. – paxdiablo
конечно нет !! Он поддерживает встроенные типы данных.
C++ - это не что иное, как «C с классами». Я все еще могу написать программу на C и сохранить ее как .cpp-файл. Итак, доказательство подразумевает, что «C++ не является чисто объектно-ориентированным языком».
- 1. Является ли Java «полностью» объектно-ориентированным языком?
- 2. Является ли C++ свободным языком?
- 3. Является ли jQuery языком?
- 4. Является ли C# языком высокого уровня?
- 5. Является ли C++ объектно-ориентированным языком?
- 6. Является ли деревья выражений основным языком C#?
- 7. Является ли UML языком программирования?
- 8. Является ли конкретным языком API
- 9. Является ли C# 100% объектно-ориентированным языком программирования?
- 10. Является ли bash интерпретируемым языком?
- 11. Является ли bash языком программирования?
- 12. Является ли Javascript языком программирования?
- 13. Является ли PHA языком программирования?
- 14. Является ли Mathematica нетипизированным языком?
- 15. Является ли SCALA теоретическим языком?
- 16. Является ли JavaScript языком приложения?
- 17. Является ли Cython/Jython независимым языком?
- 18. Является ли vala кросс-платформенным языком?
- 19. Является ли LISP скомпилированным или интерпретируемым языком?
- 20. Является ли программа C++ MFC полностью родной?
- 21. Является ли CAPL языком сценариев или языком программирования?
- 22. Является ли C# функциональным или объектно-ориентированным языком?
- 23. Является ли Objective C подходящим языком для 3D-игр?
- 24. Является ли C++ единственным языком, который работает с mpi
- 25. Является ли Objective-C интерпретированным или скомпилированным языком?
- 26. Является ли C# строго типизированным или слабо типизированным языком?
- 27. Является ли C++ все еще считающимся статически типизированным языком?
- 28. Является ли Haskell строго типизированным языком программирования?
- 29. Является ли Hacklang устаревшим или безгосударственным языком?
- 30. Является ли ActionScript клиентским или серверным языком?
«Маленькая беседа полностью объектно ориентирована», откуда вы ее прочитали? Просто любопытно. –
Что это значит «полностью»? –
Что относительно Руби? – ukanth