Все Лекции
.pdf
Абстракция
•Модульность и абстракция дополняют друг друга.
•Модульный подход позволяет разделить решение задачи на блоки.
•Абстракция определяет содержание модуля до его реализации на конкретном языке программирования.
17
Функциональная абстракция
•Предназначение функции следует отделять от ее реализации.
•Этот процесс называется
функциональной (или процедурной) абстракцией.
•В ходе решения задачи содержание каждого модуля постепенно уточняется, воплощаясь в итоге в виде, например функций на языке
Python или С++.
18
Абстракция данных
•Абстракция данных сосредоточивает внимание на предназначении операций, а не на деталях их выполнения.
•Для реализации абстрактных типов данных можно использовать структуру данных, представляющую собой конструкцию, определенную в языке программирования для хранения совокупности данных.
19
Как влияет модульность на каждый этап жизненного цикла программирования?
•Конструирование программ − модульность позволяет применить командный способ программирования.
•Отладка программ − задача отладки большой программы сводится к отладке множества маленьких подпрограмм.
•Модульность позволяет изолировать ошибки.
•Модульные программы хорошо поддаются верификации.
20
Как влияет модульность на каждый этап жизненного цикла программирования?
•Чтение программ. Модульную программу легко отследить.
•Модификация программ. Небольшое изменение в требованиях, предъявляемых к программе, должно приводить к небольшому изменению ее кода. Модульность изолирует модификации.
•Исключение избыточного кода. Модульность исключает избыточность.
21
Модифицируемость
•Три способа, позволяющие облегчить изменение программы:
•использование функций;
•использование именованных констант;
•использование операторов определения типа typedef.
22
Модифицируемость
•Для облегчения модификации программы можно применять именованные константы.
•int scores[202];
•Можно применить именованную константу.
•const int NUMBER_OF_STUDENTS = 202;
•Тогда массив можно объявить следующим образом:
•int scores[NUMBER_OF_STUDENTS];
•Размер массива можно изменить, изменив всего лишь
определение именованной константы и скомпилировав программу снова.
23
Модифицируемость
•Для того чтобы облегчить процесс изменений, используется оператор typedef, который переименовывает существующий тип.
•Например, оператор
•typedef float RealType;
•объявляет тип RealType синонимом типа float, что позволяет использовать их с одинаковым успехом.
•Если в предыдущей программе все переменные типа float объявить как переменные типа RealType, то программу будет легко модифицировать и читать.
•Для того чтобы изменить точность вычислений, нужно просто изменить оператор typedef:
•typedef long double RealType;
24
Легкость использования
•Хороший
пользовательский интерфейс имеет большое значение.
•Программы
классифицируются от просто пригодных к работе до дружелюбных к пользователю.
25
Легкость использования
•В интерактивной среде ввод данных должен быть простым
иясным.
•Программа всегда должна выводить эхо входных данных.
•Вывод должен быть хорошо размеченным
ипонятным.
