Поддержка нескольких парадигм программирования.
- структурное (С)
- ОО
- шаблонное
C++ не зацикливается на ОО (в отличие от той же Java) и разработчик в этом плане свободен на все 100.
все что нужно для ОО -- это иметь возможность extension cтруктуры -- то есть если у тебя есть одна структура, то иметь возможность определить вторую структуру так чтобы ты мог при желании "увидеть" в ней первую структуру. Все остальное это bells and whistles, которые можно самому прикрутить. Я не понимаю что ты говоришь об обрезанности.
>все что нужно для ОО -- это иметь возможность extension cтруктуры
А как же быть с поздним связыванием, то бишь с виртуальными функциями?
Помоему самостоятельное прикручивание такой штуки - есть весьма здоровенный костыль.
> А как же быть с поздним связыванием, то бишь с виртуальными функциями? Помоему самостоятельное прикручивание такой штуки - есть весьма здоровенный костыль.
во первых я теоретически говорил:)
во вторых просто нужно хороший макроязык. И никаких костылей не понадобится.. ИМХО
Изображение - это список объектов типа "графический примитив" Отрисовка такого изображения сводится к проходу по циклу и посылке сообщения "нарисуй себя". Все себя нарисуют, но например, Circle нарисует круг, Spline - кривульку, Rect - прямоугольник и тд
Смысл в том, что движок знает, что каждый объект может себя нарисовать, не заботясь о том, что это за объект.
Так вот как это называется, а-а-а ... Я всю жизнь разговаривал прозой.
А теперь расскажи, что имелось в виду в фразе "можно иметь объекты передающие/получающие сообщения но не полиморфные", и как эта возможность иметь приводит к какстрированности ОО.
> А теперь расскажи, что имелось в виду в фразе "можно иметь объекты передающие/получающие сообщения но не полиморфные", и как эта возможность иметь приводит к какстрированности ОО.
ну ты же умный парень. Сам наверно знаешь что я имел в виду..
представь себе язык в котором есть объекты, но нет возможности составить контейнер разнородных объектов. Или наличие таких контейнеров твое определение само собой подразумевало?..
В ОО-языках нет указателей, сборшики мусора автоматические.
С++ - не считают OO - языком в чистом виде как Java, Smaltoc, Ada.
в ОО-языках есть безопасность, в С++ ее нет, так как есть доступ по указателю.
С++ родился как проект "'С' c классами" - для удобства и уж затем развился
в самостоятельный язык, сохранив наследие 'C'.
Ребята не ссорьтесь!:) ОО-сть языка никоим
образом не определяется навороченностью
механизмов поддержки этой ориентированности
в языке. ОО-сть языка проявляется в возможности
реализации на нем систем, проектирование которых
проводилось в соответствии с принципами ОО проектирования.
IMHO :)
Так что наличие или отсутствие в ОО языке метаклассов, шаблонов,
абстрактов и т.д. необязательно!
IMHO :)
Был бы объект:)
>А где такой институтик, где безопасность в голову прошивают??
Хе-хе:) Я ж сказал что _надо_ прошивать, а не прошивают. Хотя есть наверное - ФАПСИшный или ФБСшный, к примеру:)
>И что в программах, написинных его выпускниками багов нет??
И безопасность не в смысле безглючность, а понимание того что на самом
деле пишешь:)
Разве на Java с ее безопасностью получаются только безглючные программы?
> В ОО-языках нет указателей, сборшики мусора автоматические.
В Eiffel (по крайней мере в компиляторе SmartEiffel) сборщик мусора можно отключить. Получается что стоит указать ключь -no_gc и Eiffel перестает быть ОО языком? :)
>Извиняюсь, это откуда взято?
Читайте книжки и статьи их много в Internete
ОО - язык обладает некими свойствами в числе которых,
есть свойство: нет доступа по указателю.
Если этих свойств нет, то соответственно ...
Это не IMHO - а утверждение разработчиков языков,
которое постоянно оспаривают
И не важно как сильно я люблю С++, просто он не ОО-язык,
он С++ со всеми плюсами и минусами.
>> Smaltoc,
>Хто? :)
Извините дяденьнки, ошибся. :(( SmallTalk - вроде так.
>В Eiffel (по крайней мере в компиляторе SmartEiffel)
>сборщик мусора можно отключить
Не знаю.
а как будут удаляться динамически создаваемые объекты ?
Вы сможите их удалить руками ?
Выделенная память должна ведь удаляться.
Впрочем там ведь нет указателей как я помню ...
Читаем, читаем :)
Только "книжки и статьи в Internete"
ссылка ни о чем не говорящая.
Попробуйте почитать Страуструпа (практически это
создатель языка С++) "Дизайн и эволюция языка С++",
ну можно еще добавить "Язык С++".
Добавим еще книги по ООП и ООД таких авторов как Буч,
Рамбо, Якобсон. Все они заблуждаются насчет С++
постоянно называя его ООЯ.
Да кстати! Ведущие разработчики программерского
инструментария тоже во тьме блуждают,взять хотябы
ребят из Rational (Rose), Microsoft (Visio) и т д.
В своих продуктах они почемуто считают что допустимо
использовать понятия ООД для С++. Что уж тут говорить
о OMG:) Может их просветить надо:)
>И не важно как сильно я люблю С++, просто он не ОО-язык,
>он С++ со всеми плюсами и минусами.
Это и все остальное есть не что иное как YMHO:) Причем ошибочное, IMHO:)
ЗЫ. См мое сообщение выше насчет ОО-сти языков программирования:)
> Все они заблуждаются насчет С++ постоянно называя его ООЯ.
Не заблуждаются, а зарабатывают деньги. А какой язык можно называть ОО - может об этом лучше судить человеку, который ввел этот термин? Что там Алан Кэй писал про С++?
Он сказал, что когда придумывал ООП, ему даже в страшном сне не приходило в голову что-то похожее на С++. Ссылку привести не могу, это секретные сведения, могущие привести к массовым самоубийствам программистов на С++.
>Ссылку привести не могу, это >секретные сведения, могущие привести к >массовым самоубийствам >программистов на С++.
С этого и надо было начинать:) Теперь беспочвенность Ваших утверждений не оставляет никаких сомнений.
>Читаем, читаем :) Только "книжки и статьи в Internete" ссылка ни о чем не говорящая. Попробуйте почитать Страуструпа (практически это создатель языка С++) "Дизайн и эволюция языка С++", ну можно еще добавить "Язык С++". Добавим еще книги по ООП и ООД таких авторов как Буч, Рамбо, Якобсон. Все они заблуждаются насчет С++ постоянно называя его ООЯ.
Хороший пример - "Дизайн и эволюция языка С++". В самой книге сто раз сказано, что С++ - это гибридный язык.
На обложке под названием большими буквами: "Объектно-ориентированный язык программирования".
Это издатели так объем продаж увеличивают :)
>Хороший пример - "Дизайн и эволюция языка С++". В самой книге сто раз >сказано, что С++ - это гибридный язык.
Согласен, только контекст высказываний тоже надо учитывать:) "Гибридный", еще на значит "не ОО". Там сказано что С++ старались сделать гибким языком, то есть в зависимости от требований он такой, каким он тебе нужен. В том числе и ОО. Кто то не согласен?
>На обложке под названием большими буквами: "Объектно-ориентированный >язык программирования".
>Это издатели так объем продаж увеличивают :)
Может быть, не спорю:) С++ сложный язык (гибридный), и описывать его всеобемлюще довольно сложно.По крайней мере Страуструт в книге "Язык С++" превысив объем в 1000 стр, так и не смог описать его весь, за бортом осталось очень иного нюансов. IMHO изложения "дизайна и эволюции"
фокусируется именно на ОО, не вдаваясь в остальные аспекты и это правильно.
Обязаельно научусь:)
Для того чтобы искать по фразам типа "Алан Кей vs С++" :)
А вы научитесь пожалуйста корректно и грамотно аргументировать свои слова:)
ЗЫ. И посмотри вверх по треку, мое сообщение о ОО-сти языков. Думаю вам будет полезно.
>ОО - язык обладает некими свойствами в числе которых,
есть свойство: нет доступа по указателю.
Если этих свойств нет, то соответственно ...
Это не IMHO - а утверждение разработчиков языков,
которое постоянно оспаривают
IMHO язык, претендующий на роль системообразующего просто обязан поддерживать указатели (С/С++/D).
Язык, не поддерживающий указатели, не являются самодостаточными и часто представляет чисто академический интерес.
Во многих ли проектах используется тот же Eiffel?
>Не тот ли это anonymous, который советовал учиться пользоваться гуглом?
Нет не тот. Здесь много разных.
Если только такие свойства как: - абстракция ; - наследование ; - полиморфизм ,
то С++ - ОО-язык.