| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Системный анализ, проектирование и UML > Как удалось перейти к ООП технически |
| Автор: Guitar_Player 25.1.2008, 12:36 |
| Мне тут задали такой вопросик: Как известно, программирование начало развиваться как программирование структурного(процедурного) типа. В далбнейшем стиль программирования изменился, оно стало ООП. Вопрос в следующем в чем заключалась суть революции ООП, если такая революция имела место. Нельзя говорить слова типо объект, класс и т.д. Требуется конкретное техническое решение. |
| Автор: izekia 25.1.2008, 13:06 |
| Guitar_Player, ты где-то услышал слово ООП и тебе оно понравилось? причем здесь конкретное техническое решение |
| Автор: Guitar_Player 25.1.2008, 13:10 |
| Притом что нужно не принципы, не предусловия,постусловия а именно какое решение повлекло к созданию объектно ориентированного программирования |
| Автор: Platon 25.1.2008, 13:16 |
| Вообще, ООП базируется на 3-х китах: Наследование, Инкапсуляция и полиморфизм. Эти 3 штуки перевернули мир, позволили развиваться программным продуктам с небывалой скоростью. Если по делу всегда слушай http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 |
| Автор: izekia 25.1.2008, 13:16 |
| Guitar_Player, ООП в общем случае расшифровывается как подход, а не как программирование. Никакого решения не было, существует куча парадигм, которые так или иначе развивались ООП - одна из них, наиболее популярная на сегодняшний день. Как мне кажется. То что я написал выше для того, чтобы дать тебе понять, что твой вопрос по меньшей мере некорректен Добавлено через 3 минуты и 27 секунд Platon, ну по поводу скорости - это сложный вопрос и далеко не однозначный |
| Автор: Platon 25.1.2008, 13:24 |
ну, как же? Был бы медленный, не получил бы такого распространения. |
| Автор: Guitar_Player 25.1.2008, 13:35 |
| Но все таки что изменилось технически? При поступлении на работу в 1С дают список вопросов один из них этот. |
| Автор: izekia 25.1.2008, 13:45 |
| Guitar_Player, ты имел в виду во франча? позови автора и спроси что он имел в виду вопрос поставлен некорректно Что значит технически? Platon, у него немного другие преимущества, хотя их оспаривают и небезуспешно скорость разработки мало зависит от выбранной парадигмы |
| Автор: onsql 25.1.2008, 13:52 |
| Бери Гради Буча "Объектно-ориентированный анализ и проектирование", сделай небольшой конспект одной из первых глав, где обмусоливается ООП со всех сторон. Выучи его и всегда на подобные вопросы по ООП отвечай его словами. Хорошо если его самого при этом упомянешь, типа "как пишет великий и ужасный Гради Буч, один из соавторов УМЛ, автор многочисленных фудаментальных работ по ООП...". Не станут же они в здравом уме спорить с Великим и Ужасным! |
| Автор: izekia 25.1.2008, 13:56 |
| onsql, да он про какую-то непонятную технологию пишет то что с++ Страуструп придумал? но так ООП и до него было Добавлено через 1 минуту и 2 секунды onsql, там первые пять глав стоит прочитать) за исключением нотации, хотя для общего понимания развития УМЛ и ее можно |
| Автор: onsql 25.1.2008, 14:03 |
| Ну я думаю, надо что-то втирать о том как лучезарно ООП осветило нашу жизнь и как мы все стали программировать в терминах предметной области, используя объекты реального мира как прототипы для объектной модели нашего высокоэффективного ПО. Ну и какой революционной была идея класса как абстрактного типа Добавлено через 4 минуты и 47 секунд Привести конкретный технический пример про абстрактную фигуру и конкретные треугольник, круг, квадрат и мол как раньше мы как дураки делали switch по типу фигуры, но теперь то, в постреволюционные времена дружно делаем виртуальный метод draw у фигуры и используем полиморфизм. |
| Автор: Guitar_Player 25.1.2008, 14:47 |
| Ну мы с ней по icq общались я ей в начале что вот суть революции ООП: переход от"сделать так как удобно выполнить машине" к "...удобно выполнить это человеку". Она: требуется конкретное техническое решение -как удалось перейти к ООП технически. Философия не интересует. Я начинаю говорить что вот появились 3 основные идеи. Там все такое облегчило жизнь. Она: это принципы ООП,а не техническое решение. Вот я и обратился за помощью к вам. просто даже не знаю про что она... Слышал при процедурном подходе есть ограничение по количеству слов, в ооп оно больше. Вообще фиг знает. /////////////////////////// А может революция заключалось в объединении данных и кода? |
| Автор: izekia 25.1.2008, 14:51 |
| Guitar_Player, а тебе надо в такую контору устраиваться, где так проводят собеседования? она не понимает о чем она спрашивает, а вопрос задан некорректно попроси переформулировать вопрос прямо так и скажи, что вопрос некорректен, и у него нет однозначности. Можно сказать, что появились новые мегакомпьютеры, которые позволили создать языки использующие ООП |
| Автор: izekia 25.1.2008, 15:09 |
| Guitar_Player, как вакансия называется? |
| Автор: archimed7592 25.1.2008, 15:14 | ||||
История умалчивает, но до меня доходили слухи(от весьма неадекватного человека, так что правдивость оставляю под вопросом), что некая женщина ещё во времена великого и могучего Си придумала такую вот хреновину:
После чего это трансформировалось в применение vftbl(т.е. уменьшились размеры объектов).
Но, на самом деле, если кто читал D&E Старуструпа, те знают, истинные причины, перечислять которые я не буду, ибо если кто не читал - лучше прочесть. Попробуй ответить ей именно про таблицу виртуальных ф-ций - может она именно это хочет услышать PS. Пишу в контексте C/C++, ибо тема перемещена именно из С++. |
| Автор: izekia 25.1.2008, 15:20 |
| archimed7592, были такие мысли, но объединение данных и функции - это как раз следование концепции ООП в техническом плане компу по большей части пофиг находятся они рядом или нет, то есть в техническом плане революции не было идея про то, что функции обработки данных были помещены в один контекст с этими данными, те были убраны из глобального контекста - тоже как бы не совсем техническая часть, а опять же часть концепции |
| Автор: archimed7592 25.1.2008, 17:06 |
Возможно, что для этой женщины(та что на аське сидит) - это было технической революцией |
| Автор: izekia 25.1.2008, 17:13 |
| archimed7592, мне кажется ситуация как в детском саду, когда вопросы местами поменяли |
| Автор: warmonger_ 25.1.2008, 19:18 |
еще можно сказать, для повторного использования программного кода. |
| Автор: georain 27.1.2008, 05:31 |
| Я не знаю про эту, но в основном эти девушки, как боты, они задают вопрос и ответ должен быть в точности как у них написано в ответе, до символов препинания. |
| Автор: izekia 27.1.2008, 19:23 |
| georain, да, когда я устраивался на работу , девушка из кадров перепутала буквы и долго пыталась узнать у меня не владею ли я программой с каки-то левым названием, причем все попытки поправить ее не увенчались успехом, в итоге я честно сознался, что такой проги не знаю. Потом перезванивали оттуда, типа звали на собеседование, но я побоялся ... ну нафиг такие конторы. |
| Автор: TeAnton 30.1.2008, 01:21 |
| Я так понимаю, это все кровью и потом выработалось. Любили программисты использовать в программе глобальные переменные, устали от этого и поняли, что инкапсуляция это хорошо. Наплодили программисты кучу функций с названиями cube_draw, line_draw, circle_draw... замучились и поняли, что полиморфизм и наследование это здорово. Вот приблизительно так. |
| Автор: EvilsInterrupt 23.2.2008, 14:14 |
| Следует различать программирование, мышление и реализацию. Что все это значит ? Мышление - это как тебе надо подумать, чтобы до думаться до решения задачи Программирование - из мыслей и идей в процессе мышления ты пишешь код в синтаксисе того языка, средство разработки которое ты используешь Реализация - это результат построения исполнимого файла при подаче на вход исходных кодов и других необходимых файлов проекта, к примеру файлы с ресурсами. Для процессора, код не особо изменился. Даже не смотря на то что появились таблицы на методы, таблицы с интерфейсами и другие вещи, все это уже было, только раньше человек это в ручную писал для каких-либо нужд. Рекомендую почитать в 3-х томнике Кнута, там отчетливо все это прослеживается! Поменялось всего-лишь наше мышление! Мы поняли,что мы думаем объектами, а не структурно. Пример: "Сынок дай шкафу стакан воды, а то он пить хочет". а в ответ "Почему ? Шкафы же пить не умеют!" . Спросите себя почему это шкаф не умеет пить? Глупо говорить, что не умеет, а может все таки умеет? Ответ прост: в голове у любого здраво мыслящего человека есть концепция шкафа и в нее не входит, что он умеет пить!!! Вот и пришел человек к мысли, хорошо, пусть дядя Вася напишет Базу Данных(TDataBaseManager), а я напишу клиента(т.е. АРМ). Это естественное разделение труда, но человек не сразу к этому пришел. Но все таки, чисто технически, как было, так и осталось! Компиллеры, просто включили в себя инструкции class, virtual и некоторые другие. Но все осталось в том же виде, Ваш процессор вообще не поймет разницы меж ООП и структурным методом написания программы. Потому что для него все подано практически в одинаковом виде! Не техническое поменялось, а поменялось мышление программистов! |