Re[7]: На базе чего лучше всего продемонстрировать ООП?
От: Воронков Василий Россия  
Дата: 24.06.10 20:58
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>Но хоть какой-то. Лучше предложи альтернативу.

AVK>Сапер

На винформах
Re[8]: На базе чего лучше всего продемонстрировать ООП?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.06.10 10:42
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>На винформах


Пофик. Хоть в консоли.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[10]: На базе чего лучше всего продемонстрировать ООП?
От: LaPerouse  
Дата: 25.06.10 12:33
Оценка: -2 :))
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Ikemefula, Вы писали:


VD>>>>1. Простенькая электронная табличка. Плюс в том, что в ней можно использовать строчный калькулятор из предыдущих частей.

WH>>>Это плохой пример для ООП
I>>Это отличный пример, а вот игрушка это отстой.
WH>Электронная таблица это функциональный язык. Так что тут ООП вообще никак и ни о чем.

Электронная таблица — это объект. Со своими свойствами и поведением.

WH>А вот игрушка это симуляция игрового мира. Симуляция это единственная задача где ООП рулит.


ООП рулит для всех задач, где нужно программировать. Потому что это не просто парадигма программирования, это способ построения архитектуры системы. Если ты считаешь, что для какой-то задачи ООП не подходит, значит ты не умеешь его использовать.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[9]: На базе чего лучше всего продемонстрировать ООП?
От: Воронков Василий Россия  
Дата: 25.06.10 12:43
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ВВ>>На винформах

AVK>Пофик. Хоть в консоли.

Что-то мне кажется, что сапер в плане ООП будет очень сильно похож на простенький спред а ля Эксель, плюс которого еще и в том, что можно использовать разработанный ранее калькулятор. По сути тот же грид с разными типами ячеек. Где я не прав?
Re[11]: На базе чего лучше всего продемонстрировать ООП?
От: WolfHound  
Дата: 25.06.10 12:45
Оценка:
Здравствуйте, LaPerouse, Вы писали:

LP>ООП рулит для всех задач, где нужно программировать. Потому что это не просто парадигма программирования, это способ построения архитектуры системы. Если ты считаешь, что для какой-то задачи ООП не подходит, значит ты не умеешь его использовать.

http://rsdn.ru/article/nemerle/Amplifier.xml#EJNAE
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.

Просто сравни объем кода и подумай еще раз кто и чего не умеет использовать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[11]: На базе чего лучше всего продемонстрировать ООП?
От: igna Россия  
Дата: 25.06.10 12:55
Оценка:
Здравствуйте, LaPerouse, Вы писали:

LP>ООП рулит для всех задач, где нужно программировать. Потому что это не просто парадигма программирования, это способ построения архитектуры системы. Если ты считаешь, что для какой-то задачи ООП не подходит, значит ты не умеешь его использовать.


Загнул так загнул. Прям для всех, такого неосторожного заявления еще не видел.

Я вот долго надеялся встретить хотя бы один пример задачи, где "ООП рулит", и спрашивал здесь тоже, ан нет, никто примера такой задачи не привел. Обрати внимание, я не утверждаю, что таких задач нет, а просто говорю, что я таких не знаю. Может быть у тебя есть минимальный пример задачи, решить которую используя ООП проще чем без него?
Re[3]: Circle-ellipse problem
От: igna Россия  
Дата: 25.06.10 13:00
Оценка:
Здравствуйте, andy1618, Вы писали:

A>Круги, эллипсы говорите? Это же как раз классический парадокс о невозможности наследования (то же, кстати, касается и прямоугольника-квадрата):


Это не настоящий парадокс, неизменяемый круг (а именно таковым он является в математике) без проблем наследуется от эллипса.
Re[12]: На базе чего лучше всего продемонстрировать ООП?
От: LaPerouse  
Дата: 25.06.10 13:23
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, LaPerouse, Вы писали:


LP>>ООП рулит для всех задач, где нужно программировать. Потому что это не просто парадигма программирования, это способ построения архитектуры системы. Если ты считаешь, что для какой-то задачи ООП не подходит, значит ты не умеешь его использовать.

WH>http://rsdn.ru/article/nemerle/Amplifier.xml#EJNAE
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.

WH>Просто сравни объем кода и подумай еще раз кто и чего не умеет использовать.

Еще раз: ООП — это не только и не столько парадигма программирования, сколько набор архитектурных решений. Вынесли красивую и короткую Nemerle-версию в компоненту NiceExpressionCalculator с сервисом ExpressionCalculator — поздравляю, вы применили ООП. А красота и краткость — особенность реализации данного конкретного NiceExpressionCalculator. Которая меня, как потребителя сервиса ExpressionCalculator не колышет. Я вполне могу воспользоваться C#-ским UgglyExpressionCalculator, лишь бы он корректно реализовывал сервис ExpressionCalculator. Теперь понятно, о чем я? Я о том, что ООП позволяет создавать модульные, расширяемые решения. А ты опускаешься до деталей реализации. Мне пофиг на эти детали, делай их хоть на коболе, но если ты предоставил свое решение в виде компоненты с сервисом, ты задействовал ООП.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[12]: На базе чего лучше всего продемонстрировать ООП?
От: LaPerouse  
Дата: 25.06.10 13:26
Оценка:
Здравствуйте, igna, Вы писали:

I>Я вот долго надеялся встретить хотя бы один пример задачи, где "ООП рулит", и спрашивал здесь тоже, ан нет, никто примера такой задачи не привел.


С термином "компонентное программирование" знаком? Приложения с плагинами использовал? Иногда стоит открывать глаза пошире.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[13]: На базе чего лучше всего продемонстрировать ООП?
От: igna Россия  
Дата: 25.06.10 13:57
Оценка:
Здравствуйте, LaPerouse, Вы писали:

LP>С термином "компонентное программирование" знаком? Приложения с плагинами использовал? Иногда стоит открывать глаза пошире.


Так открой: Differences from object-oriented programming.
Re[14]: На базе чего лучше всего продемонстрировать ООП?
От: LaPerouse  
Дата: 25.06.10 14:03
Оценка: :)
Здравствуйте, igna, Вы писали:

I>Здравствуйте, LaPerouse, Вы писали:


LP>>С термином "компонентное программирование" знаком? Приложения с плагинами использовал? Иногда стоит открывать глаза пошире.


I>Так открой: Differences from object-oriented programming.


Там написан бред сивой пьяной кобылы, неподтвержденный источниками. Википедия, фигли. Вот это особенно радует:

OOP and the related disciplines of object-oriented design and object-oriented analysis focus on modeling real-world[citation needed] interactions and attempting to create "verbs" and "nouns" which can be used in intuitive


Это слова человека, который с ООП знаком из примеров про обезьяны-бананы.

Компонентное сервис-ориентированное программирование — это и есть современный ООП.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[15]: На базе чего лучше всего продемонстрировать ООП?
От: igna Россия  
Дата: 25.06.10 14:10
Оценка:
Здравствуйте, LaPerouse, Вы писали:

LP>Компонентное сервис-ориентированное программирование — это и есть современный ООП.


Ну тогда да, "ООП рулит". Только это называется подмена понятий. Сначала столько лет называли ООПой всякую лабуду, потом, вместо того чтобы признать свое заблуждение, лабуду заменили разумными концепиями, и натянули на них старое название.
Re[16]: На базе чего лучше всего продемонстрировать ООП?
От: LaPerouse  
Дата: 25.06.10 14:20
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, LaPerouse, Вы писали:

LP>>Компонентное сервис-ориентированное программирование — это и есть современный ООП.
I>Ну тогда да, "ООП рулит". Только это называется подмена понятий. Сначала столько лет называли ООПой всякую лабуду, потом, вместо того чтобы признать свое заблуждение, лабуду заменили разумными концепиями, и натянули на них старое название.

Уверяю тебя, вменяемые специалисты никогда (ну разве что в ранние годы становления ООП, которые я не застал) не подразумевали под ОО-дизайном (голосом Дроздова) "объекты реального мира, взаимодействующие между собой прямо как в дикой природе". ООП в первую очередь — это способ создания модульных, расширяемых, устойчивых к изменениям систем. И всегда им был.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[17]: На базе чего лучше всего продемонстрировать ООП?
От: igna Россия  
Дата: 25.06.10 14:36
Оценка:
Здравствуйте, LaPerouse, Вы писали:

LP>Уверяю тебя, вменяемые специалисты никогда (ну разве что в ранние годы становления ООП, которые я не застал) не подразумевали под ОО-дизайном (голосом Дроздова) "объекты реального мира, взаимодействующие между собой прямо как в дикой природе".


