|
20 / 20 / 11
Регистрация: 04.09.2009
Сообщений: 104
|
|
Практическое использование ООП03.11.2015, 15:41. Показов 1933. Ответов 21
Метки нет (Все метки)
Хоть по этому вопросу и есть множество информации и тем даже на этом форуме, но понимания практического применения так и не прибавилось.
Объясните пожалуйста на конкретном примере, что и как правильно использовать. Пример. Есть три класса, которые реализуют методы, по работе с базами данных MSSQL, Oracle и Postgresql. Все три класса практически одинаковы по коду, за исключением того, что используют разные библиотеки (System.Data.Sql, Npgsql и Oracle.DataAccess.Client) и отличаются названия классов и методов в используемых библиотеках (например SqlConnection,NpgsqlConnection,OracleCon nection). Т.е. реализация абсолютно одинакова, но используются разные объекты. Сейчас понадобилось написать приложение, которое будет взаимодействовать с двумя (а может и тремя) БД, в связи с этим возник вопрос: Можно ли каким-то образом организовать код, чтобы реализация была в одном общем классе, а инициализация подключаемых библиотек в трех других? PS. 1. Нет перенести все на одну БД нельзя 2. Строк кода в классах не много, но хочется понять, для чего все таки нужно ООП
0
|
|
| 03.11.2015, 15:41 | |
|
Ответы с готовыми решениями:
21
В какой литературе можно посмотреть практическое использование Security.Cryptography? Использование ООП |
|
|
||
| 03.11.2015, 15:51 | ||
|
Вариант 2: Создать свой интерфейс с прототипами методов и несколько классов (по числу провайдеров БД), его реализующих. Каждый класс инкапсулирует работу с определенным типом БД и использует для общения методы, определенные в интерфейсе. Для создания определенного типа можно использовать фабрику, к примеру.
0
|
||
|
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
|
||||||
| 03.11.2015, 16:03 | ||||||
|
Я бы сделал примерно так:
1
|
||||||
|
Master of Orion
|
|
| 03.11.2015, 16:14 | |
|
EvgenOrel, конечно одинакова, поэтому прямая работа с БД уже лет 10 как не в моде
Linq2Sql появился еще в .Net 3.5 если мне память не изменяет, потом стали все пользоваться EF, а скоро выходит аж 6(7) версия
0
|
|
|
20 / 20 / 11
Регистрация: 04.09.2009
Сообщений: 104
|
|||||||
| 03.11.2015, 16:15 [ТС] | |||||||
И не понял что делает:
0
|
|||||||
|
Master of Orion
|
||
| 03.11.2015, 16:16 | ||
|
EvgenOrel, фактически все эти фреймворки делают то, что написали выше, только круче, производительнее, и более масштабируемо. Но написать аналог заточенный только под свою конфигурацию не очень сложно.
Добавлено через 49 секунд
0
|
||
|
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
|
||||||
| 03.11.2015, 16:18 | ||||||
0
|
||||||
|
20 / 20 / 11
Регистрация: 04.09.2009
Сообщений: 104
|
|||||||
| 03.11.2015, 16:27 [ТС] | |||||||
|
Поясните на примере в трех классах есть метод:
Можете привести пример описания для этого метода и его вызов ?
0
|
|||||||
|
|
|||||||
| 03.11.2015, 16:40 | |||||||
2
|
|||||||
|
|
|||||||
| 03.11.2015, 19:19 | |||||||
|
Его можно реализовать так:
Обратите внимание на то, что: 1) Этот код не зависит от того, какой тип вы ему дадите. Поскольку все классы SqlConnection, OracleConnection и т.д. унаследованы от DbConnection, то мы можем разрабатывать код, который работает со всеми этими классами независимо от их конкретного типа. 2) Теперь наш функционал сосредоточен в одном месте, и нет необходимости писать один и тот же код в каждом из типов. Упрощается и правка кода, потому что правку нужно будет делать только в одном месте. Таким образом имеем два преимущества - универсальность и переиспользование кода. Без ООП это было бы затруднительно. pro_100_gram, insite2012, что ж вы так человека пугаете? Всякими IoC-ами и Ninject-ами. Мы же можем его потерять. Навсегда
3
|
|||||||
|
|
||
| 03.11.2015, 19:33 | ||
0
|
||
|
|
||
| 03.11.2015, 19:44 | ||
Я читал Троелсена (хорош, очень хорош), Рихтера (тоже хорош, но его использование уточненных имен типов просто убивает), сейчас читаю Кр. Нейгела и др. Ну и остальное по мелочи, Хабр, StackOverflow, CodeProject, RSDN.
1
|
||
|
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
|
|
| 03.11.2015, 20:04 | |
|
insite2012, А мне в последнее время книжки лень читать, больше нравится краткое введение и использование на практике. Поэтому сейчас читаю http://webglfundamentals.org/ . Хотя сильно чувствую, что в теории начинаю отставать.
1
|
|
|
|
||
| 03.11.2015, 20:06 | ||
0
|
||
|
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
|
|
| 03.11.2015, 20:18 | |
|
insite2012, Юзал предшественика WCF'a - .NetRemoting. Был под впечатлением после стандартных сокетов, но WCF учить что-то не тянет. Я уже на это неспособен видимо, читать, что-то не из стека веб технологий.
0
|
|
|
Master of Orion
|
|
| 03.11.2015, 21:40 | |
|
pro_100_gram, дык это и есть веб. Его кроме как для веба редко используют. Когда нужно что-то покруче, чем просто webmethod дергать WCF приходит на помощь.
insite2012, хорошая тема, я даже на неё MCSD сдал Но до конца до сих пор плохо знаю. Там столько нюансов, что жуть одна.
0
|
|
|
|
||
| 03.11.2015, 21:47 | ||
Но интересно же, потому продолжаю.
0
|
||
|
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
|
|||
| 03.11.2015, 22:30 | |||
|
Psilon, Веб - это лишь одна из возможностей WCF, потому он такой громоздкий.
insite2012, Почему не ASP.NET MVC, а WCF? Зачем вы его учите?
0
|
|||
|
Master of Orion
|
|||
| 03.11.2015, 23:15 | |||
Точно также WCF - это веб. Потому что единственная альтернатива - межпроцессное взаимодействие. Но там смысла никакого в нем нет. Это по-умолчанию клиент-серверная архитектура, а как следствие, веб ![]() Транзакции (это про атрибуты PerCall и прочие или другое?) не так страшно, как это
0
|
|||
| 03.11.2015, 23:15 | |
|
Помогаю со студенческими работами здесь
20
Свойства Qt. Практическое использование
Практическое использование некоторым методов TObject Полиморфизм в C++: практическое использование переопределния виртуальных функций Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|