Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral

Рис. 1.1. Архитектура программы, использующей глобальную область данных
Слабым местом такой архитектуры было то, что при увеличении количества подпрограмм возрастала вероятность искажения части глобальных данных какой-либо подпрограммой. Например, обычно подпрограмма поиска корней уравнения на заданном интервале по методу деления отрезка пополам меняет величину интервала. Если при выходе из подпрограммы не предусмотреть восстановления первоначального интервала, то в глобальной области окажется неверное значение интервала, полученное при последнем делении отрезка в ходе работы подпрограммы.
Необходимость исключения таких ошибок привела к идее использования в подпрограммах локальных данных (рис. 1.2).

Рис. 1.2. Архитектура программы, использующей подпрограммы с локальными данными.
И вновь сложность разрабатываемого программного обеспечения стала ограничиваться возможностью программиста отслеживать процессы обработки данных уже на новом уровне. К этому добавились проблемы согласования интерфейса при ведении разработки несколькими программистами. В результате встал вопрос создания технологии разработки сложных программных продуктов, снижающей вероятность появления ошибок.
Усилиями многих авторов такая технология была создана и получила название «структурное программирование».
Структурное программирование представляет собой совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспечения.
Были сформулированы основные принципы выполнения разработки:
В основе структурного программирования лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших (до 40-50 операторов) подпрограмм. В отличие от используемого ранее интуитивного подхода к декомпозиции, структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры, для получения которой рекомендовалось применять метод пошаговой детализации. С появлением других принципов декомпозиции (объектного, логического и т. д.) данный способ получил название процедурной декомпозиции.
Метод пошаговой детализации заключается в следующем:
1) определяется общая структура программы в виде одного из трех вариантов (рис 1.3):
последовательности подзадач (например, ввод данных, преобразование данных, вывод данных); альтернативы подзадач (например, добавление записей к файлу или их поиск); повторения подзадачи (например, циклически повторяемая обработка данных).
Рис. 1.3. Основные структуры процедурной декомпозиции
каждая подзадача, в свою очередь, разбивается на подзадачи с использованием тех же структур. процесс продолжается, пока на очередном уровне не получается простейшая подзадача, которая достаточно просто реализуется средствами используемого языка (1-2 управляющих оператора языка).Контрольные вопросы
Что представляет собой структурное программирование? Сформулируйте основные принципы выполнения разработки. В чем заключается метод пошаговой детализации?СРСП № 2
Тема: Абстракция данных, объект. Инкапсуляция.
Цель: знать основные определения и понятия
История становления программирования богата какими-либо нововведениями, которые коренным образом меняют всю предшествующую систему. Одним из первых и наиболее ярких таких открытий можно считать выход в свет книги «Программирование без GOTO». Следующим наиболее важным шагом по праву считают переход к процедурно-функциональному программированию, когда программы разбивались на ряд независимых блоков, и в итоге просто грамотно соединялись в единое целое. Ну и третьим, наверное, самым большим открытием можно считать появление объектно-ориентированного программирования. ООП объединило в себе одновременно процедурные методы, для чего создавались самостоятельные модули, структурное проектирование и стимулировало творческий подход к созданию программ.
Сегодня ни одна программа не представляется без наличия в ней объектов. Объектно-ориентированное программирование вышло на новую ступень своего развития, когда внедрить объект в программу не составляет большого труда, а порой, это за вас сделает визуальная среда. Таким образом, такой мощный инструмент, как объект стал доступным даже для начинающего программиста. Теперь любой программист может использовать всю мощь и эффективность объектно-ориентированного программирования.
Неформально можно сказать, что объектно-ориентированное программирование стоит на трёх китах, таких как инкапсуляция, полиморфизм и наследование.
Объектно-ориентированное проектирование — это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
Для ООП существует важное значение такое понятие, как абстрагирование.
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя.
Для удобного представления программы используются модульность и иерархия.
Модульность — это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями.
Иерархия — это упорядочение абстракций, разложение их по уровням.
Сохраняемость — способность объекта существовать во времени, переживая породивший его процесс, и (или) в пространстве, перемещаясь из своего первоначального адресного пространства. Говоря другими словами, сохраняемость — это способность классов использоваться не только в одной программе или части программы.
Контрольные вопросы
Дайте определение абстракций Дайте определение модульности Дайте определение иерархий Дайте определение сохраняемостиСРСП № 3
Тема: Иерархия классов, наследование, полиморфизм.
Цель: знать иерархию классов, основные определения и понятия
Все классы Object Pascal порождены от единственного родителя - класса TObject. Этот класс не имеет полей и свойств, но включает в себе методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов - от их создания до уничтожения. Новый класс можно создать на основе этого базового класса.
Принцип наследования приводит к созданию дерева классов, постепенно разрастающегося при перемещении от TObject к его потомкам. Каждый потомок дополняет возможности своего родителя новыми свойствами и передает их своим потомкам. В состав Delphi входят более 300 различных классов. Для примера приведем небольшой фрагмент дерева классов Delphi:

Рис.1. Фрагмент дерева классов Delphi
Класс TPersistent обогащает возможности своего родителя TObject; он умеет сохранять данные в файле и получать данные из него. Класс TComponent умеет взаимодействовать со средой разработчика и передает это умение своим потомкам. Класс TComponent является базовым для создания не визуальных компонентов. TControl не только способен работать с файлами и средой разработчика, но он уже умеет создавать и обслуживать видимые на экране изображения. Класс TControl является базовым для создания визуальных компонентов. Потомок этого класса TWinControl может создавать Windows-окна т. д.
Контрольные вопросы
От какого класса порождены все классы Object Pascal? К чему приводит принцип наследования?СРСП № 4
Тема: Полиморфный объект.
Цель: знать понятие полиморфыного объекта
Если в качестве параметра можно передавать любой тип из типов, порождаемых типом параметра, то как тот, кто использует этот параметр, определяет какой тип объекта получен. Фактически пользователь не знает этого явно. Точный тип фактического параметра неизвестен во время компиляции. Он может быть любым типом объекта, порожденным от типа параметра var и поэтому называется полиморфным объектом.
В чем же преимущество полиморфных объектов? Самое главное в том, что полиморфные объекты допускают обработку объектов, тип которых неизвестен во время компиляции.
Предположим, что Вы написали пакет графических чертежных средств, который поддерживает различные типы фигур, точки, окружности, квадраты, прямоугольники, кривые и т. п. Может возникнуть необходимость написать в качестве части этого пакета подпрограмму, которая будет изображать графическую фигуру на экране с помощью указателя "мышь".
Старый способ заключается в написании отдельных процедур для изображения графических фигур всех типов, поддерживаемых пакетом. Нужно написать процедуры DragCircle, DragSquare, DragRectangle и т. д. Даже если строгое типирование Паскаля разрешает это (и не забывайте, что всегда есть способы обойти строгое типирование) различие между типами графических фигур будет, по-видимому, препятствовать написанию общей подпрограммы изображения этих фигур.
Кроме того, окружность не имеет сторон, квадрат имеет одну длину стороны, прямоугольник - две различные длины сторон и т. д. В этом случае искусные программисты на Turbo Pascal идут дальше и выполняют вышеописанную задачу следующим образом: передают запись графической фигуры процедуре DragIt как содержимое общего указателя. Внутри DragIt просматривают поле признака при фиксированном смещении внутри записи графической фигуры, чтобы определить какой тип имеет данная фигура и затем осуществляют вставку с помощью предложения case:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |


