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

О подходах к программированию (по Г.Шилдту) - C++

Восстановить пароль Регистрация
 
Menma
 Аватар для Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
02.11.2013, 22:14     О подходах к программированию (по Г.Шилдту) #1
Начала изучать цпп по книге Шилдта "C++. Руководство для начинающих" и уже столкнулась с одной неясностью.
В самом общем смысле любую программу можно организовать одним из двух способов: опираясь на код (действия) или на данные (информация, на которую направлены эти действия).
И далее пишется о том, что структурированное программирование основано на первом способе, а ООП - на втором.

Мне не совсем ясно, как это: программировать, опираясь на код, и программировать, опираясь на данные. Не могу себе представить, возможно, не хватает наглядности.
Дорогие программисты, прошу прояснить мне этот момент. Разжевывание на пальцах приветствуется.
Миниатюры
О подходах к программированию (по Г.Шилдту)  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SanchezPluz
49 / 49 / 1
Регистрация: 31.10.2012
Сообщений: 474
02.11.2013, 22:24     О подходах к программированию (по Г.Шилдту) #2
Не знаю как вам, но по С++ из книг лучше только у самого создателя языка Бьерна Страуструпа.
В ООП программируются объекты (классы, функции и т.п.). Из них мы создаем данные для последующих действующих модулей.
Например, у нас есть класс Dog, в котором описываются функции Eat и Sleep:
C++
1
2
3
4
5
class Dog
{
     void Eat ();
     void Sleep ();
};
Так мы создали некие данные, которыми мы потом будем пользоваться. Теперь задействуем их:
C++
1
2
3
4
5
6
7
8
9
// Некая собака ест
void Dog::Eat ()
{
     BOOL isEat;
     if (isEat == FALSE)
     {
      // Собака не поела. Нужно, чтобы она сделала это.
     }
}
Потом мы можем создать экземпляр этого класса, получая конкретный запрограммированный алгоритм. Как-то так.
Поправьте, если что-то не так.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
02.11.2013, 22:34     О подходах к программированию (по Г.Шилдту) #3
Такие вещи понимаются со временем, не стоит на них зависать, читайте дальше)
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,410
02.11.2013, 22:58     О подходах к программированию (по Г.Шилдту) #4
1.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int sum(const int a, const int b)
{
    return a + b;
}
 
int foo(const int a, const int b)
{
    return sum(a, b) * 2;
}
 
void print(int x, int y)
{
    std::cout << foo(x, y) << std::endl;
}
 
int main()
{
    print(5, 2);
}
2.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
class SuperCalculation
{
  public:
    SuperCalculation(const int x1, const int y1) : x(x1), y(y1) {}
    void printCalculation() const { std::cout << calculation() << std::endl; }
    int calculation() const { return (x + y) * 2; }
 
  private:
    int x, y;
};
 
int main()
{
    SuperCalculation sc(5, 2);
    sc.printCalculation();
}
Добавлено через 2 минуты
В ООП мы моделируем объекты и их естественное поведение, при структурированном программировании (например в С), нас больше волнуют конкретные данные.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.11.2013, 23:02     О подходах к программированию (по Г.Шилдту) #5
MrGluck, а почему sum и foo принимают const int, а print просто int?
gazlan
2861 / 1809 / 272
Регистрация: 27.08.2010
Сообщений: 4,893
Записей в блоге: 1
02.11.2013, 23:40     О подходах к программированию (по Г.Шилдту) #6
Цитата Сообщение от Menma Посмотреть сообщение
программировать, опираясь на код, и программировать, опираясь на данные
Это два разных мировоззрения.

В первом случае (опора на код) выстраивается жесткая "авторитарная" централизованная структура, следящая за всем и контролирующая все. Утрируя, "данные - ничто, поток управления все".

Вторую модель можно назвать "демократической": возможность принимать решения делегируется на уровень объектов (связка данных и методов). "Центр" следит только за общим направлением деятельности подчиненных объектов, оставляя на их собственное усмотрение детали реализации.

Для достаточно сложных ("больших") систем, "авторитарный" подход оказался провален: сложность управления (число связей) растет квадратично с ростом размера системы. "Динозавры" вымерли.

"Демократический" подход не лишен недостатков, но позволяет снизить затраты на управление за счет "декомпозиции сложности": мелкие вопросы решаются "по месту", на уровень выше выносятся только те, что превышают компетенцию исполнителя.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,410
03.11.2013, 02:17     О подходах к программированию (по Г.Шилдту) #7
Цитата Сообщение от Tulosba Посмотреть сообщение
MrGluck, а почему sum и foo принимают const int, а print просто int?

Не по теме:

случайно вышло. Сначала написал в main int x, y. Потом скопировал, вставил в параметры функции и дописал int. Обычно const пишется на автомате (например в функциях я параметры набирал вручную и его дописал)

Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
03.11.2013, 09:47     О подходах к программированию (по Г.Шилдту) #8
MrGluck, просто когда речь идёт о передаче по значению особого смысла добавлять const нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2013, 09:49     О подходах к программированию (по Г.Шилдту)
Еще ссылки по теме:

C++ Задачи по программированию
Задачник по программированию C++
C++ задача по программированию С++

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

Или воспользуйтесь поиском по форуму:
MrGluck
03.11.2013, 09:49     О подходах к программированию (по Г.Шилдту)
  #9

Не по теме:

Привычка - пихаю const всюду кроме тех случаев, где его ставить нельзя.

Yandex
Объявления
03.11.2013, 09:49     О подходах к программированию (по Г.Шилдту)
Ответ Создать тему
Опции темы

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