Страуструп рвет на ж... волосы от зависти
[quote=Дафифа]
Классы. Что такое классы? Чтобы вкратце ответить на этот вопрос возьмём к примеру тот же компонент C++builder/delphi. Что он имеет? Он имеет методы свойства и т.п., т.е. готовое использование, главное просто ещё уметь их использовать, а за этими свойствами компонента скрывается огромный код, который мы не видим. Теперь возьмём ту же функцию, лубую, написанныу на C++builder: void MyExecute() {...тут мы пишем код...}. Далее, нам не понадобится писать этот код много раз, а просто мы вызовем MyExecute(). Отсюда класс, это файл c++builder, в котором написанно неснолько функций. прикрепив к любому проекту которые, мы можем их использовать. Очень удобно, учитывая, что мы в отличие от компонентов, хотябы на наших классах, мы видим исходный код, открыв класс любым редактором.
[/quote]
пысы. атои - эта функцыё цышное такои. наверное у дафифы она тож описана. не проверял.
ы...знакомый текст... - чё вам не понравилось?? :) :D
ы...знакомый текст... - чё вам не понравилось?? :) :D
а вот и аффтор нашумевшего бестселлера!
ну так это ж я сайт для новичков создавал и написал понятным языком. будут они там разбираться в определениях, что такое классы, я для них написал - пусть пользуются... :) :D
не путай понятия "новичок" и "долбо...б"
почитав статьи можно из первого легко переквалифицироваться во 2-е
THBuilder.nov.ru - новый портал по программированию. Я - админ, заходите. Много всего! Обоссытесь!
А почему именно Страуструп, а не Алан Кей или какие-нибудь создатели Симулы?
Да и вообще, интересно было бы послушать определения класса на простом языке от других, более опытных программистов. То есть, чтобы человек, слабо знакомый с ООП, понял. А то легко смеяться над убогим...
СлабО объяснить, что такое класс, что такое объект? Зачем они нужны? ;)
И Дафифе поможете и мне, и другим новичкам...
http://thbuilder.nov.ru/index.php?option=com_content&view=article&id=5&Itemid=44
Что, прочитали, вы ещё ... не сломали?? :) :D
K\лично большинство не только ... сломают от такого определения....
А никто не заставлял убогих лезть туда, куда собака хрен не сувала.
Класс — это один из вариантов описания сущности, которая в теории программирования именуется абстрактным типом данных. Класс определяет скрытую внутреннюю структуру некоторого значения, а также набор операций, применимых к данному значению...
Ну, вот... финиш... все испортил...
Дальше еще лучше:
...
Первая определяется как набор полей класса — элементов тех или иных ранее определённых типов, вторая — как набор сообщений, которые могут обрабатываться экземплярами данного класса.
Не, ты сделал неправильно - вставил какую-то цитату. Кому она нужна? Новички от нее в ужаснутся, а опытные программисты и так знают.
Лучше осознай смысл и по второму кругу попытайся своими словами объяснить ;)
Лучше осознай смысл и по второму кругу попытайся своими словами объяснить
так дык я и сам знаю, а чё вы ржёте?? Что, господа профессионалы, а вам слабо дать грамотный понятный для всех определение что такое класс, а то лясы точить все могут....
А почему именно Страуструп, а не Алан Кей или какие-нибудь создатели Симулы?
Да и вообще, интересно было бы послушать определения класса на простом языке от других, более опытных программистов. То есть, чтобы человек, слабо знакомый с ООП, понял. А то легко смеяться над убогим...
СлабО объяснить, что такое класс, что такое объект? Зачем они нужны? ;)
И Дафифе поможете и мне, и другим новичкам...
Да для навичков помоему у Буча стоит читать определение - вполне по человечески объясняется что это такое.
Да и наверно примерно так же и определил.
Сейчас конечно все на книжки начнут ссылаться, но это не путь быдлокодера, который достиг дзена...
Попробую на примерах. Сначала надо дать понятие объекту. Объектом можно назвать практически любое существительное. При этом местоимение это указатель либо ссылка. Но это я отвлекся...
Например, T...H, Kogrom и т.д. - объекты.
Эти объекты являются, грубо говоря, экземплярами абстрактного класса люди. Или проще говоря - они являются людьми.
Каждый объект состоит из других объектов. То есть, объект класса люди состоит из рук, ног, головы и т.д. Эти части тел также являются экземплярами определенного класса - части тела.
То есть, обычный человек мыслит как раз объектами и классами, в отличие от некоторых программистов...
Пойдет?
Пойдет?
Конечно! В разЫ понятнее стало. :D А вообще, все аналогии лживы.
Поэтому настоящего ООП не бывает. Только лживое. Эх...
М-да... напомнило "великие труды" В.Гриненко.
К сожалению (а может, к счастью), статьи аффтора убраны с сайта vbnet.ru, видимо, подросли ребята, поумнели.
Но с помощью машины времени (http://www.archive.org/web/web.php) я отыскал эту чудо-статью: http://web.archive.org/web/20040606000138/http://vbnet.ru/article/showarticle.asp?id=94
Программисты работавшие ранее на VB всегда имели достаточно мутное представление о классах. Есть и другая категория людей. Таковые извлекают из своей головы целый вагон очень научных определений классов и определений связанных с объектной ориентированностью и наследованием, но проку от этих знаний нет никакого - теория совсем не используется на практике.
........................
На практике классовое программирование применяется очень редко (результаты исследований). И тому есть очень серьезные причины. Первое. Создавать класс необходимо с мыслью о том, что этот класс возможно будет когда-нибудь унаследован, а это требует дополнительных усилий. И второе. Вспомните пожалуйста, когда Вы документировали свою программу последний раз. Я думаю что очень многие читатели ответят так: вообще никогда. А без очень скрупулезного документирования функциональности, классы вообще ничего не стоят. Представьте себе гору из 6000 классов поставляемых с VSN, на которые нет ни строчки документации.
Дык собственно все путем. Так оно и есть. Вызов метода - сообщение от внешнего мира. Так оно и есть и понимать так удобно.
Ну, тогда мои поздравления.
Итак. Попытка № 2.
Если представить, что программа состоит только из функций, то можно было бы программы создавать так: есть главная функция, она вызывает несколько второстепенных, те — еще какие-то и т.д., а потом все возвращается к главной. Была бы простая сетка.
Но в программах могут быть еще и переменные (данные). Как их встроить в структуру программы?
Если отделять данные от функций, то можно использовать глобальную базу данных, к которой обращаться каким-то хитрым образом. Например, главная функция может передать управление одной частью данных первой функции, другой части данных — второй. Те передадут своим дочерним функциям более раздробленные куски и т.д.
Однако, нужен какой-то принцип распределения переменным по функциям.
Например, можно вывернуть все на изнанку и присоединить определенные функции к определенным ячейкам данных. Такая ячейка и будет являться объектом. Однако, часто расточительно давать каждой ячейке определенную функцию. Экономнее давать определенную функцию классу ячеек (объектов).
Таким образом, класс — это модель, которая закрепляет определенные функции за определенными видами переменных.
Расточительно определять функцию только для определенного класса объектов. Поэтому придумали наследование, чтобы разделить одну функцию на несколько классов.
Есть еще такие понятия для класса, как инкапсуляция и полиморфизм, но их в данную модель я пока не могу занести.
Можно предположить, что за инкапсуляцией стоят определенные сообщения от программиста компилятору к каким данным как можно обращаться. И ничего более. А полиморфизм — более безопасный и понятный вид использования указателей на функцию. Но это не продуманные заявления.
Класс - это "апельсин": снаружи оранжевый, а внутри кислый.
Монада - это всего лишь моноид из категории эндофункторов.
Класс - это "апельсин": снаружи оранжевый, а внутри кислый.
Совершенно верно. А концепцию наследования и полиморфизма заслуженно припишем Мичурину.
А как же старина Грегор Мендель с его законами?
А ишшо ведь есть и агрегация... :rolleyes:
Да, меня тоже одно время плющило неформатно...
Но в программах могут быть еще и переменные (данные). Как их встроить в структуру программы?
Если отделять данные от функций, то можно использовать глобальную базу данных, к которой обращаться каким-то хитрым образом. Например, главная функция может передать управление одной частью данных первой функции, другой части данных — второй. Те передадут своим дочерним функциям более раздробленные куски и т.д.
Однако, нужен какой-то принцип распределения переменным по функциям.
Например, можно вывернуть все на изнанку и присоединить определенные функции к определенным ячейкам данных. Такая ячейка и будет являться объектом. Однако, часто расточительно давать каждой ячейке определенную функцию. Экономнее давать определенную функцию классу ячеек (объектов).
Таким образом, класс — это модель, которая закрепляет определенные функции за определенными видами переменных.
Расточительно определять функцию только для определенного класса объектов. Поэтому придумали наследование, чтобы разделить одну функцию на несколько классов.
Вот видите, то же впринципе, что и я сначала написал, только разными словами............:):D Ток у меня всё понятно, а тут ппц
Не совсем. Ты описал примерно то, что в Паскале (и в других языках) называют модулем. У тебя в эту структуру включены только функции. А как же данные? Где должны храниться переменные?
Пример. Есть объект Label, у него есть свойство Caption равное "Привет". Где хранится строка "Привет"? Неужто в файле с описанием функций?
Я немного увлекся. Что такое классы, объекты и т.д. можно, например, в Википедии прочитать, но совсем непонятно, зачем все это нужно, в чем выигрыш такого подхода. Пытался хоть себе объяснить. Думал выйдет по принципу "объяснял, объяснял, уже и сам понял, а они всё не понимают". Однако, пока и сам ничего не понял :)
а это разве не в оперативке хранится??