Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> глубокое понимание полиморфизма в ООП, глубокое понимание полиморфизма в ООП 
:(
    Опции темы
andy301086
Дата 22.4.2012, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.12.2011

Репутация: нет
Всего: нет



Здравствуйте всем. Кто зашел в эту ветку форума. Вопрос такой. Есть ООП и один из трех столпов - полиморфизм. Суть полиморфизма ясна и для чего используется понятно. Но мне раз задали вопрос, над которым я глубоко задумался. Вопрос: "Для чего вообще нужен полиморфизм в С#? В процедурных языках можно создать библиотеку и подключать ее, т.е. где необходимо ее подгружать и кажется аргументы верны." Вот сижу и думаю над этим вопросом. Казалось бы скажут ООП, мы и используем основные столпы, скажут процедурный язык - будет процедурный язык. Может у кого-то есть мысли? Заранее благодарен.
PM MAIL   Вверх
Kanes
Дата 22.4.2012, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 11.3.2005

Репутация: нет
Всего: нет



--------------------
Big gun - big future  
PM MAIL   Вверх
andy301086
Дата 22.4.2012, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.12.2011

Репутация: нет
Всего: нет



Спасибо за ссылку. А если же задаться таким вопросом о наследовании. Вместо наследования создать библиотеку и подключать ее где необходимо. Или же все-таки использовать наследование? Ведь по сути и так можно сделать. Какая польза от наследования?
PM MAIL   Вверх
SKrivosein
Дата 23.4.2012, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: 4
Всего: 8



О наследовании очень просто, допустим у тебя десять классов которые делают одинаковые рутинные операции(упрощенный пример - подключение к базе данных), а потом отличающиеся подробные операции (каждая делает с базой данных свои....) Будеш в десяти классах писат одно и тоже или создаш один абстрактный класс от которего они унаследуют все общие операции и свойства ? Эт так на пальцах.
А теперь представь себе сложную систему в которой будут десятки, сотьни может и больше объектов, допустим учет и расчет финансов большой компании. Можеш себе представить код в котором будеш все подключать "где надо"? 
Здесь надо поменять угол зренния, мы не морочим себе голову с ООП потому что так надо(модно  smile), а наоборот, применяем определенные техники проектирования и называем их ООП.
Надеюсь мысль понятна, с полиморфизмем попробуй сам подумать.

Это сообщение отредактировал(а) SKrivosein - 23.4.2012, 09:18


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
erm0l0v
Дата 25.4.2012, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



Процедурное программирование было популярно в 90. ООП пришло ему на смену из-за неэффективности процедурного с точки зрения внесения изменений. Связанно это с тем что обычно проекты часто меняются и ООП позволяет наиболее прозрачно вносить эти изменения. Но правда ООП иногда не стоит сильно увлекаться.
Например если вы пишете библиотеку для работы с FTP то вряд ли стоит использовать ООП так как протокол не меняется каждые 2 месяца. Если вы пишете библиотеку для загрузки файлов с сервера то ООП наоборот удобнее, т.к. способов загрузки этих файлов может быть бесконечно много (HTTP, FTP, SSH...) и если вы реализуете загрузку скажем с подошью FTP по всем канонам ООП то добавлять новые протоколы будет делом 5 минут.
И вообще ООП удобно использовать вместе с рефакторингом и гибким программированием. Есть даже специальное правило:
Если мы что то делаем первый раз мы это просто делаем.
Если нам приходится делать тоже второй раз мы морщимся но делаем.
Если приходится делать тоже третий раз то начинаем рефакторинг.

В примере про загрузку файлов это можно применить так:
Сначала пишем простую процедуру для загрузки файлов по FTP.
Заказчик попросил прикрутить HTTP пишем еще одну процедуру для HTTP.
Заказчик попросил еще и SSH, начинаем рефакторинг, создаем базовый класс выносим весе дублирование кода и вообще начинаем использовать всю гибкость ООП.
PM MAIL   Вверх
k0rvin
Дата 29.4.2012, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



Цитата(andy301086 @ 22.4.2012,  14:45)
Для чего вообще нужен полиморфизм в С#?

Чтобы ответить на этот вопрос, достаточно ответить на вопрос «Для чего вообще нужен полиморфизм?»


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
saneea
Дата 3.5.2012, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Цитата(andy301086 @  22.4.2012,  19:59 Найти цитируемый пост)
Вместо наследования создать библиотеку и подключать ее где необходимо.

мне кажется, это очень плохо повлияет на производительность: загрузка библиотек не самая быстрая операция. +использование языковых конструкций для создания ООП-кода будет более естественно выглядеть чем куча "подгрузок/выгрузок" нужных библиотек.

Это сообщение отредактировал(а) saneea - 3.5.2012, 09:18
PM MAIL   Вверх
erm0l0v
Дата 3.5.2012, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



Цитата(saneea @ 3.5.2012,  09:18)
куча "подгрузок/выгрузок" нужных библиотек.

Библиотеку на .NET выгрузить невозможно)))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.3495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.