Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Блочная структура программы




Блок ‑ это объект, состоящий из объявлений и выполняемых операторов. Аналогичное определение было дано для тела подпрограммы, и точнее будет сказать, что тело подпрограммы ‑ это блок. Блоки вообще и подпрограммы в частности могут быть вложены один в другой.

В связи с этим объявления переменных обладают тремя свойствами.

Область действия. Область действия переменной ‑ это сегмент программы, в котором она определена.

Видимость. Переменная видима внутри некоторого подсегмента области действия, если к ней можно непосредственно обращаться по имени.

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

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

Видимость каждой переменной идентична ее области действия; к каждой переменной можно непосредственно обращаться во всей ее области действия.

Время жизни переменной ‑ от начала выполнения ее блока до конца выполнения этого блока. Глобальная переменная существует на протяжении выполнения программы. Такая переменная называется статической: после того как ей отведена память, она существует до конца программы. Локальные переменные имеют столько времен жизни, сколько раз вызывалась подпрограмма, так как эти интервалы не перекрываются, переменной каждый раз можно выделять новое место памяти. Локальные переменные называются автоматическими, потому что память для них автоматически выделяется при вызове процедуры (при входе в блок) и освобождается при возврате из подпрограммы (при выходе из блока).

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


ГЛАВА 3 парадигма объектного программирования

Наиболее абстрактную и многообразную из всех парадигм программирования и моделей вычислений предлагает объектное программирование (object programming) или объектно-ориентированное программирование (ООП). ООП ‑ это основная методология 90-х годов, объектное мышление было выработано в результате плодотворного взаимного влияния моделирования, представления данных и системного программирования, оно становится тем более необходимым, чем больше разных типов данных используется в программе и чем длиннее становятся сами программы.

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

3.1 Инкапсуляция

В настоящее время термин «инкапсуляция» в рамках ООП приобрел совершенно иной смысл и стал относиться в большей степени к содержанию, а не к форме. В объектном программировании не предполагается, что программа состоит из набора подпрограмм и данных (АТД), ее основными составляющими являются объекты, содержащие как процедуры (методы), так и данные. Идея объединения данных и программы является основной идеей объектной модели и основой объектного программирования.

Сегодня инкапсуляция означает, что данные и программа (коды) одновременно представлены в одной и той же структуре - объекте, инкапсуляция - это возможность скрыть внутренние детали при описании общего интерфейса для типа, определенного пользователем. Эта инкапсуляция создает типы, определяемые пользователем, расширяющие и взаимодействующие со стандартными типами базового языка.

Инкапсуляцияподразумевает объединение и защиту кода и данных в некоторой сущности – объекте. Как правило, идея объединения кода и данных не вызывает серьёзных возражений. Это отчасти обусловлено тем, что исследователи понимают, что невозможно провести чёткой грани между кодом и данными: код обрабатывает данные, а данные управляют кодом. То или иное значение данных может вызвать разные ветки кода, но те или иные ветки кода могут, так или иначе, изменить данные.

В отличие от идеи объединения кода и данных, идея защиты имеет разные толкования. Вот точка зрения на инкапсуляцию Г. Буча: «Скрытие информации – понятие относительное: то, что спрятано на одном уровне абстракции, обнаруживается на другом уровне. Забраться внутрь объектов можно; правда, обычно требуется, чтобы разработчик класса-сервера об этом специально позаботился, а разработчики классов-клиентов не поленились в этом разобраться. Инкапсуляция не спасает от глупости; она, как отметил Страуструп, «защищает от ошибок, но не от жульничества». Разумеется, язык программирования тут вообще ни при чём; разве что операционная система может ограничить доступ к файлам, в которых описаны реализации классов. На практике же иногда просто необходимо ознакомиться с реализацией класса, чтобы понять его назначение, особенно, если нет внешней документации»[5]. В книге Г. Буча инкапсуляция рассматривается в тесной связи с абстракцией. Таким образом, инкапсуляция необходима еще и для того, чтобы защитить реализацию класса.

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

3.2 Спецификация классов на основе абстрагирования

В ООП вычисление рассматривается как модель поведения. То, что моделируется, является объектами, представленными с помощью вычислительной абстракции ‑ класса. Таким образом, в объектно-ориентированном подходе к разработке программ центральным является понятие класса объектов.

Класс – это некоторая абстракция, формальное описание структуры, включающей в себя поля, методы и свойства. Существует он через объекты.











Последнее изменение этой страницы: 2018-04-12; просмотров: 204.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...