Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2012, 22:37   #11
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Честно говоря, вообще не понимаю смысла вопроса.
Тогда - когда это удобнее.

С моей точки зрения к показаниям относится:

1. Можно инкапсулировать данные. Когда данные нельзя инкапсулирова, ООП мне представляется не очень логичным. Кстати, в одной из соседних тем обсуждает перемножение матриц на ООП. Честно говоря, не совсем понимаю, ка это грамотно сделать.

2. Код планируется повторно использовать.

3. Есть нечто сложное, описываемое разнородными переменными и требуюшее для обработки несколько функций. Притом, это нечто может потребоваться в нескольких самостоятельных экземплярах.

Кстати, мне кажется, действительно интересный вопрос - с задачей о перемножении матриц. Как ее организовать с учетом инкапсуляции?
s-andriano вне форума Ответить с цитированием
Старый 28.05.2012, 22:42   #12
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Ну нафлудили, так нафлудили
s-andriano, тот человек любит кросспостить - http://programmersforum.ru/showthread.php?t=202837, может быть вам решение приглянется.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.05.2012, 23:14   #13
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Если у вас есть несколько потоков, то вы обязаны иметь удобный класс контроля этих обьектов.
Вовсе нет. Эта система называется монитор (тупо перебор элементов в цикле, цикл считается атомарной операцией, прерывания запрещены) и использовалась ранее. Да и счас перебор объектов в играх не редкость. Да и без потоков игры делали и ничего, получалось . Никто в данном случае ничего не обязан.

Цитата:
Можно инкапсулировать данные
Для этого достаточно процедур, функций и юнитов. Все остальные условия не являются необходимыми.

Цитата:
Код планируется повторно использовать.
О-о-о, откуда такой аргумент? Чем подтвержденный?

Цитата:
Есть нечто сложное, описываемое разнородными переменными и требуюшее для обработки несколько функций. Притом, это нечто может потребоваться в нескольких самостоятельных экземплярах.
Перевод на русский - ООП нужно там, где программист самостоятельно выбрал работу с ООП. Какие, блин, экземпляры? Уже если проводить сравнение, так сравнивать в тех категориях, где есть точки соприкосновения. То что Вы написали без конкретики укладывается в концепцию юнитов.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 28.05.2012 в 23:20.
Utkin вне форума Ответить с цитированием
Старый 28.05.2012, 23:42   #14
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Ну нафлудили, так нафлудили
s-andriano, тот человек любит кросспостить - http://programmersforum.ru/showthread.php?t=202837, может быть вам решение приглянется.
Собственно, именно этот пост и спровоцировал вопрос.
Увы, не приглянулось, т.к. напрочь отсутствует инкапсуляция.
Может, есть какие мысли, как ее достичь?
Или, может, этой задаче ООП принципиально противопоказан?

Инкапсуляция:
Цитата:
Сообщение от Utkin Посмотреть сообщение
Для этого достаточно процедур, функций и юнитов. Все остальные условия не являются необходимыми.
Как Вы предложите поступить в такой ситуации: некоторая сущность описывается несколькими массивами (для которых нужно выделять память), причем массивы - структур, а также некоторым набором простых переменных. Для доступа и обработки данных нужно несколько процедур. Данные должны быть инкапсулированы.

Последний раз редактировалось Stilet; 28.05.2012 в 23:45.
s-andriano вне форума Ответить с цитированием
Старый 29.05.2012, 00:04   #15
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
1. Можно инкапсулировать данные. Когда данные нельзя инкапсулирова, ООП мне представляется не очень логичным. Кстати, в одной из соседних тем обсуждает перемножение матриц на ООП. Честно говоря, не совсем понимаю, ка это грамотно сделать.
а что матрица не имеет доступа к своим же данным?
и данным такого же класса как она?
инкапсулировать нужно грамотно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.05.2012, 08:00   #16
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Как Вы предложите поступить в такой ситуации: некоторая сущность описывается несколькими массивами (для которых нужно выделять память), причем массивы - структур, а также некоторым набором простых переменных. Для доступа и обработки данных нужно несколько процедур. Данные должны быть инкапсулированы.
Конкретно в Дельфи через юнит можно попробовать. Не выносите объявления в interface. Вообще люди сильно накручены ООП, реально даже если будут видны массивы структур это не обязательно приведет к ошибкам.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 29.05.2012 в 08:16.
Utkin вне форума Ответить с цитированием
Старый 29.05.2012, 10:07   #17
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

На мой взгляд, использование ООП оправдано, когда критичность выполнения кода и размер программы не имеют решающего значения. По своей сути, все тормоза новых ОС из него и произрастают) И всё более и более жёсткие требования к железу... это примерно как при стрельбе из пушки - ядро не круглое, а овальное и, чтобы им выстрелить, берут пушку большего калибра, а не приводят ядро к нужному виду... (сравнение утрированное, если что...)
Но опять же, не все объекты одинаково бесполезны и неэффективны. В этом и состоит мастерство программиста - правильно разложить задачу, чтобы точно знать, где лучше использовать объекты, а где от них воздержаться...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 29.05.2012, 10:37   #18
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
По своей сути, все тормоза новых ОС из него и произрастают)
это миф.
а реальность в кривом проектировании.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.05.2012, 11:36   #19
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
а реальность в кривом проектировании.
А их вообще проектируют?
Цитата:
это миф.
Я наверное не совсем точно выразился) В той фразе я, по большей части, имел ввиду существующую систему наследования (применительно не только и не столько к объектам, а больше к элементам системы). С активным экстенсивным подходом к построению систем, боюсь, что даже их разработчики до конца не знают что и как работает во многих местах...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 29.05.2012, 11:38   #20
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Интересный вопрос, философский даже Зачем ООП? Чтобы абстрагировать разнородные логики в свои самодостаточные мини-системы. Когда есть сложные проект, в котором выполняется много чего и это все должно взаимодействовать, как-то трудно представляется решать такие проблемы с помощью процедурного программирования и глобальных переменных. Например, нужно написать многопоточный логгер событий, по сути метод с параметром строки. Как вы поступите? будете в приложение или юнит пихать переменную критической секции и инициализировать/финализировать ее в модуле? Еще несколько глобальных переменных имени файла, директории, чего-то еще... придумайте сами Да можно в общем-то... но зачем так некрасиво? Ведь класс-то сделать изящней и гибче.
Ладно, многие скажут, что здесь можно и без ООП. Согласен. А как вы будете организовывать взаимодействие того же логгера, несколько сотен потоков разного назначения, GUI и т.п.? Код будет похож на сишный
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не будет ли ошибкой использовать инвок для случаев, когда он не требуется? gramp C# (си шарп) 4 18.04.2012 20:41
Когда нужно присваивать.. Writeln(Sum:8:4) ? Erlotaza Общие вопросы Delphi 1 09.03.2012 11:25
Try, throw, catch; нужно ли знать ООП PHP для изучения исключений? alex455 PHP 1 01.08.2011 13:46
masm32 подменяет JZ на JE тогда, когда это совсем не нужно notHaker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 12.07.2011 17:57
сортировка, когда невозможно использовать свойства таблицы IndexFieldName Римма БД в Delphi 5 07.09.2007 10:56