![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| andy301086 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
Здравствуйте всем. Кто зашел в эту ветку форума. Вопрос такой. Есть ООП и один из трех столпов - полиморфизм. Суть полиморфизма ясна и для чего используется понятно. Но мне раз задали вопрос, над которым я глубоко задумался. Вопрос: "Для чего вообще нужен полиморфизм в С#? В процедурных языках можно создать библиотеку и подключать ее, т.е. где необходимо ее подгружать и кажется аргументы верны." Вот сижу и думаю над этим вопросом. Казалось бы скажут ООП, мы и используем основные столпы, скажут процедурный язык - будет процедурный язык. Может у кого-то есть мысли? Заранее благодарен.
|
|||
|
||||
| Kanes |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 11.3.2005 Репутация: нет Всего: нет |
--------------------
Big gun - big future |
|||
|
||||
| andy301086 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
Спасибо за ссылку. А если же задаться таким вопросом о наследовании. Вместо наследования создать библиотеку и подключать ее где необходимо. Или же все-таки использовать наследование? Ведь по сути и так можно сделать. Какая польза от наследования?
|
|||
|
||||
| SKrivosein |
|
|||
![]() Идущий в даль ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 9.6.2007 Где: Praha - Прага Репутация: 4 Всего: 8 |
О наследовании очень просто, допустим у тебя десять классов которые делают одинаковые рутинные операции(упрощенный пример - подключение к базе данных), а потом отличающиеся подробные операции (каждая делает с базой данных свои....) Будеш в десяти классах писат одно и тоже или создаш один абстрактный класс от которего они унаследуют все общие операции и свойства ? Эт так на пальцах.
А теперь представь себе сложную систему в которой будут десятки, сотьни может и больше объектов, допустим учет и расчет финансов большой компании. Можеш себе представить код в котором будеш все подключать "где надо"? Здесь надо поменять угол зренния, мы не морочим себе голову с ООП потому что так надо(модно Надеюсь мысль понятна, с полиморфизмем попробуй сам подумать. Это сообщение отредактировал(а) SKrivosein - 23.4.2012, 09:18 |
|||
|
||||
| erm0l0v |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.1.2011 Репутация: нет Всего: 1 |
Процедурное программирование было популярно в 90. ООП пришло ему на смену из-за неэффективности процедурного с точки зрения внесения изменений. Связанно это с тем что обычно проекты часто меняются и ООП позволяет наиболее прозрачно вносить эти изменения. Но правда ООП иногда не стоит сильно увлекаться.
Например если вы пишете библиотеку для работы с FTP то вряд ли стоит использовать ООП так как протокол не меняется каждые 2 месяца. Если вы пишете библиотеку для загрузки файлов с сервера то ООП наоборот удобнее, т.к. способов загрузки этих файлов может быть бесконечно много (HTTP, FTP, SSH...) и если вы реализуете загрузку скажем с подошью FTP по всем канонам ООП то добавлять новые протоколы будет делом 5 минут. И вообще ООП удобно использовать вместе с рефакторингом и гибким программированием. Есть даже специальное правило: Если мы что то делаем первый раз мы это просто делаем. Если нам приходится делать тоже второй раз мы морщимся но делаем. Если приходится делать тоже третий раз то начинаем рефакторинг. В примере про загрузку файлов это можно применить так: Сначала пишем простую процедуру для загрузки файлов по FTP. Заказчик попросил прикрутить HTTP пишем еще одну процедуру для HTTP. Заказчик попросил еще и SSH, начинаем рефакторинг, создаем базовый класс выносим весе дублирование кода и вообще начинаем использовать всю гибкость ООП. |
|||
|
||||
| k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: нет Всего: 5 |
Чтобы ответить на этот вопрос, достаточно ответить на вопрос «Для чего вообще нужен полиморфизм?» -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
| saneea |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
мне кажется, это очень плохо повлияет на производительность: загрузка библиотек не самая быстрая операция. +использование языковых конструкций для создания ООП-кода будет более естественно выглядеть чем куча "подгрузок/выгрузок" нужных библиотек. Это сообщение отредактировал(а) saneea - 3.5.2012, 09:18 |
|||
|
||||
| erm0l0v |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.1.2011 Репутация: нет Всего: 1 |
Библиотеку на .NET выгрузить невозможно))) |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |