208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
1 | |
Полный ооп18.09.2022, 01:57. Показов 4963. Ответов 60
Приветствуется ли в плюсах полностью ооп проект? По аналогии с джавой, как сказал один джавист - функций нельзя сделать вообще, можно сделать похожее только через класс с одним методом.
Так вот собственно и вопрос - ооп круто, но стоит ли полностью на ооп делать проект? В данный момент, в рамках одного моего проекта - так сделать можно, но будут классы без данных, чисто методы и всё, по смыслу разбитые на классы
0
|
18.09.2022, 01:57 | |
Ответы с готовыми решениями:
60
ООП. Переделать фрагмент программы под ООП Где лучше учить ООП PHP ? И зачем нужен ООП Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП ООП ради ООП |
4866 / 2664 / 914
Регистрация: 29.11.2010
Сообщений: 5,746
|
|
18.09.2022, 02:16 | 2 |
Вообще желательно использовать как можно меньше методологий.
Фигачите в ООП -- фигачте в ООП. Фигачите функциональщину -- фигачте функциональщину. Начинаете смешивать -- начинается бардак. Поэтому в яве, например, функциональщина выглядит как сова на глобусе. Добавлено через 1 минуту Да пожалуйста. Чистота кода мало зависит от методологии. Как оценить "стоит/не стоит": выпишете все плюсы и минусы, сравните, что больше подходит в вашей ситуации.
1
|
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.09.2022, 02:17 [ТС] | 3 |
Даже если есть функция, которая никак не граничит со всеми имеющимися и получится класс с одним методом - всё равно делать класс, если решено использовать ооп? А как же тогда библиотеки, в которых и классы и функции?
0
|
4866 / 2664 / 914
Регистрация: 29.11.2010
Сообщений: 5,746
|
|
18.09.2022, 02:18 | 4 |
Так часто бывает. Обычно называется "интерфейсы".
Добавлено через 42 секунды Да пожалуйста. Это называется функтором. Добавлено через 36 секунд Если ломает вашу методолгию -- методы оборачиваются в классы-функторы.
1
|
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.09.2022, 02:21 [ТС] | 5 |
Исходя из моего, пусть и не шибко большого, опыта - если проект хотя бы больше пары сотен строк - писать его чисто на функциях - это сущий ад.. Тут либо оно так и есть - либо у меня мало опыта в функциональном программировании. Когда открыл для себя ооп - это был глоток свежего воздуха. Вот и думаю отойти от функций к ооп
0
|
4866 / 2664 / 914
Регистрация: 29.11.2010
Сообщений: 5,746
|
|
18.09.2022, 02:31 | 6 |
Попробуйте.
Добавлено через 4 минуты В плюсах, в отличие от упомянутой ранее явы, есть несколько неудобств связанных с "абсолютным" ООП, делающих код на одном только ооп куда более многословным и несколько менее читаемым. Я бы выделил отсуствие сборщика мусора, без которого начинается куча кухни вроде правил трёх/пяти, умные указатели и тому подобный ручной менеджмент памяти; а ещё я бы выделил особенную и систему (явных) ссылок и указателей, которая тоже делает код более многословным относительно упомянутой явы. Не попробуете -- не узнаете. )
1
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
18.09.2022, 02:31 | 7 |
не надо использовать ооп там, где оно нафиг никому не нужно.
в процедурном. кучка функций в стиле си - это процедурная парадигма. не нужно путать её с функциональной парадигмой.
1
|
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.09.2022, 12:30 [ТС] | 8 |
Всё ж фукнциональное.. Процедура не возвращает результат, функция возвращает..
Добавлено через 8 минут Давайте для примера - я могу сделать функцию поисковик изображения и кормить ей в параметры каждый раз скриншот и искомую картинку. Могу реализовать это вторым способом - и либо сделать рычаг внутри функции, либо создать вторую. Могу сделать класс, в который при инициализации я буду класть искомую картинку, процент совпадения, количество объектов для поиска (один - все) и потом вызывать просто объект.Find(скриншот) и получать список совпадений. В плане этого будет в принципе та же функция, написано просто по-другому. НО! Есть ряд преимуществ класса 1) Действия применяются относительно конкретного объекта и читается это легче, чем в параметрах функции 2) Если в функции нужно применить параметры отличные от дефолтных, то их каждый раз нужно писать теперь. В классе это делается 1 раз в инициализации. Что опять же делает код более читабельно 3) Рычаг на тип поиска с теми же исходными данными - в классе смотрится отлично, а вот в функции немного вычурно, да и рычаги, влияющие на результат функции с неизменными входными данными - не есть гуд. В классе это самой парадигмой предусмотрено, в парадигме функции сказано, что результат не должен меняться без изменения входных данных Собственно поэтому я и подумал что полное ооп мне подойдёт лучше
0
|
4866 / 2664 / 914
Регистрация: 29.11.2010
Сообщений: 5,746
|
|
18.09.2022, 13:18 | 9 |
Разница между функциональным и процедурным подходом немного глубже.
Процедурное программирование это последовательное выполнение инструкций сверху вниз с условными или безусловными переходами. В функциональном программировании любое вычисление есть исполнение функции, поэтому в функциональном программировании, например, нет циклов, изменяемых переменных и так далее. Посмотрите, поглубже, вам понравится. ) Добавлено через 12 минут Это вы говорите про организацию данных, а парадигмы "функциональное" или "объектно-ориентированное" программирование это про поведение.
1
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
18.09.2022, 13:49 | 10 |
попробуй в следующий раз сначала погуглить материал.
раз лучше, значит используй ооп.
0
|
71 / 72 / 17
Регистрация: 11.06.2018
Сообщений: 263
|
|
18.09.2022, 13:57 | 11 |
Сообщение было отмечено Laborant666 как решение
Решение
Фантазии какие-то... Нет бы взять и прочитать что есть что.
Тебе написали про твой же пример: А не вообще про ООП. Расшифровываю: если на С++ использовать функцию там, где это уместно, то ООП-парадигме, в которой может быть выполнен проект, это никак не повредит.
1
|
1643 / 1167 / 601
Регистрация: 17.03.2022
Сообщений: 3,685
|
|
18.09.2022, 14:24 | 12 |
Сообщение было отмечено Laborant666 как решение
Решение
Чистый ООП подходит далеко не для всяких задач. Да, есть случаи, когда он ложится на задачу идеально (вроде оконных интерфейсов), но просто загонять его везде - идея не лучшая. Написать-то рабочий код, возможно, и получится, но он будет откровенно избыточным.
0
|
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.09.2022, 15:44 [ТС] | 13 |
Это как раз из гугла 0.о
Добавлено через 1 минуту Хм, гугл значит мне наврал немного. Понял Добавлено через 1 минуту Услышал вас и сегодня это ощутил
1
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
18.09.2022, 22:42 | 14 |
вот человек любезно предоставил доступное определение
есть такое понятие: императивная парадигма когда код представляет собой просто последовательность каких то команд-инструкций. классический пример императива - ассемблерный код. на ней базируется процедурная парадигма это - тот же самый императив, только вместо отдельных инструкций можно использовать вызовы функций классический пример процедурного стиля - код на языке си. а вот функциональная парадигма, это уже не императив в функциональной парадигме алгоритм представлен деревом вызовов функций. т.е. функция в качестве аргументов принимает результаты вызовов других функций, которые в свою очередь так же запускают какие то функции, и так хоть до бесконечности. на языке с++ функциональная парадигма используется в метапрограммировании
1
|
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.09.2022, 23:51 [ТС] | 15 |
Если так - то у меня всё ж функциональный подход есть.. Правильно же понимаю, что объединение кучи мелких функций в одну большую - есть функциональщина? По вашим словам - функции берут результат работы других функций и запускают из себя ещё функции - эт есть такое, часто нужно. Теперь пойду по всем ссылкам похожу
Добавлено через 4 минуты Из вики о фукнциональной парадигме Добавлено через 3 минуты Хм. А вчера в гугле читал что наоборот процедурка - зависит от данных, функциональщина от данных и ещё чего-то. Тут же читаю вики - всё наоборот. Вот почему я вчера так и ответил. За ссылки спасибо, думаю тему можно закрывать, большинство за то - что лучше использовать ту или иную парадигму - в зависимости от её надобности, эффективности или удобстве. В одно полностью топить не есть гуд
0
|
2337 / 1825 / 753
Регистрация: 27.07.2012
Сообщений: 5,400
|
|
18.09.2022, 23:52 | 16 |
Нет. Это то же самое процедурное программирование.
В функциональном программировании сами функции являются объектами, могут быть переданы в другие функции, скомбинированы с другими такими же функциями и т.д.
1
|
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.09.2022, 23:56 [ТС] | 17 |
Передать функцию в другую функцию как аргумент?0.о
Если так - то передаётся результат функции, а не сама функция. И это равно тому же, что мы бы результат сохранили в переменную и эту переменную скормили другой функции. Синтаксис разный, а суть одна. Ну разве что переменная экономится Либо я не так понял эту фразу
0
|
2337 / 1825 / 753
Регистрация: 27.07.2012
Сообщений: 5,400
|
||||||
19.09.2022, 00:11 | 18 | |||||
Типичный пример - callback, когда какая-то функциональная сущность (указатель на функцию, функциональный объект, лямбда-функция и т.д.) передаётся в другую функцию, которая уже её вызывает.
Добавлено через 7 минут Вот например:
std::bind1st - это функция, принимающая на вход функциональную сущность (в данном случае экземпляр класса std::multiplies ) и доп.параметр и возвращающая другую функциональную сущность - функциональный объект, который вызовет тот самый экземпляр std::multiplies для аргумента из входного вектора и доп.параметра.
1
|
3718 / 2647 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
|
|
19.09.2022, 13:05 | 20 |
lemegeton, у меня небольшой вопросик.
Где почитать причины существования, а главное использования, такого разнообразия языков и парадигм ? Где они используются, а не когда-то использовались, для каких задач ?
0
|
19.09.2022, 13:05 | |
19.09.2022, 13:05 | |
Помогаю со студенческими работами здесь
20
Я полный новичок полный перебор Полный перебор Не полный Windows 8.1 Полный учебник с++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Подброка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения
PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
|
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
|
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
|
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9
Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
|