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

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

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

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

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

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

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

324
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
28.04.2015, 21:45
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от castorsky Посмотреть сообщение
А нормальные люди по модулям =)
Сначала по классам (или процедурам), а потом по модулям.

Цитата Сообщение от castorsky Посмотреть сообщение
ОО в равной степени подходит для больших проектов как и ФП или ИП
Только тогда почему-то никто об этом не догадался. Если бы ФП и ПП удовлетворяли текущие потребности, то вряд ли стали придумывать ООП. (ООП - это одна из разновидностей ИП, поэтому нет смысла их противопоставлять.)
Использование функциональных ЯП для рисования интерфейса или для работы с БД для Вас не выглядит странным?

Цитата Сообщение от castorsky Посмотреть сообщение
1. было и есть без ООП
2. наследование или интерфейсы? Вот в чем вопрос. Что в чем и что исправляет?
3. прекрасно работает в ФП, легко налаживается в ИП.
Какое имеет значение, было это до ООП или нет? Речь идёт о том, как модульность сочетается с ООП. О других языках речь не идёт.
В контексте модульности - интерфейсы. Класс, реализующий некий интерфейс - это простейший вариант модуля. И он легко встраивается в систему, даже не знающую о существовании этого класса.

Цитата Сообщение от castorsky Посмотреть сообщение
win
Строгие математические определения нужны в математических дисциплинах (например, в теории алгоритмов). А при описании ЯП можно обойтись без них.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
28.04.2015, 22:06
Цитата Сообщение от Shamil1 Посмотреть сообщение
Сначала по классам (или процедурам), а потом по модулям.
А куда деть namespaces, наследование? Не вяжется с модулями.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Только тогда почему-то никто об этом не догадался.
Хотите бугурт? Тыц
Цитата Сообщение от Shamil1 Посмотреть сообщение
Если бы ФП и ПП удовлетворяли текущие потребности, то вряд ли стали придумывать ООП.
Почему это? А карьерный рост? А обправдание потраченного бюджета? А пыль в глаза, в конце концов? Главное убедить совет директоров, а они уже отдел маркетинга нахлобучат как положено.
Цитата Сообщение от Shamil1 Посмотреть сообщение
ООП - это одна из разновидностей ИП, поэтому нет смысла их противопоставлять
Есть смысл. Современные языки (как Вы сначала упомянули) имют тенденцию к совмещению ООП и ФП, как можно более избавляясь от ИП.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Какое имеет значение, было это до ООП или нет? Речь идёт о том, как модульность сочетается с ООП. О других языках речь не идёт.
Модульность какбэ никак не сочетается с ООП.
Цитата Сообщение от Shamil1 Посмотреть сообщение
В контексте модульности - интерфейсы.
Понимаете ли, модуль - независимая, самостоятельная единица компиляции и точка. Нет модульности в ООП. И не было никогда, и не будет по той причине что ООП - это свои единицы компиляции. В них нет ни порядка, ни точного стандарта, да и самих модулей в ООП нет и не упоминается.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Строгие математические определения нужны в математических дисциплинах (например, в теории алгоритмов). А при описании ЯП можно обойтись без них.
Так почему бы нам не описывать свои ЯП пейзажами, например?
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
28.04.2015, 23:03
Цитата Сообщение от castorsky Посмотреть сообщение
А куда деть namespaces, наследование? Не вяжется с модулями.
Чем namespaces мешают? Никто Вас не заставляет наследовать от модулей. Кривыми руками можно любую идею загубить. Аргумент из серии "не могу писать на Си, потому что там память не освобождается".

Цитата Сообщение от castorsky Посмотреть сообщение
Хотите бугурт? Тыц
Прочитал первые несколько страниц.
1. ООП там рассматривается на примере С++, который не является чистым ОО языком и сильно страдает от поддержки совместимости с Си.
2. Производительность измеряется в строчках кода. Ага. Тогда копи-паст - самый продуктивный метод повторного использования кода.
3. Статья начинается со слов, что другие исследователи получили совсем другие результаты, но автор статьи с ними не согласен. Так что это всего лишь один из взглядов.

Цитата Сообщение от castorsky Посмотреть сообщение
Модульность какбэ никак не сочетается с ООП.
Я уже привёл Вам объяснение, как сочетается. Но можете взглянуть, например, на учебные проекты типа Prism.

Нет модульности в ООП. И не было никогда, и не будет по той причине что ООП - это свои единицы компиляции.
По Вашей логике, если бы в Хаскеле модули назвали "кводулями", то Хаскель не поддерживал бы модульность.
И что это за единый для всех модульных языков стандарт модуля, о котором Вы говорите?

Цитата Сообщение от castorsky Посмотреть сообщение
Так почему бы нам не описывать свои ЯП пейзажами, например?
Пейзажи не подходят для этих целей. А вот термины "объект", "класс", "прототип", "наследование" и т.д. - замечательно подходят.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
28.04.2015, 23:49
Цитата Сообщение от Shamil1 Посмотреть сообщение
Аргумент из серии "не могу писать на Си, потому что там память не освобождается".
Аргумент железобетонный. Потому что
Цитата Сообщение от castorsky Посмотреть сообщение
Понимаете ли, модуль - независимая, самостоятельная единица компиляции и точка.
А пространство имен тоже единица компиляции. Взаимоисключающие параграфы.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Прочитал первые несколько страниц.
1. ООП там рассматривается на примере С++, который не является чистым ОО языком и сильно страдает от поддержки совместимости с Си.
2. Производительность измеряется в строчках кода. Ага. Тогда копи-паст - самый продуктивный метод повторного использования кода.
3. Статья начинается со слов, что другие исследователи получили совсем другие результаты, но автор статьи с ними не согласен. Так что это всего лишь один из взглядов.
1. несовершенство с++ не делает его не ООЯП.
2. Речь не о производительности программы, а о производительности труда программиста.
3. Ну не нра эта статья, почитайте чтоли статьи Степанова (автор крестовых шаблонов).
Цитата Сообщение от Shamil1 Посмотреть сообщение
Я уже привёл Вам объяснение, как сочетается.
Я уже опровергнул как бы. Не понимаете? Модуль - независимая самостоятельная единица компиляции. ООП противоречит этому some1.foo(), some2.foo(). Когда модульность в купе с полиморфизмом позволит написать foo(some1), foo(some2). Разницу чувствуете?
Цитата Сообщение от Shamil1 Посмотреть сообщение
По Вашей логике, если бы в Хаскеле модули назвали "кводулями", то Хаскель не поддерживал бы модульность.
В haskell модули и так называются иначе - пакеты =)) и он (haskell) поддерживает модульность.
Цитата Сообщение от Shamil1 Посмотреть сообщение
И что это за единый для всех модульных языков стандарт модуля, о котором Вы говорите?
algol68 какбэ. Оттуда корни растут.
Цитата Сообщение от Shamil1 Посмотреть сообщение
А вот термины "объект", "класс", "прототип", "наследование" и т.д. - замечательно подходят.
Ничем не отличается от "протрет", "пейзаж", "натюрморт", "фото".
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
29.04.2015, 00:44
Цитата Сообщение от castorsky Посмотреть сообщение
ООП противоречит этому some1.foo(), some2.foo(). Когда модульность в купе с полиморфизмом позволит написать foo(some1), foo(some2). Разницу чувствуете?
Нет. Объясните, пожалуйста.

Цитата Сообщение от castorsky Посмотреть сообщение
Речь не о производительности программы, а о производительности труда программиста
Я понял. Именно поэтому привёл пример с копи-пастом. Представляете, какой производительности может добиться программист, активно использующий копи-паст .

Цитата Сообщение от castorsky Посмотреть сообщение
В haskell модули и так называются иначе - пакеты =)) и он (haskell) поддерживает модульность.
Поддерживает "пакетность", а модульность не поддерживает.

