Форум программистов, компьютерный форум CyberForum.ru

Парадигмы: императивная vs ООП - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно исправить программу.Тема строки (Получить последовательно все строки матрицы, исключая...) http://www.cyberforum.ru/cpp-beginners/thread737686.html
Дана символьная матрица размера n x m. Получить последовательно все строки матрицы, исключая те, для которых есть равные среди строк с меньшими номерами. Вот текст программы, но она неправильно работает. В чем ошибка, подскажите пожалуйста. #include<iostream.h> #include<conio.h> #include<stdio.h> #include<ctype.h> int main() { int n,m,i,j,z,k,c;
C++ Как создать таблицу с изначально неизвестными данными? Нужно написать таблицу, которую нужно заполнить данными, высчитывающимися непосредственно в программе. Т.е. данные изначально неизветны(их длина тоже). Проблема в том, как это сделать чтобы табличка получилась ровной(столбцы не смещались). Знаю, что вроде нужно делать с setw, но сколько пыталась - не получается:-| Вот часть кода, которую нужно переделать в таблицу(пишу на литовском языке, поэтому... http://www.cyberforum.ru/cpp-beginners/thread737683.html
C++ Ошибка: Левый операнд должен быть левосторонним значением
int MenuMain() { int count = 3; char ** list = new char * ; list = new char = Rus("Провести распознавание"); list = new char = Rus("Конфигурации автомата"); list = new char = Rus("Выход"); return Menu(list,count); }
C++ Ошибка: [Linker error] undefined reference to `WinMain@16' ld returned 1 exit status
Помогите, пожалуйста! При компиляции и выполнении программы выходит ошибка undefined reference to `WinMain@16' ld returned 1 exit status Подскажите, что не так, в С++ я новичок. Программа написана с использованием yacc #define yyclearin yychar = -1 #define yyerrok yyerrflag = 0
C++ Где можно почитать про списки на C++? http://www.cyberforum.ru/cpp-beginners/thread737654.html
Подскажите пожалуйста или поделитесь полезной литературой) чтобы доступно и понятно было) Заранее огромное вам спасибо:)
C++ одномерный массив (вычислить сумму элементов массива, расположенных между первым и вторым...) В одномерном массиве, состоящем из не более чем n (n<=10) вещественных элементов, вводимых с клавиатуры, вычислить сумму элементов массива, расположенных между первым и вторым положительными элементами (первый и второй положительные элементы в сумму не входят). подробнее

Показать сообщение отдельно
PitMagnum
3 / 3 / 0
Регистрация: 28.05.2012
Сообщений: 17

Парадигмы: императивная vs ООП - C++

19.12.2012, 00:08. Просмотров 987. Ответов 21
Метки (Все метки)

Здравствуйте, форумчане. Меня мучает проблема, можно так сказать, эстетически-идеологического характера. Суть заключается в следующем:

Концепция разделения данных и управления данными ООП дает большие преимущества - по крайней мере если алгоритмы имеют сложную структуру, то классы не дают превратиться в кашу из данных и обработчиков этих данных, что может случиться, если использовать императивный стиль программирования. С другой стороны ООП заточен на представление всего и вся в виде объектов. И во многих случаях это естественно и правильно. Например при написании персонажей в игре. Поскольку персонаж - это без сомнения объект.

Но беда в том, что не всегда что-то стойко ассоциируется с объектом. Например у меня есть модуль, который грубо говоря содержит 3 основных функции: шифрование по ГОСТ 28147-89 в режиме простой замены, шифрование по ГОСТ 28147-89 в режиме гаммирования и хеш-функция по ГОСТ 34.11-94. Последние две функции используют первую для своих вычислений. Есть еще вспомогательные функции. А еще есть данные, которые кое как распиханы по функциям. И я явственно вижу, что применив ООП парадигму, я смогу улучшить этот модуль - сформируется четкий интерфейс, данные будут размещены в одном месте, а следовательно, не будет всего этого дрочерства с передачей кучи параметров от одной функции к другой.

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

C++
1
2
Math mth;
x = mth.sin(y);
Нет стойкой ассоциации с объектом. Шифратор.вычислиХешФункцию("in god we trust"), Сортировщик.отсортируйМассив(arr) - все это как-то глупо и неестественно. Вот и спрашивается - как можно сделать элегантно - чтоб и данные с функциями не мешать, и чтоб потом как простые функции вызывать можно было? Есть, конечно, функторы, но объект все равно нужно где-то создать. Еще можно данные вынести в глобальную область - но мне всегда твердили, что глобальные переменные - это зло. Где истина?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru