![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
![]()
1. Как Вы собираетесь это использовать на практике?
Код:
2. Как быть с закрытыми (private) членами? Объявлять друзьями эти классы сложения, вычитания,...? 3. Как с Вашим подходом реалиовать следующее: Код:
Код:
Но почему бы не принять int как целое число в математике? Вполне логично, что операторы все уже будут находиться в самом "классе" int и никакие менеджеры не нужны будут. Чем тут не ООП подход? Если я правильно понял ТС, то история про отделение бизнес-логики от модели предметной области и что-то общее с выбором между двумя такими паттернами, как "Active Record" и "Data Mapper" (по крайней мере у Фаулера они так называются ![]() |
![]() |
![]() |
![]() |
#12 | ||||
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
![]() Цитата:
![]() Ну если нет augend, тогда к this. Аналогично с другими операциями. Цитата:
Цитата:
Цитата:
![]() Последний раз редактировалось atomicxp; 06.05.2009 в 04:15. |
||||
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
![]()
т.е. будет как-то так:
Код:
Надеюсь всёже, что нет, но тогда не понимаю как можно к this прибавить что-то? |
![]() |
![]() |
![]() |
#14 | |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
![]() Цитата:
В книге "Язык программирования C++" Бьерна Страуструпа на странице 330 есть глава 11.6 Большие объекты. Вообще, 11 глава об операторах, а вот в этой конкретно говорится о том как можно избегать копирования если этого не нужно. Общая же суть в том, что возвращаемый объект является временным, он идёт по ссылке и создаётся внутри самого оператора. То есть в отличие от присваивания с операцией это более длительный оператор (метод). ![]() Пару пояснений к схеме. Зелёные элементы это пространства имён, а зелёные стрелки значат то, что некий элемент включён в него. Синие элементы это классы, а синие стрелки наследования, как видно из схемы в ней пока нет включения, это отображалось бы оранжевыми стрелками. Красные элементы методы и аргументы, а стрелки соединяют их от аргументов к методам и наконец классам. Надо собрать наследованием арифметические операции и потом уже наследовать их к числовым типам, то есть код по идее должен быть не как у тебя показано. Плюс полиморфные классы цель которых использование полиморфных функций в классах потомках это конечно немножко не то. Необходимо создать соединение с различными обычными операторами. Между прочим тут подумалось, что операции PPU если считаешь физику тоже можно использовать подобным образом, а не только GPU от NVidia, ну или любой другой CPU. P.S. Арифметические операции это хорошо, но в целом они лишь вынужденная необходимость, потому что без них почти ничего не обходится. А так надо разрабатывать абстракции для файловых систем, сети, многонитиевого программирования и т.п. |
|
![]() |
![]() |
![]() |
#15 | ||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
![]() Цитата:
Код:
Цитата:
Так же библиотека WinSock в винде. Хочешь TCP, хочешь UDP, да и с IrDa посредством неё работаешь практически одинаково. Флаги только нужные выставляешь. Тоже абстракция какая никакая, хотя и без ООП ![]() Просто обычно абстракции более низкоуровневые и не так "красивы", как хотелось бы, зато производительности лучшей добиться можно. В .NET и Java так вообще кругом они. ADO.NET, JDBC,... |
||
![]() |
![]() |
![]() |
#16 | |||
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
![]() Цитата:
Код:
Код:
![]() Цитата:
Цитата:
Так вот абстракции .NET Framework это очень плохо написанные абстракции. И ведь в отличие от C++ так просто не перепишешь, да и возможностей у дотнета почти никаких. Всё приходится портировать, причём с проектов на C++, тогда как на самом C++ достаточно скачать и включить в код нужную библиотеку. ADO.NET тоже жуть, в целом же всё это становится понятным, если самому сделать некоторые классы дотнета существенно упрощающие работу с кривым фреймворком. В общем, абстракции майкрософт как всегда ужасны и с каждой новой версией становятся только хуже. А хорошие видимо никак кроме как самому написать не получить. ![]() |
|||
![]() |
![]() |
![]() |
#17 | ||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
![]() Код:
![]() Цитата:
Цитата:
Ну и надеюсь под .NET не на C++ писали, а на шарпе Проблема вероятно в том, что это самое хорошее у всех разное и что нравится Вам может вызывать отвращение у других и наоборот. Кому-то и STL нравится ![]() |
||
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
![]()
Не знаю, mustaf0id сказал в этой теме, что можно какой-то open-mp использовать, и т.п. Но что-то здесь не так. Иными словами у меня возникают пока что неподтверждённые собственными опытами подозрения, что проблемы будут из-за специальных компиляторов. Но вот если применить простое распараллеливание. Впрочем здесь надо опыты проводить, так ничего сказать не могу.
|
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
![]()
Допустим имеется 2 потока.
Первый считает: a + b Второй: c + d Переменная x внутри объекта "сумматора" одна на всех и потому записать в неё значение может первый поток, а считать - второй. Или наоборот. В итоге вместо 2 + 2 посчитается какое-нибудь 2 + 15. Придется на каждый поток заводить свой "сумматор" и очень много со всем этим возиться в итоге ![]() |
![]() |
![]() |
![]() |
#20 | |
Регистрация: 05.05.2009
Сообщений: 9
|
![]()
Ну, open-mp это я к примеру назвал
![]() Цитата:
![]() Кстати, насчет абстракций, а какие можно выделить критерии "хорошей" абстракции? Я думаю один из таких критериев - простота. Например, 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 |