Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/70: Рейтинг темы: голосов - 70, средняя оценка - 4.87
 Аватар для Chak-Nuris
2 / 2 / 1
Регистрация: 17.03.2015
Сообщений: 110

Зачем нужны объекты?

21.04.2015, 15:54. Показов 18124. Ответов 324
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Зачем нужны объекты?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.04.2015, 15:54
Ответы с готовыми решениями:

Зачем в начале файла utf-16 нужны байты 0XFF и 0XFE?
Друзья! Хоть убей не пойму, зачем перед строкой нужны байты 0xFF 0xFE. Везде можно прочесть, что они нужны, чтобы указать считывающему...

Зачем нужны хеш таблицы?
Подскажите, пожалуйста, зачем нужны хеш таблицы? Я так подозреваю, что они могут помочь найти образец в тексте, но тогда как их построить,...

Зачем нужны блок-схемы?
Приходилось слышать мнение, что блок-схемы строятся по программному коду для каких-либо целей, например, объяснения алгоритма работы...

324
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
24.04.2015, 22:58
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А если научатся лечить - то с профессией программиста будет покончено, как с профессией водителя лифта.
Нет уж "Физика понимает только своего хозяина" и не станет слушаться ни журналиста, ни врача, ни кого-либо еще.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
24.04.2015, 22:58
Цитата Сообщение от castorsky Посмотреть сообщение
кстати покажите как Вы видите реализацию заданного выше автомата с помощью ООП. Продемонстрируйте, так сказать.
Я что то не вижу задачи которую должен реализовываь этот автомат. Если мне нужен то или иной автомат (обычно для парсинга чего либо) - беру и делаю, и никаких проблем.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
24.04.2015, 22:59
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Я что то не вижу задачи которую должен реализовываь этот автомат.
Автомат задан графом. Этого мало?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
24.04.2015, 23:11
Цитата Сообщение от castorsky Посмотреть сообщение
Автомат задан графом. Этого мало?
Я не поклонник кодинга ради кодинга.

Добавлено через 5 минут
Опять же - на графе отсутствуют условия выбора ветки перехода.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
24.04.2015, 23:18
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Я не поклонник кодинга ради кодинга.
Внезапно, Вы поклонник объектов ради объектов.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
25.04.2015, 06:13
Цитата Сообщение от castorsky Посмотреть сообщение
Внезапно, Вы поклонник объектов ради объектов.
Ну как вам сказать... есть у меня к примеру лист бумаги (ну или его скан) с нарисованными на нем деталями, в которых нету центров окружностей. Пишу чуток кода и держу в руках лист с размеченными центрами. Ну в принципе с учетом того что отпечатанный лист - это объект (физический) - да таки кодинга ради объектов.

Добавлено через 32 минуты
Цитата Сообщение от castorsky Посмотреть сообщение
Нет уж "Физика понимает только своего хозяина" и не станет слушаться ни журналиста, ни врача, ни кого-либо еще.
Этой "физике" хозяин уже вообще не понадобится. Она и сама с усами и слушаться будет только сама себя.(смотрим "Терминатор", "Матрица", и т.п.)

Добавлено через 6 часов 13 минут
Цитата Сообщение от korvin_ Посмотреть сообщение
например, — это побочный эффект.
C++
1
2
* * cout << c.count(); // побочный эффект - счётчик увеличен
* * cout << c.count(); // результат отличается от предыдущего вызова c.count();
C++
1
2
3
4
int Value=0;
int Count(int &Value){ return ++Value;};
cout<<Count(Value);
cout<<Count(Value);
А здесь побочный эффект есть?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
25.04.2015, 16:05
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А здесь побочный эффект есть?
Конечно.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
25.04.2015, 16:12
Цитата Сообщение от korvin_ Посмотреть сообщение
Конечно.
Но ведь значение функции зависит исключительно от передаваемых ей аргументов
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
25.04.2015, 17:56
По сабжу:

Объекты бывают разными.

Числа или строки - это тоже объекты - экземпляры некого "класса" (в широком смысле). Этот класс содержит список операций, которые можно выполнить с объектами данного типа. Обычно это операторы. Благодаря операторам 1 + 2 = 3, а "1" + "2" = "12".

Поэтому в ФП активно используются объекты.
Более того, наверняка, тип string хранит не только массив символов но и информацию о состоянии (количество переменных, ссылающихся на данный массив) - для оптимизации операций присваивания, копирования и т.п.
Точно так же длинное число будет хранить информацию не только о размере, но и о том, сколько памяти выделено - для оптимизации операции увеличения размера.
А хвостовую рекурсию будут разворачивать в цикл... А в алгоритмах активно используется меморизация... И так далее.

То есть, функциональные языки программирования - это не те, которые не используют объекты и состояния, а те, в которых их использование изолировано от остального кода.

С другой стороны, современные тенденции в ООП языках - отказ от использования "умных" объектов, объединяющих данные и методы (например, как в шаблоне АктивРекорд).
Современные "объекты" обычно содержат либо только данные, либо только код (плюс инициализация).
Например, гипотетический класс Product содержит только данные, а класс ProductService содержит только методы для работы с Product. В классе ProductService есть поле типа IProductRepository, но по сути это не данные, а указание на то, какой код (методы) использовать для сохранения информации о Product в хранилище.

Кроме того, в синтаксис ООП языков добавляется всё полезное из ФП языков (лямбда выражения, ключевые слова async и т.п.)


То есть, каждый из подходов имеет свои плюсы и минусы. И современные языки и шаблоны развиваются в сторону сближения. Каждый из подходов стремится вобрать в себя как можно больше лучшего из противоположного подхода.
1
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
25.04.2015, 18:37
Shamil1, Ваша ошибка заключается в том, что я тут неоднократно объяснял. Нет формализации. Из-за чего каждый имеет право на вольную трактовку терминов. Вы с чего начинаете свои рассуждения?
Цитата Сообщение от Shamil1 Посмотреть сообщение
Объекты бывают разными.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Числа или строки - это тоже объекты
Этот фундамент формирует всё остальное сказанное Вами дальше. Ошибка? Для меня очевидная. В том же ключе я продолжу: материя - объект, мысли - объект, и т.д. Если же мы спустимся на землю, то увидим что string - это тип. Реализация объектов любого типа нас не вонует. Главное что мы делали и делаем это без всяких там ООП (замыкания с лямдами уже тут обсуждались).
P.S. у образованного человека от выражений "a" + "b" == "ab" или 1 / 2 == 0 волосы дыбом встанут. В порядке флейма.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
25.04.2015, 19:12
В чём именно ошибка?
string - это тип, а экземляр типа string - это объект
поэтому числа (например, число 17) и строки (нарпимер, строка "adf") являются объектами
если Вы не согласны, то дайте ссылку на определение, согласно которому это не так

объекты бывают разными - по назначению и использованию
и дальше я развиваю эту мысль - показываю (пытаюсь показать?) как именно могут различаться объекты (примеры: числа, POCO, "ActiveRecord",...)
что тут не правильно?

Цитата Сообщение от castorsky Посмотреть сообщение
Реализация объектов любого типа нас не вонует.
Тогда я легко превращу любой ООП в ФП. Просто вместо
C#
1
product.Name = "some name";
буду писать
C#
1
product = SetName(product, "some name");
ну а реализация типа Product нас не волнует
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.04.2015, 19:19
Цитата Сообщение от castorsky Посмотреть сообщение
Ваша ошибка заключается в том, что я тут неоднократно объяснял. Нет формализации.
Ваша, - в том что сравниваете абстракции разного уровня. Модель кирпича есть, а общей модели дома нету. Хотя можно создать кирпич не только размером с дом, но и со всеми его деталями. Стоимость и сроки будут неприемлемы, но это конечно будет более прочная штука, если дом из цельного камня сработать. Вспоминается ситуация с Безенчуком и фирмой "Нимфа".
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
25.04.2015, 19:33
Цитата Сообщение от Shamil1 Посмотреть сообщение
если Вы не согласны, то дайте ссылку на определение, согласно которому это не так
Нет уж. Сначала с Вас ссылка на формальное описание сущности "объект" в рамках ЯВУ.

Добавлено через 4 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
Ваша, - в том что сравниваете абстракции разного уровня.
Я-то не сравниваю. Для меня всё четко определено - разговор ведется об "объектах в терминах ООП". А мне навязывают разговор об объектах как обощенной абстракции. Я еще раз повторю: материя - объект, абстракция - объект, _всё_что_угодно_ - объект чего-либо.

Добавлено через 2 минуты
Цитата Сообщение от Shamil1 Посмотреть сообщение
Тогда я легко превращу любой ООП в ФП.
Ну я и на си могу писать функционально. К теме это не имеет отношения.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.04.2015, 19:38
Цитата Сообщение от castorsky Посмотреть сообщение
Для меня всё четко определено - разговор ведется об "объектах в терминах ООП"
Ведётся кем? Где в ООП противоставляются или сравниваются свободные функции и пользовательские типы?
Shamil1, абсолютно верно спрашивает о строках.

Добавлено через 3 минуты
Цитата Сообщение от castorsky Посмотреть сообщение
_всё_что_угодно_ - объект чего-либо
С точки зрения всеобщего абсурда, - да.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
25.04.2015, 19:40
Цитата Сообщение от IGPIGP Посмотреть сообщение
абсолютно верно спрашивает о строках.
Ни капельки не верно. Он говорит о реализации, о том, что недоступно программисту. О тех объектах, доступа к которым у нас нет и которые создаем не мы, а вм/компилятор/интерпретатор. А значит их их самих для нас нет. Я же с самого начала веду разговор об тех объектах, которые инстанцируются как экземпляры нами и нами же управляются предоставляя полный доступ.

Добавлено через 30 секунд
Цитата Сообщение от IGPIGP Посмотреть сообщение
С точки зрения всеобщего абсурда, - да.
Ну так не надо мне навязывать эту точку зрения, ага?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.04.2015, 19:45
Цитата Сообщение от castorsky Посмотреть сообщение
которые создаем не мы, а вм/компилятор/интерпретатор.
Канонизация компмлятора столь же плодотворна как и демонизация пользовательских типов. Встроенные типы вроде строк, это веление логики взаимодействия человека и вычислительной системы. В микроассемблере конкретного процессора может не быть ничего похожего и это очень быстро работает, но писать трудно.
ОПП это развитие логики разделения и управления. Так говорили римляне и были правы пока не разделились сами в себе.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
25.04.2015, 19:47
Цитата Сообщение от IGPIGP Посмотреть сообщение
ОПП это развитие логики разделения и управления
религиозный клич
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.04.2015, 19:53
Цитата Сообщение от castorsky Посмотреть сообщение
Ну так не надо мне навязывать эту точку зрения, ага?
Правильно! Но почему же не следуете? Ведь по логике абсурда которую вы используете:
Цитата Сообщение от castorsky Посмотреть сообщение
_всё_что_угодно_ - объект чего-либо
Белочка с орешком в зубках и какашечкой в попке это объект. Включая ветку на которой она сидит и дерево и...
Я, кстати, считаю, что если человек пишет не для того чтобы даже самому потом читать, имеет право делать что угодно. Или времени мало, а результат выше любой цены... Даже такое белочкореходрево впринципе имеет право на жизнь.
Но общей теории формализации нет и это не просто нормально. Это хорошо.

Добавлено через 1 минуту
Цитата Сообщение от castorsky Посмотреть сообщение
религиозный клич
Это уши у вас не отрегулированы, - там нет ничего громкого.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
25.04.2015, 20:06
Цитата Сообщение от IGPIGP Посмотреть сообщение
Ведь по логике абсурда которую вы используете
Так это не я использую, а Вы и Shamil1.

Добавлено через 1 минуту
Цитата Сообщение от IGPIGP Посмотреть сообщение
там нет ничего громкого
В отличие от Вас я оперирую доказательствами, а Вы лозунгами.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
25.04.2015, 20:18
Я использую определение из вики:
Объект в программировании — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними (методов). Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые определяют поведение (являются моделью) объекта. Термины «экземпляр класса» и «объект» взаимозаменяемы.

Поэтому для меня конкретная строка - экземпляр класса/типа string - это объект.
И с этой точки зрения я не вижу принципиальной теоретической разницы между ФП-функцией, возвращающий тупл из двух интов, и ООП-методом, возвращающим экземпляр класса поинт. При этом на практике второй способ обладает кучей достоинств: наглядней, удобней, легче понять и сопровождать. Не смотря на то, что тупл - встроенный класс, а поинт - самописный.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2015, 20:18

Что такое классы и зачем они нужны?
Здравствуйте! Объясните ,что такое классы и зачем они нужны? Я прочитал кучу всего про классы, но так и не понял, зачем они нужны.

Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить?
Вот еще один вопрос зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может...

Зачем упаковывать структуры и объекты в интерфейсы?
Объясните пожалуйста кто-нибудь человеческим языком зачем упаковывать структуры и объекты в интерфейсы?

Зачем нужны классы?
Изучаю СИ++ после изучения СИ. Не пойму какой смысл в классах. То что они делают можно реализовать с помощью функций, структур и обычных...

Зачем нужны исключения
Пожалуйста можете привести пример, когда они действительно нужны? На лекции были примеры &quot;деление на ноль&quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru