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

Сложность абстракции, полиморфизм, дублирование и другие - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.75
Bers
Заблокирован
25.11.2011, 23:57     Сложность абстракции, полиморфизм, дублирование и другие #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//структура "матрица"
//Представляет собой обёртку над двухмерным массивом
template<typename TypeT, int _SizeX, int _sizeY>
struct Array2D
{
    Array2D()
    {
        for(int y = 0; y < _sizeY; ++y)
        {
            for(int x = 0; x < _SizeX; ++x)
            {
               Arr[x][y] =  rand()%100 + 1;
            }
        }
    }
    TypeT Arr[_SizeX][_sizeY];
};
 
//создаём 100 штук таких матриц
//каждая матрица будит проинициализирована
//случайными числами
Array2D<int,100,100> SuperArray[100];
 
 
int main()
{
   return 0;
};
Добавлено через 5 минут
Цитата Сообщение от silent_1991 Посмотреть сообщение
proger2030, вы читаете, что вам пишут? Используйте трёхмерные массивы (т.е. массивы двухмерных массивов, с логической точки зрения), в самом верхнем цикле перебирая двухмерные массивы, а во вложенных заполняя каждый из них.
Настоятельно не рекомендую использовать трехмерные массивы.
Более того, крайне не рекомендую использовать двухмерные массивы.

Одномерный массив намного проще для понимания, и гибче в управлении.
Его легче трансформировать во всевозможные состояния.

Если так сильно понадобились многомерные массивы - всегда можно инкапсулировать сложность абстракции внутри нового класса.

Массивы массивов намного гибче и проще в плане всевозможных трансформаций/сортировок и тп.
Не придётся голову ломать над глючной адресной арифметикой многомерных массивов.

Всегда нужно стремится понижать сложность архитектуры. Для этого и существуют классы.

 Комментарий модератора 
Корни темы здесь - Как создать 100 массивов разными значениями ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2011, 23:57     Сложность абстракции, полиморфизм, дублирование и другие
Посмотрите здесь:

C++ Полиморфизм
полиморфизм=( C++
C++ полиморфизм
C++ Чего стоит использование абстракции типов данных?
Полиморфизм. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
27.11.2011, 23:36     Сложность абстракции, полиморфизм, дублирование и другие #41
fasked, мощно сказано.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.11.2011, 00:45     Сложность абстракции, полиморфизм, дублирование и другие #42
Цитата Сообщение от volovzi Посмотреть сообщение
Причём, большинство, тупо из стадного инстинкта, — против Берса. Здравое есть и там, и там. Просто некоторые, например, модераторы, думают, что правы априори, т.к. они модераторы
Ерунда полная. И
Цитата Сообщение от volovzi Посмотреть сообщение
чисто для объективности
ForEveR не модератор. Может причина в том, что большинство в данном случае правильно говорит?

Цитата Сообщение от Bers Посмотреть сообщение
Это типа, если докалебаться больше не до чего, надо докалебаться до грамматики
Bers, Вы, конечно, не обижайтесь, но складывается мнение, что безграмотность - ваше кредо. Вот Вам два простых примера:
C++
1
2
3
4
5
6
7
8
9
//...
const int SIZE(3);
int arr[SIZE] = { 1, 2, 3 };
for ( int i = 0; i < SIZE; ++i )
    std::cout << arr[i] << ' ';
//some changes 
for ( int i = 0; i < SIZE; ++i )
    std::cout << arr[i] << ' ';
//...
C++
1
2
3
4
5
6
7
8
9
10
//...
void dump(const int * arr, size_t size, std::ostream & ost){
    while ( size-- )
        ost << *arr++ << ' ';
}
//...
int arr[SIZE] = { 1, 2, 3 };
dump(arr, SIZE, std::cout);
//some changes
dump(arr, SIZE, std::cout);
В первом есть дублирующийся код, хоть и набран подряд, во втором дублирующегося кода нет не смотря на то, что второй вызов функции скопирован и вставлен.
Bers
Заблокирован
28.11.2011, 00:54  [ТС]     Сложность абстракции, полиморфизм, дублирование и другие #43
Цитата Сообщение от easybudda Посмотреть сообщение
В первом есть дублирующийся код, хоть и набран подряд, во втором дублирующегося кода нет не смотря на то, что второй вызов функции скопирован и вставлен.
А этого второго вызова функции в исходном коде нет? То есть сам вызов никак не продублирован?

И сам по себе вызов функции - это не код? Это так.. это "не считается" за код, да?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.11.2011, 01:14     Сложность абстракции, полиморфизм, дублирование и другие #44
Цитата Сообщение от Bers Посмотреть сообщение
А этого второго вызова функции в исходном коде нет? То есть сам вызов никак не продублирован?
И сам по себе вызов функции - это не код? Это так.. это "не считается" за код, да?
Вот и не знаю - смешно это, или грустно...
По логике программы массив должен два раза выводиться. Первый раз перед изменениями, второй - после. Существенная разница в том, что при изменении вывода (вдруг оказалось, что массив нужно задом на перёд выводить, или поля вывода нужно определённой ширины сделать, да ещё с ведущими нулями, etc...) в первом случае изменения прийдётся в двух местах вносить, а во втором - только в функции вывода. По-моему очень неплохо сначала в таких простых моментах разобраться, а уж потом абстрактные сущности разделять...
Bers
Заблокирован
28.11.2011, 01:15  [ТС]     Сложность абстракции, полиморфизм, дублирование и другие #45
Цитата Сообщение от easybudda Посмотреть сообщение
Вот и не знаю - смешно это, или грустно...
Вы не ответили на вопрос.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.11.2011, 01:28     Сложность абстракции, полиморфизм, дублирование и другие #46
А этого второго вызова функции в исходном коде нет? То есть сам вызов никак не продублирован?

И сам по себе вызов функции - это не код? Это так.. это "не считается" за код, да?
Тебе уже сказали все про это... Блин. Это бред чистой воды. Это код, но это нельзя назвать дублированием кода.
Bers
Заблокирован
28.11.2011, 01:36  [ТС]     Сложность абстракции, полиморфизм, дублирование и другие #47
Цитата Сообщение от ForEveR Посмотреть сообщение
Тебе уже сказали все про это... Блин. Это бред чистой воды. Это код, но это нельзя назвать дублированием кода.
Цитата Сообщение от easybudda Посмотреть сообщение
второй вызов функции скопирован и вставлен.
То есть дублирование кода нельзя называть дублированием кода?
Это не у меня бред. Это у вас бред, господа.

Я то понимаю, что код, даже если это всего лишь вызов функции - все равно остаётся кодом.

Функции, собственно для того и придумали, что бы дублировать только маленький кусочек кода, вместо большого тела функции.

А если оптимизировать по скорости - ну вставится само тело вместо вызова. Это уже будит дублированием тела функции, но на уровне компиляции, а не на уровне исходного кода.

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

А вы свои бредовые объяснения оставьте для того товарища, который заявил, что "дублирование кода - это плохо". А я вашим бредом сыт по горло.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.11.2011, 07:53     Сложность абстракции, полиморфизм, дублирование и другие #48
Bers, Просто ни один здравомыслящий человек не станет называть это дублированием кода. В таком случае, когда для каждой новой программы нам приходится писать точку входа в программу - тоже является дублированием кода. Я считаю, что называть это так - это бред.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.11.2011, 08:25     Сложность абстракции, полиморфизм, дублирование и другие #49
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Bers Посмотреть сообщение
Это не у меня бред. Это у вас бред, господа.
Цитата Сообщение от ForEveR;2221235[B
]Просто ни один здравомыслящий человек не станет называть это дублированием кода.[/B]
А сам я решил в дискуссию на этот раз не вступать, а просто почитать... похихикать...
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.11.2011, 10:06     Сложность абстракции, полиморфизм, дублирование и другие #50
Цитата Сообщение от Bers Посмотреть сообщение
В моём понимании, если вы вообще сделали копипаст, то уже сделали дублирование кода.
Удачи Вам в ваших нелёгких начинаниях.
Bers
Заблокирован
28.11.2011, 13:28  [ТС]     Сложность абстракции, полиморфизм, дублирование и другие #51
Цитата Сообщение от ForEveR Посмотреть сообщение
Bers, Просто ни один здравомыслящий человек не станет называть это дублированием кода. В таком случае, когда для каждой новой программы нам приходится писать точку входа в программу - тоже является дублированием кода. Я считаю, что называть это так - это бред.
У вас в исходном коде каждой новой программы имеется более одной точки входа main() ?
Если нет - тогда у вас проблемы с логикой. Бред у вас в голове.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.11.2011, 13:33     Сложность абстракции, полиморфизм, дублирование и другие #52
Bers, Скорее все же у вас. Я говорю про "дублирование кода" не в одной программе, а вообще. Если для вас вызов функции в программе более 1 раза - это дублирование кода, то почему написание новой программы (в частности точки входа) не является дублированием кода?)
Bers
Заблокирован
28.11.2011, 14:03  [ТС]     Сложность абстракции, полиморфизм, дублирование и другие #53
Цитата Сообщение от ForEveR Посмотреть сообщение
Bers, Скорее все же у вас. Я говорю про "дублирование кода" не в одной программе, а вообще. Если для вас вызов функции в программе более 1 раза - это дублирование кода, то почему написание новой программы (в частности точки входа) не является дублированием кода?)
Исходный код конкретной программы включает в себя только исходный код этой конкретной программы. Локально не существует никаких других исходных кодов. Ваш К.О.

А ваш идиотский вопрос из серии: "Почему молоток не является дублированием перфоратора. Ведь у них в их устройстве есть очень много похожего, или даже одинакового кода"

Потому что молоток - это инструмент. Который поставляет совершенно другие, отличные от перфоратора услуги.

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

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

А по своей ущерной логике вы вообще скажите: "нуу... это тоже дублирование кода, но за дублирование ммм... как бы не считается"
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.11.2011, 14:05     Сложность абстракции, полиморфизм, дублирование и другие #54
Bers, Это не ущербная логика. Это называется не зацикливаться на мелочах. Чего и вам желаю.
Bers
Заблокирован
28.11.2011, 14:06  [ТС]     Сложность абстракции, полиморфизм, дублирование и другие #55
Цитата Сообщение от ForEveR Посмотреть сообщение
Bers, Это не ущербная логика. Это называется не зацикливаться на мелочах. Чего и вам желаю.
Я и не зацикливаюсь на мелочах.
На мелочах зациклился тот, кто открыл эту ветку, и начал гнусеть про "дублирование кода", толком не понимая, что есть "дублирование", а что "ни есть".
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.11.2011, 14:08     Сложность абстракции, полиморфизм, дублирование и другие #56
Пора закрывать тему кажется. Она изжила себя.
Bers
Заблокирован
28.11.2011, 14:09  [ТС]     Сложность абстракции, полиморфизм, дублирование и другие #57
#35 пост
silent_1991
28.11.2011, 14:18
  #58
 Комментарий модератора 
Так и сделаем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2011, 14:24     Сложность абстракции, полиморфизм, дублирование и другие
Еще ссылки по теме:

C++ Небольшая сложность
Полиморфизм C++
C++ Полиморфизм в с++

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

Или воспользуйтесь поиском по форуму:
fasked
28.11.2011, 14:24     Сложность абстракции, полиморфизм, дублирование и другие
  #59

Не по теме:

Цитата Сообщение от Bers Посмотреть сообщение
На мелочах зациклился тот, кто открыл эту ветку, и начал гнусеть про "дублирование кода", толком не понимая, что есть "дублирование", а что "ни есть".
Если уж до такого дошло, то я вынужден вызвать Вас на дуэль

Yandex
Объявления
28.11.2011, 14:24     Сложность абстракции, полиморфизм, дублирование и другие
Закрытая тема Создать тему
Опции темы

Текущее время: 02:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru