Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
1

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

02.11.2013, 22:14. Просмотров 420. Ответов 8
Метки нет (Все метки)

Начала изучать цпп по книге Шилдта "C++. Руководство для начинающих" и уже столкнулась с одной неясностью.
В самом общем смысле любую программу можно организовать одним из двух способов: опираясь на код (действия) или на данные (информация, на которую направлены эти действия).
И далее пишется о том, что структурированное программирование основано на первом способе, а ООП - на втором.

Мне не совсем ясно, как это: программировать, опираясь на код, и программировать, опираясь на данные. Не могу себе представить, возможно, не хватает наглядности.
Дорогие программисты, прошу прояснить мне этот момент. Разжевывание на пальцах приветствуется.
0
Миниатюры
О подходах к программированию (по Г.Шилдту)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 22:14
Ответы с готовыми решениями:

Какая книга по программированию обьясняет все с математикой и подробно излагает все темы?По программированию?
Не Бьерн Страуструп?А то не нравится мне у Лафоре тип изложения книги,довольно...

Оптимизация нагрузки при разных подходах использования графики
Сделал интерфейс игры (Портрет героя с хп, инвентарь в виде ячеек в верху...

Download Manager на Java по Шилдту
Разбираюсь с Java. Взял Download Manager из книги Г. Шилдта "Java. Полное...

Ковариантность по Шилдту (в русском переводе)
Добрый день. Вот такая вот формулировка у Шилдта по поводу ковариантности: ...

Многопоточность (по Шилдту) - разобрать строку кода
Здравствуйте! У меня вопрос: в чем смысл строки кода if(currentName !=...

8
SanchezPluz
49 / 49 / 8
Регистрация: 31.10.2012
Сообщений: 481
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)
     {
      // Собака не поела. Нужно, чтобы она сделала это.
     }
}
Потом мы можем создать экземпляр этого класса, получая конкретный запрограммированный алгоритм. Как-то так.
Поправьте, если что-то не так.
1
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
02.11.2013, 22:34 3
Такие вещи понимаются со временем, не стоит на них зависать, читайте дальше)
1
MrGluck
Модератор
Эксперт CЭксперт С++
8105 / 4956 / 1436
Регистрация: 29.11.2010
Сообщений: 13,451
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 минуты
В ООП мы моделируем объекты и их естественное поведение, при структурированном программировании (например в С), нас больше волнуют конкретные данные.
1
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.11.2013, 23:02 5
MrGluck, а почему sum и foo принимают const int, а print просто int?
0
gazlan
3143 / 1919 / 311
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
02.11.2013, 23:40 6
Цитата Сообщение от Menma Посмотреть сообщение
программировать, опираясь на код, и программировать, опираясь на данные
Это два разных мировоззрения.

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

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

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

"Демократический" подход не лишен недостатков, но позволяет снизить затраты на управление за счет "декомпозиции сложности": мелкие вопросы решаются "по месту", на уровень выше выносятся только те, что превышают компетенцию исполнителя.
2
MrGluck
Модератор
Эксперт CЭксперт С++
8105 / 4956 / 1436
Регистрация: 29.11.2010
Сообщений: 13,451
03.11.2013, 02:17 7
Цитата Сообщение от Tulosba Посмотреть сообщение
MrGluck, а почему sum и foo принимают const int, а print просто int?

Не по теме:

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

0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
03.11.2013, 09:47 8
MrGluck, просто когда речь идёт о передаче по значению особого смысла добавлять const нет.
0
MrGluck
03.11.2013, 09:49     О подходах к программированию (по Г.Шилдту)
  #9

Не по теме:

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

0
03.11.2013, 09:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2013, 09:49
Привет! Вот еще темы с ответами:

Многопоточное программирование по Шилдту: разобрать код
Друзья, у меня вопрос от новичка. Читаю книгу Шилдта и вот дошёл до главы...

Где найти задачи по Шилдту "Полное руководство С# 4.0"
Добрый день всем программистам и не только! Подскажите пожалуйста ответ на...

Л/р по программированию K580BM80
Доброго дня всем. Во вложении дан вид эмулятора на котором делаем лабораторные...


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

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

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