|
|
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Я много видел людей прекланяющихся перед ООП так что можно подумать это величайшая теория и тд и тп. Но как оказалось, все гораздо проще - ООП теория есть отклик мировосприятия и психологии. И не больше чем. Здесь я попытаюсь расшифровать принципы ООП в этом контексте. Начнем с инкапсуляции . Каждый день в своей жизни чел имеет дело с инкапсуляцей. Например человеческое тело - характерный пример. Никто не видит обычно в человеке внутренностей. Никто не видит как внутри кишечника перемещается зловонная субстанция некогда бывшая чизбургером или картошкой -фри. Когда мы общаемся например с кемто мы не думаем о том как его сердце пульсиря и сокращаясь гоняет по всему телу красную жидкость. Мы привыкли инкапсулировать все в черные ящики с красивыми наклейками и названиями не думая о том какой мусор или какой механизм скрыт внутри ящика. И каждый день мы имеем дело с говном завернутым в блестящую конфетную бумажку. Наследование - Наследование продиктовано принципами размножения и выживания Отнаследовался например сын от отца переняв основные его черты. Такой же лох и недотепа. Но жизнь могла внести свои коррективы. Также Наследование продиктовано ленью и принципом копи-паста. Никто не хочет делать чтото с нуля и берет уже готовое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2012, 13:56 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Bad logicООП теория есть отклик мировосприятия и психологии. И не больше чем.спасибо, Кэп! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2012, 14:26 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Bad logicЗдесь я попытаюсь расшифровать принципы ООП в этом контексте. Начнем с инкапсуляции ... Наследование - ... Ты что-то путаешь, Еще задолго до появления Smalltalk Алан Кей сформулировал три фундаментальных принципа объектно-ориентированного программирования: Объект - базовая единица объектно-ориентированной системы. Объекты могут обладать состоянием. Посылка сообщения - единственный способ обмена информацией между объектами. http://www.smalltalk.ru/articles/smalltalk.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2012, 14:36 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Bad logic, бессмысленное графоманство, но для пятницы - сойдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2012, 14:50 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Через 10-20 страниц это можно будет переносить в ПТ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2012, 18:31 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
автор ...продиктовано ленью... !!! Лень - двигатель Прогресса пятница ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2012, 20:09 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
А как же... полиморфизм? Забыли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2012, 20:12 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Bad logicЯ много видел людей прекланяющихся перед ООП так что можно подумать это величайшая теория и тд и тп. Читать сюда, много думать (если есть конечно чем) http://www.dreamsongs.com/Files/ObjectsHaveFailed.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2012, 20:52 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Проясним ситцацЧитать сюда, много думать (если есть конечно чем) http://www.dreamsongs.com/Files/ObjectsHaveFailed.pdf Зачем там такой плохочитаемый шрифт? А вообще кроме этого есть еще например http://doc.cat-v.org/programming/bad_properties_of_OO и многое другое: http://harmful.cat-v.org/software/OO_programming/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2012, 22:08 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
То, что ООП отражает мировосприятие и психологию, это большой плюс. Меньше проблем с изучением. А вообще, существуют ли теории, которые "больше чем" "отклик мировосприятия и психологии"? Ну хотя бы, в программировании? И между прочим, пример с наследованием неудачный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2012, 17:40 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Bad logicвсе гораздо проще - ООП теория есть отклик мировосприятия и психологии. - в этом контексте интересно что такое "процедурное программирование"? а ведь еще есть извращенцы которые программируют с помощью триггеров (не дай бог, такого в темном переулке встретить) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2012, 18:46 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Bad logic Наследование - Наследование продиктовано принципами размножения и выживания Отнаследовался например сын от отца переняв основные его черты. Такой же лох и недотепа. Но жизнь могла внести свои коррективы. Также Наследование продиктовано ленью и принципом копи-паста. Никто не хочет делать чтото с нуля и берет уже готовое. Неуданчный пример. Наследование (inheritance) в биологии и генетике - совершенно другая тема. И к наследованию в С++/Java/C# (к примеру) имеет весьма отдалённое отношение. Это - суть терминология которую нужно понимать в контексте а не в отрыве. Нет никакого наследования. Есть наследование в ООП и есть наследование в генетике . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2012, 15:05 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
mayton наследование в генетике .можно поставить в аналогию с "прототипами". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2012, 18:57 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
> /Наследование / - Наследование продиктовано принципами размножения и выживания > Отнаследовался например сын от отца переняв основные его черты. Ты забыл уточнить, как от того же отца отнаследовалась его дочь, переняв все его основные черты -- ну там бороду, отсутствие грудей и присутствие чего-то ещё... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2012, 15:57 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Кстати, я против наследования, очень плохая привычка наследовать классы, наследовать надо абстракции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2012, 19:17 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
WPFКстати, я против наследования реализации, очень плохая привычка наследовать классы, наследовать надо абстракции. fix ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2012, 19:38 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
WPFКстати, я против наследования, очень плохая привычка наследовать классы, наследовать надо абстракции. Код: java 1. 2. 3. 4. Вот так вот сурово поступили Sun(Oracle) с попыткой унаследовать финализированное. Так что механизмы есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2012, 00:38 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
maytonWPFКстати, я против наследования, очень плохая привычка наследовать классы, наследовать надо абстракции. Код: java 1. 2. 3. 4. Вот так вот сурово поступили Sun(Oracle) с попыткой унаследовать финализированное. Так что механизмы есть.Да, но где здесь механизм наследовать абстракцию? "String" ведь не интерфейс, а именно класс. Они запретили любое наследование, а это не выход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2012, 00:40 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Открою еще одну свою маленькую профессиональную тайну: в большинстве случаев следует применять очень простой подход - абстрактные классы отвечают на вопрос что?, а интерфейсы на вопрос как? Логика приложения сразу становиться понятной. А базовый класс в большинстве случаев зло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2012, 05:11 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
И следующий момент - полиморфизм, который недостижим для большинства программистов. Возможность использования полиморфизма появляется только при развитой абстракции. Верный признак недоразвитой абстракции это использование всяких if-ов и switch/case и подобного мусора. Есть одно правило, если пришлось использовать оператор if - логика приложения написано неправильно. В этом случае следует остановиться и пересмотреть абстракции, где-то имеется ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2012, 05:16 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
WPFВерный признак недоразвитой абстракции это использование всяких if-ов и switch/case и подобного мусора. Есть одно правило, если пришлось использовать оператор if - логика приложения написано неправильно. В этом случае следует остановиться и пересмотреть абстракции, где-то имеется ошибка. Здесь надо дополнить или уточнить. Ведь если бездумно применять RCWP то можно порождить кучу ненужных сущностей что только усложняет и запутывает код. Элементарно... если у вас блок if/switch/case проверяющий принадлежность к субклассу встречается только в 1 методе это то еще не повод переделывать всю логику под полиморфизм. Полиморфизм в моём понимании это не парадигма и не идеология а just tool. Просто инструмент. И принцип Оккама пока еще работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2012, 10:34 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Коллега, соглашусь с вами, в механическом применении этого принципа возникают перекосы и отклонения, что можно было бы определить так - чем больше сущностей, тем меньше взаимных зависимостей, и чем меньше сущностей, тем больше зависимостей. Эта аксиома волнует многих мыслителей, и программистов в том числе. Поэтому приходится держаться оптимального соотношения при проектировании, на которое, как правило, влияет соотношение время/деньги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2012, 13:31 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
WPFИ следующий момент - полиморфизм, который недостижим для большинства программистов. Возможность использования полиморфизма появляется только при развитой абстракции. Верный признак недоразвитой абстракции это использование всяких if-ов и switch/case и подобного мусора. Есть одно правило, если пришлось использовать оператор if - логика приложения написано неправильно. В этом случае следует остановиться и пересмотреть абстракции, где-то имеется ошибка. Тут все спорно. Нужно начать с того, что нам надо. Что-бы в программу легко добавлялись новые типы, или что-бы добавлялись новый функционал для фиксированного количества типов. Так вот, второе хоть и не ООП, но иногда очень нужно, а потому приходится использовать всякие if-ы и switch/case-ы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2012, 13:36 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
Что касается полиморфизма, так полиформизм нельзя имплементить, полиморфизм возникает, когда структура приложения достигает вершин абстракции, то есть когда соблюдены условия. Тема эта сложная, но вот один маячок я нашел, это тестирование, не обязательно реальное, тест можно написать и в своем воображении, так вот если класс проходит тест без зависимостей, то есть если классу для выполнения не требуются другие классы (мокинг не в счет), значит класс (а следовательно связанные с ним абстракции) определен верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2012, 13:45 |
|
||
|
Фундамент ООП
|
|||
|---|---|---|---|
|
#18+
WPFИ следующий момент - полиморфизм, который недостижим для большинства программистов. Возможность использования полиморфизма появляется только при развитой абстракции. Верный признак недоразвитой абстракции это использование всяких if-ов и switch/case и подобного мусора. Есть одно правило, если пришлось использовать оператор if - логика приложения написано неправильно. В этом случае следует остановиться и пересмотреть абстракции, где-то имеется ошибка. Не могли бы вы иллюстрировать своё высказывание небольшим примером? Вводная: Допустим, необходимо реализовать пересылку сообщений между объектами разных классов, с последующей обработкой. Получатели: Все классы получателей имеют общего предка. Каждый класс получателей может обрабатывать неограниченное количество классов сообщений. Для каждого сообщения имеются специфические алгоритмы обработки, свои у каждого класса получателей. Сообщения: Все классы сообщений имеют общего предка. Интересует: 1. Механизм доставки сообщения получателю. 2. Обработка доставленного сообщения получателем. Конкретнее - передача сообщения нужному обработчику (вид обработчика непринципиален - метод получателя, дочерний объект, что-то еще). Псевдокодом, либо любым удобным для вас ЯП. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2012, 14:53 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37976551&tid=1342100]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
136ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 421ms |

| 0 / 0 |
