Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
5 / 5 / 2
Регистрация: 01.02.2013
Сообщений: 88
1

Объединять классы и внешние функции в одной программе плохой тон программирования?

10.09.2014, 11:05. Показов 1374. Ответов 10
Метки нет (Все метки)

Доброго времени суток! Преподаватель в институте задал определённую задачу, однако не определил разрешённые возможности. Сказал только - программируем на C++ в консоли. Я оформил задачу, используя один класс (или структуру, не принципиально) и набор внешних функций. Увидев мою программу преподаватель сказал, что объединять классы и внешние функции в одной программе нельзя, что мол это дурной тон, и что программа должна быть либо процедурной, либо объектно-ориентированной, но никак не смешанной. В действительности ли это так? И почему нельзя в программе использовать все возможности языка??
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2014, 11:05
Ответы с готовыми решениями:

Хороший или плохой тон программирования
вот в книгах читаю что гото туфта полная..на форуме тоже так говорят,а почему?очень нужная...

Дурной тон программирования
Часто слыщу такую фразу, вот и интересно, кто что по этому поводу думает. Что можно отнести к...

Хороший тон программирования
Можно ли считать хорошим тоном в программировании? Например вот такой вот код? #define FOR...

Хороший тон программирования. Не догма - но полезно.
У каждого опытного разработчика , наверняка, с опытом формируются негласные правила .. которые...

10
3247 / 2049 / 351
Регистрация: 24.11.2012
Сообщений: 4,902
10.09.2014, 11:21 2
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Цитата Сообщение от Duracell Посмотреть сообщение
В действительности ли это так?
Свободные функции - нормальная вещь. Не все вписывается в иерархию. Не всему нужны классы.

А с преподом спорить бесполезно, проще сделать как он говорит. Такой подход благоприятно влияет на оценки в дипломе.
1
5 / 5 / 2
Регистрация: 01.02.2013
Сообщений: 88
10.09.2014, 11:27  [ТС] 3
Цитата Сообщение от 0x10 Посмотреть сообщение
Свободные функции - нормальная вещь. Не все вписывается в иерархию. Не всему нужны классы.
Спасибо. Мне даже просто для себя было интересно.

Цитата Сообщение от 0x10 Посмотреть сообщение
А с преподом спорить бесполезно, проще сделать как он говорит. Такой подход благоприятно влияет на оценки в дипломе.
Это точно
0
Почетный модератор
Эксперт С++
5843 / 2853 / 390
Регистрация: 01.11.2011
Сообщений: 6,903
10.09.2014, 11:57 4
0x10, даже добавить нечего.
0
3247 / 2049 / 351
Регистрация: 24.11.2012
Сообщений: 4,902
10.09.2014, 12:25 5
Цитата Сообщение от SatanaXIII Посмотреть сообщение
даже добавить нечего.
Да почему, всегда можно развернуть ответ) Например, можно вспомнить языки, в которых просто недопустимо определять свободные функции (C#/Java), но при этом все еще остаются чисто утилиратные вещи, по своей семантике не вписывающиеся в классы. Поэтому появляются классы типа Utils, фактически отчасти выполняющие функцию плюсовых пространств имен. И уже применение этой практики в плюсах можно отнести к не очень хорошему стилю, поскольку см выше - есть неймспейсы.

Вот, нафлудил на абзац)
0
Почетный модератор
Эксперт С++
5843 / 2853 / 390
Регистрация: 01.11.2011
Сообщений: 6,903
10.09.2014, 12:38 6
Цитата Сообщение от 0x10 Посмотреть сообщение
Вот, нафлудил на абзац)
Да при желании-то это да. ))
Изначально было просто лаконично и полно все сказано, что аж даже не хотелось ничего добавлять.
И про препода в том числе.
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
10.09.2014, 12:51 7
Цитата Сообщение от Duracell Посмотреть сообщение
В действительности ли это так? И почему нельзя в программе использовать все возможности языка??
Объектно-ориентированный подход не отменяет функций, но состоит во включении всех функций, реализующих операции экземпляров класса непосредственно в класс. Например, нельзя в одно программе использовать класс TImage и функцию LoadImageFromFile, вместо неё должна быть функция LoadFromFile, являющаяся членом класса TImage. Нельзя иметь класс Group и функцию LoadGroupFromFile, надо вместо этого включить функцию LoadFromFile прямо в класс Group. Все возможности использовать можно, просто Group - именно потому и класс, а не структура, чтоб включить прямо в него максимум функций, относящиеся только к Group. В то же время функция abs не может быть членом TVector, так как это снижает удобство пользования: функция эта математическая с одним аргументом (в математической терминологии), поэтому её имя удобней располагать не справа, а слева от параметра, тогда для членства она должна будет быть статической и адресоваться с именем класса и двумя двоеточиями. Тоже относится к функции det класса Matrix. Но в этом же классе GetSizes должна быть членом. А декларировать класс и свести его к структуре - это не использовать возможности, предоставляемые классом.

Добавлено через 6 минут
Цитата Сообщение от 0x10 Посмотреть сообщение
Не всему нужны классы.А с преподом спорить бесполезно, проще сделать как он говорит. Такой подход благоприятно влияет на оценки в дипломе.
Вот именно в тех случаях, когда классы не нужны, надо использовать только процедурную парадигму, а не декларировать классы для галочки. А если всё таки нужны, то вне классов должны остаться только функции, чьё членство снижает удобство пользования ими, в первую очередь те, которые невозможно однозначно отнести к какому либо одному классу, но также и те из функций, которые уже стало привычным указывать слева от единственного параметра.
0
Эксперт С++
3207 / 1734 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
10.09.2014, 13:12 8
Да-да, все всё решили, и препода пожурили, даже не взглянув на код автора, для которого что структура, что класс - без разницы. Главное, что автор ушел успокоенный (но код так и не показал).
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
10.09.2014, 13:58 9
А ничего, что на эту разницу указал я?
0
Эксперт С++
3207 / 1734 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
10.09.2014, 18:44 10
Цитата Сообщение от taras atavin Посмотреть сообщение
А ничего, что на эту разницу указал я?
Ну что вы, смею ли я претендовать! Если серьезно, то у вас многовато там букв, поэтому не решился вчитываться.
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
11.09.2014, 08:15 11
Цитата Сообщение от Mr.X Посмотреть сообщение
Если серьезно, то у вас многовато там букв,
Вот:
Цитата Сообщение от taras atavin Посмотреть сообщение
Все возможности использовать можно, просто Group - именно потому и класс, а не структура, чтоб включить прямо в него максимум функций, относящиеся только к Group.
. Не так уж много.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2014, 08:15

Плохой стиль программирования?
Мне говорят,что у меня плохой стиль программирования,как можно подкорректировать код? Вот мой...

Цветовой тон различается (на рабочем столе, и в программе просм. изображений)
В общем проблема такая, когда запускаю картинки через программу просмотров картинок на семерке, и...

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

Задержка (Остановка) только одной функции в программе
В общем, осваиваю я с++, для чего делаю разнообразные элементарные программы. Создавая очередную...

Компьютер плохой или кто плохой?
У меня проблема, мучаюсь с ней давно, все игры раньше 2005 года идут, а позже идут но с задержками...

написать коментарии к программе и исправить ошибку в одной программе
и впрграмме mass нужно найти ошибку


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.