Да, вот кстати. Что же подразумевали вменяемые специалисты под ОО-дизайном?
Re[4]: Circle-ellipse problem
От: andy1618 Россия  
Дата: 25.06.10 15:21
Оценка:
Здравствуйте, igna, Вы писали:

A>>Круги, эллипсы говорите? Это же как раз классический парадокс о невозможности наследования (то же, кстати, касается и прямоугольника-квадрата):


I>Это не настоящий парадокс, неизменяемый круг (а именно таковым он является в математике) без проблем наследуется от эллипса.


Хм, сомнительное получается наследование — а куда девать разные специфические понятия эллипса (размеры полуосей, фокусы и т.п.)? Кругу то ведь только радиус нужен.

Насчёт неизменяемости — да, это хороший выход, но в нашем случае речь шла о редакторе: "Классический пример: векторный редактор — круги, прямоугольники, эллипсы. Переопределяется рисование, изменение масштаба, повороты и т.д...".

Вообще, спорить по этому поводу нет желания, целью было просто обозначить старые добрые ОО-грабли, на которые можно напороться.
Re[10]: На базе чего лучше всего продемонстрировать ООП?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.06.10 15:48
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Что-то мне кажется, что сапер в плане ООП будет очень сильно похож на простенький спред а ля Эксель, плюс которого еще и в том, что можно использовать разработанный ранее калькулятор.


Он будет проще и понятнее.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[11]: На базе чего лучше всего продемонстрировать ООП?
От: Воронков Василий Россия  
Дата: 25.06.10 15:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ВВ>>Что-то мне кажется, что сапер в плане ООП будет очень сильно похож на простенький спред а ля Эксель, плюс которого еще и в том, что можно использовать разработанный ранее калькулятор.

AVK>Он будет проще и понятнее.

Не, это не аргумент. Ты предыдущие части статьи читал?
Re[5]: Circle-ellipse problem
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.06.10 16:09
Оценка:
Здравствуйте, andy1618, Вы писали:

A>Хм, сомнительное получается наследование — а куда девать разные специфические понятия эллипса (размеры полуосей, фокусы и т.п.)? Кругу то ведь только радиус нужен.


Для неизменяемого круга — никуда не девается. Если мы собираемся соблюдать LSP, то все это у круга должно быть, чтобы он мог фигурировать в качестве разновидности эллипса в алгоритмах, работающих с эллипсом. При этом внутрях он, разумеется, может ханить только радиус, а "размеры полуосей, фокусы и т.п." вычислять при запросе.

A>Насчёт неизменяемости — да, это хороший выход, но в нашем случае речь шла о редакторе


А если речь о редакторе, то надо сразу определиться, может ли круг стать эллипсом. Если может — никакого класса Круг не должно быть в принципе. За ненадобностью.

A>Вообще, спорить по этому поводу нет желания, целью было просто обозначить старые добрые ОО-грабли, на которые можно напороться.


Нет там, на самом деле, никаких граблей. Есть лишь плохое понимание. Это очень похоже на дурацкую задачку про сдачу. Там тоже некоторые упорно видят несуществующий парадокс.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re: Прав vdimas, не наследованием единым жив человек. :)
От: Wolverrum Ниоткуда  
Дата: 25.06.10 16:40
Оценка:
А чего все к наследованию прицепились?! Вокруг него, что, весь ООП вертится?
Наследование ж, практически, самое вредное понятие ООП!

И, почему-то, мне эти поиски "идеальной ООП-задачи" выглядят похожими на поиски "серебряной пули". Вам так еще не кажется?
Если так уж очень хочется именно развесистой клюквы иерархии — абстрактную фабрику, мост, интерпретатор (+ повторное использование кода) в зубы — и вперед! Задачи по этим 4 понятиям можно до пенсии сочинять, и все будут.

Без оглядки на то, что есть "ФП", "метапрограммирование", "АОП" и пр. слова — так можно до седых волос выбирать. Меру пора знать.

PS
Хочешь показать ООП — покажи примеры повторного использования кода в разных парадигмах с плюсами и минусами (на этапе ознакомления — лушше только с плюсами, а минусы — несколько позже), варианты иерархий над объектами (ну, способы разбиения на классы — а лучше и не показывать даже), проведи связи между объектами и ролями, приведи понятие абстракции и конкретизации... Ну, в общем, копай в сторону от иерархий.
Re[2]: upd
От: Wolverrum Ниоткуда  
Дата: 25.06.10 17:39
Оценка:
Упс... 2 раза умудрился..
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.