|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.05.2009, 00:34 | #11 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
1. Как Вы собираетесь это использовать на практике?
Код:
2. Как быть с закрытыми (private) членами? Объявлять друзьями эти классы сложения, вычитания,...? 3. Как с Вашим подходом реалиовать следующее: Код:
Код:
Но почему бы не принять int как целое число в математике? Вполне логично, что операторы все уже будут находиться в самом "классе" int и никакие менеджеры не нужны будут. Чем тут не ООП подход? Если я правильно понял ТС, то история про отделение бизнес-логики от модели предметной области и что-то общее с выбором между двумя такими паттернами, как "Active Record" и "Data Mapper" (по крайней мере у Фаулера они так называются ) |
06.05.2009, 03:33 | #12 | ||||
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
Цитата:
Ну если нет augend, тогда к this. Аналогично с другими операциями. Цитата:
Цитата:
Цитата:
Последний раз редактировалось atomicxp; 06.05.2009 в 04:15. |
||||
06.05.2009, 07:53 | #13 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
т.е. будет как-то так:
Код:
Надеюсь всёже, что нет, но тогда не понимаю как можно к this прибавить что-то? |
06.05.2009, 09:23 | #14 | |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
Цитата:
В книге "Язык программирования C++" Бьерна Страуструпа на странице 330 есть глава 11.6 Большие объекты. Вообще, 11 глава об операторах, а вот в этой конкретно говорится о том как можно избегать копирования если этого не нужно. Общая же суть в том, что возвращаемый объект является временным, он идёт по ссылке и создаётся внутри самого оператора. То есть в отличие от присваивания с операцией это более длительный оператор (метод). Пару пояснений к схеме. Зелёные элементы это пространства имён, а зелёные стрелки значат то, что некий элемент включён в него. Синие элементы это классы, а синие стрелки наследования, как видно из схемы в ней пока нет включения, это отображалось бы оранжевыми стрелками. Красные элементы методы и аргументы, а стрелки соединяют их от аргументов к методам и наконец классам. Надо собрать наследованием арифметические операции и потом уже наследовать их к числовым типам, то есть код по идее должен быть не как у тебя показано. Плюс полиморфные классы цель которых использование полиморфных функций в классах потомках это конечно немножко не то. Необходимо создать соединение с различными обычными операторами. Между прочим тут подумалось, что операции PPU если считаешь физику тоже можно использовать подобным образом, а не только GPU от NVidia, ну или любой другой CPU. P.S. Арифметические операции это хорошо, но в целом они лишь вынужденная необходимость, потому что без них почти ничего не обходится. А так надо разрабатывать абстракции для файловых систем, сети, многонитиевого программирования и т.п. |
|
06.05.2009, 11:17 | #15 | ||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Цитата:
Код:
Цитата:
Так же библиотека WinSock в винде. Хочешь TCP, хочешь UDP, да и с IrDa посредством неё работаешь практически одинаково. Флаги только нужные выставляешь. Тоже абстракция какая никакая, хотя и без ООП Просто обычно абстракции более низкоуровневые и не так "красивы", как хотелось бы, зато производительности лучшей добиться можно. В .NET и Java так вообще кругом они. ADO.NET, JDBC,... |
||
06.05.2009, 12:11 | #16 | |||
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
Цитата:
Код:
Код:
Цитата:
Цитата:
Так вот абстракции .NET Framework это очень плохо написанные абстракции. И ведь в отличие от C++ так просто не перепишешь, да и возможностей у дотнета почти никаких. Всё приходится портировать, причём с проектов на C++, тогда как на самом C++ достаточно скачать и включить в код нужную библиотеку. ADO.NET тоже жуть, в целом же всё это становится понятным, если самому сделать некоторые классы дотнета существенно упрощающие работу с кривым фреймворком. В общем, абстракции майкрософт как всегда ужасны и с каждой новой версией становятся только хуже. А хорошие видимо никак кроме как самому написать не получить. |
|||
06.05.2009, 12:34 | #17 | ||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Код:
Цитата:
Цитата:
Ну и надеюсь под .NET не на C++ писали, а на шарпе Проблема вероятно в том, что это самое хорошее у всех разное и что нравится Вам может вызывать отвращение у других и наоборот. Кому-то и STL нравится |
||
06.05.2009, 12:48 | #18 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
Не знаю, mustaf0id сказал в этой теме, что можно какой-то open-mp использовать, и т.п. Но что-то здесь не так. Иными словами у меня возникают пока что неподтверждённые собственными опытами подозрения, что проблемы будут из-за специальных компиляторов. Но вот если применить простое распараллеливание. Впрочем здесь надо опыты проводить, так ничего сказать не могу.
|
06.05.2009, 13:32 | #19 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Допустим имеется 2 потока.
Первый считает: a + b Второй: c + d Переменная x внутри объекта "сумматора" одна на всех и потому записать в неё значение может первый поток, а считать - второй. Или наоборот. В итоге вместо 2 + 2 посчитается какое-нибудь 2 + 15. Придется на каждый поток заводить свой "сумматор" и очень много со всем этим возиться в итоге |
06.05.2009, 13:39 | #20 | |
Регистрация: 05.05.2009
Сообщений: 9
|
Ну, open-mp это я к примеру назвал . Можно и свои потоками, допустим посчитать надо сумму массива и есть n ядер, каждым потоком считаем сумму 1/n части массива и потом считаем сумму сумм. Блокировка на каждый плюс не нужна, только для сохранения потоком своей суммы.
Цитата:
Кстати, насчет абстракций, а какие можно выделить критерии "хорошей" абстракции? Я думаю один из таких критериев - простота. Например, for можно выразить через while, (или не дай бог goto ) но тогда появляется излишняя "свобода действий" и код становить трудно читать. Вот помоему интересное мнение по этому поводу http://blog.intentsoft.com/intention...ons_and_p.html там правда про языки программирования но суть та же. Код:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
в поисках органайзера | crazy horse | Софт | 6 | 11.02.2008 16:56 |
Нахождение совершенных чисел. Паскаль | NikLik | Помощь студентам | 3 | 23.11.2007 22:19 |