Цитата Сообщение от castorsky Посмотреть сообщение
algol68 какбэ.
Не нашёл в гугле такого стандарта модуля. Поэтому даже не могу его сравнить с другими языками. Например, с Си.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
29.04.2015, 01:03
Цитата Сообщение от Shamil1 Посмотреть сообщение
Нет. Объясните, пожалуйста.
одна функция для схожих типов, или схожие объекты каждый со своим методом?
Цитата Сообщение от Shamil1 Посмотреть сообщение
Представляете, какой производительности может добиться программист, активно использующий копи-паст
Невероятной. Или, например,
C
1
#include <hofuncs.h>
Цитата Сообщение от Shamil1 Посмотреть сообщение
Поддерживает "пакетность", а модульность не поддерживает.
Не согласен.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Не нашёл в гугле такого стандарта модуля. Поэтому даже не могу его сравнить с другими языками. Например, с Си
foo.c
C
1
2
3
int foo(void) {
  return 1;
}

bar.c
C
1
2
3
4
int foo(void);
int bar(void) {
  return foo() + 2;
}

два независимых модуля, способны компилироваться раздельно в объектные файлы.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
29.04.2015, 11:38
Цитата Сообщение от castorsky Посмотреть сообщение
одна функция для схожих типов, или схожие объекты каждый со своим методом?
В C# можно сделать одну функцию для схожих типов. Только схожесть должна быть документально подтверждена .
Какое это имеет отношение к модульности?
Можно ли в Хаскеле и в Си скомпилировать шаблонную функцию? Чтобы выделить её в отдельный модуль.

Цитата Сообщение от castorsky Посмотреть сообщение
два независимых модуля, способны компилироваться раздельно в объектные файлы.
Вам шашечки или ехать? (если шашечки, то пакетность от модульности отличается )
Можно такое сделать, только код будет немного отличаться. (нужен код или верите на слово? только в C# не пакетные файлы, а сборки)
А если кто-то принесёт новый модуль с другой версией bar(), то модуль с foo() можно переключить на его использование - и даже пересобирать его не потребуется.
В Си/Хаскель, полагаю, такое тоже возможно?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.05.2015, 19:33
Цитата Сообщение от Shamil1 Посмотреть сообщение
Представляете, какой производительности может добиться программист, активно использующий копи-паст
Дык все копипастом и занимаются. Только одни сами копипастят, а другие заставляют копипастить компилятор.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
01.05.2015, 19:45
хм, я уже и забыл за этот батл.
Цитата Сообщение от Shamil1 Посмотреть сообщение
В C# можно сделать одну функцию для схожих типов
Я рад занего.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Какое это имеет отношение к модульности?
такое что в данном случае модуль foo один (и экспортирует одну функцию foo), а методов для каждого объекта разных классов - 2. Я понимаю что это решается наследованием или шаблонами, например. Но это так уныло, и раздувает код до невозможности. Нормальное решение - ФВП.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Можно ли в Хаскеле и в Си скомпилировать шаблонную функцию? Чтобы выделить её в отдельный модуль.
https://downloads.haskell.org/... skell.html
касательно языка Си - Вы его, очевидно, не знаете раз такую ерунду пишете. Это "почти ассемблер".
Цитата Сообщение от Shamil1 Посмотреть сообщение
Вам шашечки или ехать? (если шашечки, то пакетность от модульности отличается )
Модульность в сях довольно условная. Но этот язык не претендует на высокий уровень.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Можно такое сделать, только код будет немного отличаться. (нужен код или верите на слово? только в C# не пакетные файлы, а сборки)
Я не говорил что что-то невозможно. Я вот что ООП не нужно - это да.
Цитата Сообщение от Shamil1 Посмотреть сообщение
А если кто-то принесёт новый модуль с другой версией bar(), то модуль с foo() можно переключить на его использование - и даже пересобирать его не потребуется.
Это как бы преимущества не ООП, а дотнет платформы.
Цитата Сообщение от Shamil1 Посмотреть сообщение
В Си/Хаскель, полагаю, такое тоже возможно?
Вы понимаете как исходник компилируется в нативный объектный файл? Если да, то зачем такие вопросы?
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
01.05.2015, 20:43
за этот батл.
Забавно Вы это воспринимаете.

Цитата Сообщение от castorsky Посмотреть сообщение
такое что в данном случае модуль foo один (и экспортирует одну функцию foo), а методов для каждого объекта разных классов - 2.
О чём Вы? У меня создаётся впечатление, что Вы забыли, что в ООП методы могут принимать аргументы.

Цитата Сообщение от castorsky Посмотреть сообщение
https://downloads.haskell.org/~ghc/7...e-haskell.html
касательно языка Си - Вы его, очевидно, не знаете раз такую ерунду пишете. Это "почти ассемблер".
Просто ответить "да" или "нет" Вы не можете?
Читать статью про ненужный мне язык ради ответа на один простой вопрос у меня нет желания...

Цитата Сообщение от castorsky Посмотреть сообщение
Я не говорил что что-то невозможно. Я вот что ООП не нужно - это да.
Нет. Вы именно говорили, что невозможно. Ваши слова были примерно такие: "Если есть объекты, то про модульность можно забыть." Да и потом Вы продолжали писать, что ОО языки не поддерживают модульность.

Цитата Сообщение от castorsky Посмотреть сообщение
Вы понимаете как исходник компилируется в нативный объектный файл? Если да, то зачем такие вопросы?
Вам так нравится отвечать вопросом на вопрос? Просто ответить - да или нет - Вы не можете?
0
01.05.2015, 21:11

Не по теме:

Цитата Сообщение от Shamil1 Посмотреть сообщение
Цитата Сообщение от castorsky Посмотреть сообщение
за этот батл
Забавно Вы это воспринимаете.
Ничего особенного (это нормально) - просто спятивший и выживший из ума лиспер-пенсионер. :D

0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
01.05.2015, 23:09
Цитата Сообщение от Shamil1 Посмотреть сообщение
Забавно Вы это воспринимаете
Или юмор неудачный, или Вы его не поняли. Вероятно первое.
Цитата Сообщение от Shamil1 Посмотреть сообщение
О чём Вы? У меня создаётся впечатление, что Вы забыли, что в ООП методы могут принимать аргументы
эмм, зачем тогда методам быть частью "объекта"?
Цитата Сообщение от Shamil1 Посмотреть сообщение
Нет. Вы именно говорили, что невозможно
Это не мои слова (в смысле авторства). М.б. это тоже Я сказал? "Object-oriented programming is an exceptionally bad idea which could only have originated in California."
Цитата Сообщение от Shamil1 Посмотреть сообщение
Да и потом Вы продолжали писать, что ОО языки не поддерживают модульность.
ОО как бы "втягивает" в себя модульность.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Просто ответить "да" или "нет" Вы не можете?
Цитата Сообщение от Shamil1 Посмотреть сообщение
Просто ответить - да или нет - Вы не можете?
Не люблю быть кэпом /кэп

Добавлено через 1 минуту

Не по теме:

Dennis Ritchie, ты уже ухаживал за девочками? Отвлекись от компьютера, сход на танцы.

0
01.05.2015, 23:24

Не по теме:

castorsky, мою девочку зовут D. :D

0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
02.05.2015, 00:31
Цитата Сообщение от castorsky Посмотреть сообщение
эмм, зачем тогда методам быть частью "объекта"?
Это один из возможных способов организации кода. Причём, вполне удобный.
Кликните здесь для просмотра всего текста

Например:
Несколько взаимосвязанных методов, определяющих стратегию выполнения некой задачи, собраны в одном объекте. Я могу целиком поменять стратегию одним присваиванием.

Или другой пример:
У меня есть шаблонный метод решения некой задачи. А в каждой конкретной ситуации есть небольшие отличия. Я выделяю неоднозначные моменты в виртуальные методы, и наследники могут переопределять их.

Ещё пример:
Я собираю методы по работе с неким ресурсом в одном классе. При этом, получение ресурса происходит при инициализации экземпляра, а освобождение - при уничтожении. Получаем 100% гарантию, что я не забуду освободить ресурс.

И так далее. Очень много ситуаций, когда это полезно.


Цитата Сообщение от castorsky Посмотреть сообщение
Это не мои слова (в смысле авторства).
Удобная штука интернет - можно легко найти единомышленников при любой точке зрения.

Цитата Сообщение от castorsky Посмотреть сообщение
Не люблю быть кэпом
Если Вам что-то очевидно, то это не обязательно общеизвестно. Я вот, например, практически ничего не знаю про Хаскель. Но, видимо, ответ "нет, в хаскель/си этого нельзя сделать"?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
02.05.2015, 01:01
Цитата Сообщение от Shamil1 Посмотреть сообщение
Это один из возможных способов организации кода. Причём, вполне удобный.
Он удобен ровно до того момента когда проект вмещается в 2-4k строк.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Если Вам что-то очевидно, то это не обязательно общеизвестно
ok
Цитата Сообщение от Shamil1 Посмотреть сообщение
Можно ли в Хаскеле и в Си скомпилировать шаблонную функцию?
Во-первых я специально упоминал что си это "почти ассемблер". Кроме примитивных макроподстановок никаких абстракций нет. Во-вторых - это общеизвестно. Или Вы не понимаете сути шаблона. Они подобны лисп макросам - раскрываются во время компиляции ("а другие заставляют копипастить компилятор"). Сами по себе шаблоны не нужны, они приобретают полезную нагрузку с того момента когда вызов, создание экземпляра класса (общими словами: прямое упоминание) встречается в исходном тексте программы. Поэтому вопрос: "можно ли скомпилировать шаблонную функцию?" лишен смысловой нагрузки. Это не нужно.
Цитата Сообщение от Shamil1 Посмотреть сообщение
В Си/Хаскель, полагаю, такое тоже возможно?
Очевидно же. Конечно да. А вопрос возник из незнания что такое объектный файл.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
02.05.2015, 02:00
Цитата Сообщение от castorsky Посмотреть сообщение
Поэтому вопрос: "можно ли скомпилировать шаблонную функцию?" лишен смысловой нагрузки. Это не нужно.
А потом сишники жалуются на слишком долгую компиляцию... Написал 100 строк, а компилируешь 10к строк. И возможность компилировать только то, что написал, им не нужна.


Цитата Сообщение от castorsky Посмотреть сообщение
Он удобен ровно до того момента когда проект вмещается в 2-4k строк.
То есть, Вы считаете, что в проектах на 1к строк автоматическое освобождение ресурса - это удобно, а в проектах на 5к строк - уже неудобно?

Добавлено через 12 минут
Цитата Сообщение от castorsky Посмотреть сообщение
Очевидно же. Конечно да. А вопрос возник из незнания что такое объектный файл.
А если модуль по сути должен реализовывать шаблонный интерфейс?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
02.05.2015, 17:09
Цитата Сообщение от Shamil1 Посмотреть сообщение
То есть, Вы считаете, что в проектах на 1к строк автоматическое освобождение ресурса - это удобно, а в проектах на 5к строк - уже неудобно?
Как бы RAII есть практически только в С++. В подавляющем большинстве других языков «с поддержкой ООП» используется сборщик мусора и специальные синтаксические конструкции для имитации RAII-подобного кода. К ООП это всё, конечно же, не имеет никакого отношения.

Добавлено через 3 минуты
Цитата Сообщение от Shamil1 Посмотреть сообщение
А если модуль по сути должен реализовывать шаблонный интерфейс?
То что? Какие-то особенности с компилированием шаблонов есть только в C++. Впрочем и сами шаблоны есть тоже только в C++, AFAIK.
И, казалось бы, при чём тут ООП?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
02.05.2015, 17:52
Цитата Сообщение от Shamil1 Посмотреть сообщение
А потом сишники жалуются на слишком долгую компиляцию... Написал 100 строк, а компилируешь 10к строк. И возможность компилировать только то, что написал, им не нужна.
Никогда такого не слышал. Плюсисты, да, жалуются (м.б. потому что объекты? хаха). В сях нет никаких шаблонов и абстракций вообще нет. Только pure lang & shared objects.
Цитата Сообщение от Shamil1 Посмотреть сообщение
То есть, Вы считаете, что в проектах на 1к строк автоматическое освобождение ресурса - это удобно, а в проектах на 5к строк - уже неудобно?
Я вообще не могу понять с какой стороны тут оказалось raii. Я говорил о том что Вы называете "организация кода". Организовывать исходные тексты такм образом удобно ровно до какой-то черты. Лично Вы сколько уровней наследования способны запоминать? А теперь то же только для 4 классов нижнего уровня с учетом ромбовидности?
Цитата Сообщение от Shamil1 Посмотреть сообщение
А если модуль по сути должен реализовывать шаблонный интерфейс?
А этот вопрос уже от незнания что такое модульность. В общем - сплошное незнание.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
03.05.2015, 04:10
Цитата Сообщение от castorsky Посмотреть сообщение
Я вообще не могу понять с какой стороны тут оказалось raii.
Вы спросили "зачем методам быть частью объекта". Это один из примеров.
Поняли теперь, зачем методам быть частью объекта? А то Вы как-то резко на другую тему перешли, что мне не ясно, поняли Вы или нет.
(Похоже, Вы изучали ООП давно и до сих пор представляете его в виде шаблонов типа ActiveRecord. Я ещё в своём первом сообщении в данной теме написал, что подобные шаблоны устарели, и что для хранения/передачи данных используют классы без методов)

Цитата Сообщение от castorsky Посмотреть сообщение
Я говорил о том что Вы называете "организация кода".
В последних сообщениях Вы просто цепляетесь за слова. Выбираете в моём ответе слова, выдёргиваете их из контекста и придумываете комментарий.

Цитата Сообщение от castorsky Посмотреть сообщение
Лично Вы сколько уровней наследования способны запоминать?
То количество уровней, которое мне требуется, я запоминаю без труда.
В тех примерах, которые я Вам привёл - один уровень наследования.

Цитата Сообщение от castorsky Посмотреть сообщение
А теперь то же только для 4 классов нижнего уровня с учетом ромбовидности?
Этот вопрос Вам лучше задать тем, кто использует множественное наследование.

Цитата Сообщение от castorsky Посмотреть сообщение
А этот вопрос уже от незнания что такое модульность. В общем - сплошное незнание.
В данном случае незнание - у Вас. Если Вы никогда не использовали модули, реализующие интерфейс с параметром типа, то это не означает, что их не бывает.

Пример:
Есть модуль для сохранения данных в постоянном хранилище. Интерфейс: insert/update/delete/get/list. Гораздо удобнее сделать интерфейс с параметром типа и реализовать его в виде класса Repository<T> реализуещего методы insert<T>(T item) и т.д. Если есть сущности, для которых сохранение отличается, то мы создадим для них специальные классы, пронаследовав их от Repository<T>.

Добавлено через 11 минут
Цитата Сообщение от korvin_ Посмотреть сообщение
И, казалось бы, при чём тут ООП?
Вы видимо не следили за нашей дискуссией, поэтому поясню.
castorsky, писал, что в ООП нельзя сделать "одну функцию для схожих типов", а можно только "схожие объекты каждый со своим методом". И, якобы, по этой причине ООП не совместимо с модульностью.

Цитата Сообщение от korvin_ Посмотреть сообщение
Как бы RAII есть практически только в С++. В подавляющем большинстве других языков «с поддержкой ООП» используется сборщик мусора и специальные синтаксические конструкции для имитации RAII-подобного кода. К ООП это всё, конечно же, не имеет никакого отношения.
Кроме памяти есть ещё и другие ресурсы. Например, файлы, подключения к БД и так далее.
Это один из паттернов ООП, поэтому к ООП имеет самое прямое отношение.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
03.05.2015, 08:08
Цитата Сообщение от Shamil1 Посмотреть сообщение
Кроме памяти есть ещё и другие ресурсы. Например, файлы, подключения к БД и так далее.
Это не важно, RAII в C++ работает исключительно из-за обязательного вызова деструктора, в котором ресурс освобождается. В языках с GC нет деструкторов и соответственно освободить ресурс таким образом не получится.

Цитата Сообщение от Shamil1 Посмотреть сообщение
Это один из паттернов ООП, поэтому к ООП имеет самое прямое отношение.
Это плюсовый паттерн, а не ООПшный.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2015, 08:08

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
300
Ответ Создать тему
Новые блоги и статьи
Скрипты 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