Важнейшие классы. TPersistent.

ЧАСТЬ II

2) Инкапсуляцияозначает объединение в одном объекте данных и действий над ними. Инкапсуляция - это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации.

Инкапсуляция скрывает детали реализации объекта.

3)Модульность - это свойство системы, которая была разложена на внутренне связные, но слабо связанные между собой модули.Другими словами, следует стремиться построить модули так, чтобы объединить логически связанные абстракции и минимизировать взаимные связи между модулями.

модульность; она позволяет:

- разбить программу на модули и локализовать область действия подпро­
грамм и переменных;

- изменять локальные подпрограммы, не изменяя других программных моду­
лей;

1)Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

абстракция данных; абстрактный тип данных определяется на основе некоторого их представления и множества подпрограмм для обработки данных
абстрактного типа;

4)Иерархия - это упорядочение абстракций, расположение их по уровням.

Примеры иерархии: одиночное наследование.

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

6)Параллелизм- это свойство, отличающее активные объекты от пассивных.

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

5)Типизация данных предназначена как для облегчения составления программ, так и для автоматического выявления ошибок.

Типизация - это способ защититься от использования объектов одного класса вместо другого, или по крайней мере управлять таким использованием.

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

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

8)Логическая модель отражает логические связи между атрибутами объектов вне зависимости от их содержания и среды хранения и мо­жет быть реляционной, иерархической или сетевой. Таким образом, логическая модель отображает логические связи между информаци­онными данными в данной концептуальной модели.

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

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

9)В статической модели описываются допустимые состояния системы. В статических моделях описываются типы объектов в системе, их свойства и связи. Описывая объекты, они определяют, разумеется, и их имена. Достичь соглашения по именованию всех объектов означает выиграть половину битвы, именно поэтому информационные модели XML иногда называют словарями.

При построении статической информационной модели необходимо пройти следующие этапы:

Этап 1. Идентификация понятий, присвоение им имен и их определение

Этап 2. Организация понятий в иерархию классов

Этап 3. Определение связей, множественности и ограничений

Этап 4. Добавление свойств для конкретизации деталей значений, связанных с объектами

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

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

Существует несколько подходов к динамическому моделированию:

  • Модели рабочих процессов
  • Модели потоков данных
  • Объектные модели
  • Жизненные циклы объектов
  • Варианты использования
  • Диаграммы взаимодействия объектов

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

Диаграмма объектов

Диаграмма объектов (Objectdiagram) — демонстрирует полный или частичный снимок моделируемой системы в заданный момент времени. На диаграмме объектов отображаются экземпляры классов (объекты) системы с указанием текущих значений их атрибутов и связей между объектами.

12) Диаграммы взаимодействия описывают поведение взаимодействующих групп объектов (в рамках варианта использования или некоторой операции класса). Как правило, диаграмма взаимодействия охватывает поведение объектов в рамках только одного потока событий варианта использования. На такой диаграмме отображается ряд объектов и те сообщения, которыми они обмениваются между собой. Существует два вида диаграмм взаимодействия: диаграммы последовательности и кооперативные диаграммы.

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

13)Диаграммы состояний определяют все возможные состояния, в которых может находиться конкретный объект, а также процесс смены состояний объекта в результате наступления некоторых событий. Диаграммы состояний не надо создавать для каждого класса, они применяются только в сложных случаях. Если объект класса может существовать в нескольких состояниях и в каждом из них ведет себя по-разному, для него может потребоваться такая диаграмма.

Диаграммы модулей

Диаграммы модулей - физическая модель системы.

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

Диаграммы модулей образуют иерархию.

Для каждого модуля можно отдельно показать на диаграмме его файл-заголовок и файл реализации

Диаграмма процессов

Изображаются процессоры и устройства, образующие физическую конфигурацию прикладной системы

ЧАСТЬIII

2)Базовыеструктурыданных (RTTI). Динамическаяидентификациятипаданных (англ. Run-timetypeinformation, Run-timetypeidentification, RTTI) — механизм в некоторых языках программирования, который позволяет определить тип данных переменной или объекта во время выполнения программы.

Компилятор Delphi сохраняет в исполняемом файле программы информацию обо всех классах, используемых в ней. При создании любого объекта в памяти перед ним (по отрицательным смещениям) располагается заголовок, в котором есть в том числе ссылка на структуру-описатель класса этого объекта. Встроенные в язык функции работают с этой информацией прозрачно для программиста. Оператор is позволяет проверить, является ли объект или тип наследником определённого типа, а оператор as является аналогом dynamic_cast в C++.

Заголовки объектов — также неявно — используются для автоматического управления памятью.

3)Класс TObject является родоначальником всей иерархии использующихся в Delphi классов VCL. Он реализует функции, которые обязательно будет выполнять любой объект, который может быть создан в среде разработки.

Тип TObject определяет тип базового класса. Он является самым старым прародителем всех классов - каждый класс, в конечном счете, получен из TObject.
Из-за этого, каждый объект унаследовал методы TObject.
Методы TObject относятся к двум категориям - класс и не класс. Когда предустановленно ключевое слово Class, метод можно вызвать и в объекте класса, и в классе непосредственно. Такой статический метод не может обратиться ни к каким полям класса, потому что сам класс не имеет никаких данных, только объекты - имеют данные.
Некоторые ключевые (статические) методы Class:
functionClassName Выдает имя класса как строку
ClassParentВыдает имя родителя класса
ClassInfoВыдает RunTime информацию класса
InstanceSizeРазмер объекта класса в байтах
NewInstanceСоздает новый объект класса
Некоторые ключевые методы Object:
Create Создатель пустого объекта
FreeВызывает Destroy для ненулевых объектов
DestroyВысвобождение памяти объекта
AfterConstruction Вызывается после построения
BeforeDestructionВызывается перед разрушением

5)Доступ к RTTI и методы класса.Корневой базовый класс для всех VCL объектов и компонент, TObject, содержит ряд методов для работы с runtime информацией. Наиболее часто используемые из них приведены ниже

Наиболее часто используемые методы класса TObject для работы с RTTI

Метод Описание
ClassType Возвращает тип класса объекта. Вызывается неявно компилятором при определении типа объекта при использовании операторов is и as
ClassName Возвращает строку, содержащую название класса объекта. Например, для объекта типа TForm вызов этой функции вернет строку "TForm"
ClassInfo Возвращает указатель на runtime информацию объекта
InstanceSize Возвращает размер конкретного экземпляра объекта в байтах.
   

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

Существует три принципа, составляющих суть ООП — инкапсуляция, наследование и полиморфизм.

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

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

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

Наследование

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

TNewObject = class(TOldObject);

является потомком или дочерним классом старого класса TOldObject, называемого предком или родительским классом, и добавляются к нему новые поля, методы и свойства — иными словами, то, что нужно при переходе от общего к частному. Прекрасный пример, иллюстрирующий наследование, представляет собой иерархия классов VCL (в ObjectPascal все классы являются потомками класса TObject).

Унаследованные от класса-предка поля и методы доступны в дочернем классе; если имеет место совпадение имен методов, то говорят, что они перекрываются.

8)Поля и свойства класса. По́лекла́сса или атрибу́т (переменная-член, datamember, classfield, instancevariable) в объектно-ориентированном программировании — переменная, связанная с классом или объектом. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени. Обычно тип данных каждого поля задаётся в описании класса, членом которого является поле.

Структурные типы, поддерживаемые большинством языков программирования (называемые структурами (structure) в Си, записями (record) в Паскале и т. д.), являются частным случаем классов — а именно, классами из одних только полей. Вся информация, относящаяся к полям классов, в равной степени относится и к структурным типам.

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

Согласно принятому обозначению в Delphi имена полей должно начинаться с буквы F (Field – поле), а имена классов с буквы T.

Изменение значений полей обычно выполняется с помощью методов и свойств объекта.

Свойства реализуют механизм доступа к полям. Каждому свойству соответствует поле, содержащее значение свойства, и два метода, обеспечивающих доступ к этому полю.

Описание свойства начинается со слова property, при этом типы свойства и соответствующего поля должны совпадать.

Метод представляет собой подпрограмму (процедуру или функцию), предназначенную для обработки полей.

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

9)Статические методы класса.При описании нового класса в Delphi можно добавить новые методы и свойства, а также можно перегрузить родительские методы. Существуют четыре метода: Статические – все методы по умолчанию. При переопределении метода в классе – наследнике то отменятся родительский метод для всех объектов этого класса.

10,11)Виртуальный метод (виртуальная функция) — в объектно-ориентированном программировании метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения. Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен.

Виртуальный и динамический методы не имеют ничего общего с методами с такими же именами в классах – наследниках. Очень часто применяется полиморфизм – когда создается виртуальный метод для объектов базового класса. При объявлении таких методов добавляются ключевые слова dynamic или virtual, которые завершают объявление метода. Для перегрузки метода ставим слово override.

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

12)ПолиморфизмВ Delphi полиморфизм реализован с помощью так называемой виртуальной таблицы методов (или VMT).

Таблица виртуальных методов (англ. virtualmethodtable, VMT) — координирующая таблица или vtable — механизм, используемый в языках программирования для поддержки динамического соответствия (или метода позднего связывания).

Допустим, программа содержит несколько классов в иерархии наследования: базовый классCat и два подклассаHouseCat и Lion. Класс Cat определяет виртуальную функциюspeak, так что его подклассы могут обеспечивать соответствующую реализацию (т.е. или «мяу» или «рык»).

Когда программа вызывает метод speak по указателю Cat (который может указывать на класс Cat или любой подкласс Cat), контекстное окружение (среда запуска) должна уметь определять, какая именно реализация вызывается, в зависимости от текущего типа указываемого объекта.

Достаточно часто виртуальные методы забывают перекрыть с помощью ключевого слова override. Это приводит к закрытию метода. В этом случае замещения методов в VMT не произойдет и требуемая функциональность не будет получена.

Эта ошибка отслеживается компилятором, который выдаёт соответствующее предупреждение.

Важнейшие классы. TScreen

Класс TScreen инкапсулирует состояние экрана или выводимой области. Delphi во время работы автоматически создаст экземпляр класса Screen. Для его использования в раздел uses нужно включить модуль Forms.

Свойства TScreen

ActiveControl
Это свойство возвращает объект TWinControl, имеющий фокус ввода. Обычно оно используется для реализации команд Copy, Cut и Paste для текстовых управляющих элементов. Следующий код, помещенный вобработчикTMenuItem, выполняет функцию Copy.

ActiveForm
Это свойство возвращает объект TForm, имеющий фокус ввода. Если приложение неактивно, свойство указывает, какая именно форма будет иметь фокус ввода при активизации приложения. В качестве примера используем свойство для создания мигающего заголовка формы, чтобы привлечь внимание пользователя.

Cursor
Это свойство определяет форму указателя мыши для всего приложения. Обычно оно используется для отображения песочных часов, чтобы в то время, пока пользователь думает о сложной работе, выполняемой приложением, немного передохнуть.

Forms и FormCount

Эти свойства возвращают список форм и их количество. Работа с ними ничем не отличается от работы со списком дочерних окон, описанных в разделе "MDIChildren и MDIChildCount".

Height и Width

Это наиболее полезные свойства, возвращающие высоту и ширину экрана в пикселях. Они могут применяться во многих ситуациях, например при определении местоположения формы. Вот как поместить форму в центре экрана.

Важнейшие классы. TPrinter

Вывод содержимого формы на печать.

Иногда в программе требуется просто получить твердую копию экранной формы. В Delphi это делается более, чем просто - у объекта TForm есть метод Print, который и нужно вызвать в нужный момент.

Графическая печать (объект TPrinter)

Свойства:

Aborted:Boolean - показывает, прервал ли пользователь работу принтера методом Abort. Содержит значение True, если выполнение предыдущего задания на печать было досрочно прекращено.

PropertyCanvas:TCanvas - канва, место для вывода графики; основной инструмент для создания изображения на листе бумаги

PropertyCopies: integer– указывает требуемое количество копий документа.

PropertyFonts:TStrings - список всех доступных принтеру шрифтов.

PropertyHandle:HDC - используется при прямых вызовах Windows API.

PropertyOrientation - ориентация страницы, вертикально (poPortrait) или горизонтально (poLandscape).

PropertyPageWidth: integer-ширина страницы в пикселах принтера

PropertyPageHeight: integer- высота страницы в пикселах принтера

PropertyPageNumber: integer– cодержит номер печатаемой страницы документа (начинается с 1).

PropertyPrinters: Tstrings–содержит список всех доступных принтеров.

PropertyPrinterIndex: integer– содержит индекс принтера, назначенного принтером по умолчанию в списке Printers окна параметров печати.

PropertyPrinting:Boolean – содержит значение True, если принтер занят печатью документа.

PropertyTitle: String – заголовок для PrintManager и для заголовка перед выводом на сетевом принтере; содержит имя задания на печать

Методы:

ProcedureAbort – досрочно прекращает печать документа.

ProcedureBeginDoc – начинает печать документа.

ProcedureEndDoc – завершает печать документа.

ProcedureNewPage – начинает печать новой страницы документа.

Важнейшие классы. TForm

Свойства TForm
Класс TForm предоставляет возможность изменять его поведение и внешний вид формы с помощью ряда свойств.

Active
Свойство Active определяет, имеет ли форма фокус ввода. Если имеет, оно возвращает True, если нет False. Windows выводит заголовок активной формы цветом, отличающимся от цвета неактивных.

ActiveControl
Свойство ActiveControl указывает на потомка TWinControl, имеющего в настоящий момент фокус ввода. Вы можете установить значение во время создания программы, определив, какой элемент будет иметь фокус ввода при инициализации формы. Назначение ActiveControl во время работы программы— установка фокуса ввода в поле с некорректно введенными данными.

AutoScroll, HorzScrollBar и VertScrollBar
СвойствоAutoScroll управляет появлением полос прокрутки в форме, размеры которой не позволяют вывести все ее элементы одновременно. Если свойство равно True, и вы изменили размеры так, что не все элементы формы видны, в форме автоматически появляются полосы прокрутки. Если же значение свойства— False, вы теряете доступ к элементам формы, не поместившимся на экране.

BorderIcons
Свойство Borderlcons представляет собой набор логических значений, использующийся для определения набора пиктограмм в заголовке формы.
Значения biMinimize и biMaximize создают пиктограммы, которые позволяют свернуть и развернуть форму с помощью мыши.

BorderStyle
Свойство BorderStyle перечислимого типа позволяет определить:

* вид заголовка формы

* доступные кнопки в заголовке формы

* отображение строки меню

* поведение границ формы

Canvas

Используя TCanvas можно

• Назначить тип кисти, карандаша и шрифта.

• Рисовать, осуществлять заливку различных фигур и линий.

• Писать текст.

• Отрисовывать графические изображения.

Height и Width
Эти свойства определяют высоту и ширину формы в пикселях и обычно используются для изменения размеров формы во время работы на дисплеях разной разрешающей способности. Вот пример увеличения размеров формы до размеров всего экрана.

ClientHeight и ClientWidth
Окно состоит из двух частей — клиентской и не клиентской. Обычно приложение выводит изображения только в клиентской области, размер которой возвращается через свойства ClientHeight и ClientWidth. Обычно эти свойства используются для того, чтобы убедиться, что в форме может выводиться весь объект определенного размера.

Height и Width
Эти свойства определяют высоту и ширину формы в пикселях и обычно используются для изменения размеров формы во время работы на дисплеях разной разрешающей способности. Вот пример увеличения размеров формы до размеров всего экрана.

ClientHeight и ClientWidth
Окно состоит из двух частей — клиентской и не клиентской. Обычно приложение выводит изображения только в клиентской области, размер которой возвращается через свойства ClientHeight и ClientWidth. Обычно эти свойства используются для того, чтобы убедиться, что в форме может выводиться весь объект определенного размера.

Важнейшие классы TIniFile

Для хранения некоторых данных, например параметров программы, для последующего их использования можно применять реестр или ini файлы. Имеется в виду хранение установок программы во время бездействия программы, чтобы при последующем запуске, она восстанавливала свое состояние. В ini файлах можно также хранить и скрытые от пользователя данные, такие как серийный номер программы, срок истечения лицензии, закодированные пароли на запуск и пр. Такие данные естественно не защищены от постороннего вмешательства, но при умелом использовании кодирующих средств, можно исключить ручное редактирование этих параметров.

TIniFile является низкоуровневым 16-битным классом, совместимым с операционной системой windows 3.x файловой системы хранения параметров в INI файлах. Для хранения параметров в современных программах рекомендуется использовать реестр. Но, как правило, не так просто такую программу скопировать на другой компьютер с переносом всех настроек, а совместное копирование ini файла избавит вас от такой проблемы.
Класс TIniFile находится в модуле IniFiles, который надо указывать в разделе подключаемых модулей Uses.

Объявление переменной, в которую будем заносить (или читать) данные:

VarIniFile :TIniFile;

где: IniFile - любой идентификатор, который будет использоваться в программе. Можно, например, для сокращения просто i.
Дальше переменную необходимо создать:

IniFile := TIniFile.Create('Название_файла');

где: Название_файла - файл, в котором будут храниться данные. Если вы напишите, например project.ini без указания пути к файлу, то такой файл создастся или будет читаться из каталога WINDOWS. Для размещения ini файла в каталоге программы, или относительно его (например КАТАЛОГ_ПРОГРАММЫ\INI) указывайте вместе с названием файла текущий каталог программы.
В конце использования переменной ее необходимо уничтожить и освободить занимаемую память. Это делается одной командой:

IniFile.Free;

21)Обработка событий

Рассмотрим действия операционной системы Windows при нажатии левой кнопки мыши на кнопку в окне.

  1. Нажали на левую кнопку мыши. В регистр фиксации событий(РФС) поступил сигнал, соответствующий левой кнопке мыши разряд был установлен в <1>.
  2. Windowsосуществляет периодический опрос РФС. Обнаружив <1>, он узнает, что произошло событие от нажатия левой кнопки мыши. Сигнал принят, а соответствующий разряд РФС записывается в <0>.
  3. Windowsопределил, что во время нажатия левой кнопки мыши курсор находился в окне приложения. Если у приложения нет окна, то рассматриваемый процесс невозможен. В очередь вычисляемого приложения отправляется сообщение wm_LButtonDownсоответствующий нажатию лево кнопки мыши.
  4. У приложения есть свой метод Run.

Procedure TApplication.Run Procedure TApplication.Run

Begin begin

Repeat if not Process Method then Idle

Handle Message end;

Until Terminated;

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

  1. ProcessMethod определяет, что курсор находился над кнопкой и посылает соответствующее сообщениекнопке

cn_xxx (component Notify)

  1. Кнопка посылает себе сообщение с целью узнать, может ли кнопка обработатьсообщение (может, она заблокирована или затенена). Если может выполнить то исполнение шага 7,иначе 13.
  2. Кнопка посылает сообщение вида

cm_xxx (componentmessage)

хозяину, владельцу узнать нет ли препятствий для обработки сообщения.

  1. Аналогичен шагу 6.
  2. Аналогичен шагу 7.
  3. Аналогичен шагу 6.

11,12,13. Ответы на запрос о возможности обработки сообщения.

14. ProcessMethod получив отрицательный ответ вызывает метод обработки сообщений DefaultHandler из класса TObject. Если получен положительный ответ, то отправляется сообщение <14> кнопке :”можно обработать сообщение”.

15. Кнопка пытается обработать сообщение, мог ут быть отправлены сообщения другим компонентам, все зависит от того, как реализован метод OnClickButton.

В конце приложению поступает ответ, что сообщение обработано. Последний шаг состоит в извлечении сообщений из очереди.

ЧАСТЬ II

2) Инкапсуляцияозначает объединение в одном объекте данных и действий над ними. Инкапсуляция - это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации.

Инкапсуляция скрывает детали реализации объекта.

3)Модульность - это свойство системы, которая была разложена на внутренне связные, но слабо связанные между собой модули.Другими словами, следует стремиться построить модули так, чтобы объединить логически связанные абстракции и минимизировать взаимные связи между модулями.

модульность; она позволяет:

- разбить программу на модули и локализовать область действия подпро­
грамм и переменных;

- изменять локальные подпрограммы, не изменяя других программных моду­
лей;

1)Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

абстракция данных; абстрактный тип данных определяется на основе некоторого их представления и множества подпрограмм для обработки данных
абстрактного типа;

4)Иерархия - это упорядочение абстракций, расположение их по уровням.

Примеры иерархии: одиночное наследование.

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

6)Параллелизм- это свойство, отличающее активные объекты от пассивных.

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

5)Типизация данных предназначена как для облегчения составления программ, так и для автоматического выявления ошибок.

Типизация - это способ защититься от использования объектов одного класса вместо другого, или по крайней мере управлять таким использованием.

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

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

8)Логическая модель отражает логические связи между атрибутами объектов вне зависимости от их содержания и среды хранения и мо­жет быть реляционной, иерархической или сетевой. Таким образом, логическая модель отображает логические связи между информаци­онными данными в данной концептуальной модели.

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

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

9)В статической модели описываются допустимые состояния системы. В статических моделях описываются типы объектов в системе, их свойства и связи. Описывая объекты, они определяют, разумеется, и их имена. Достичь соглашения по именованию всех объектов означает выиграть половину битвы, именно поэтому информационные модели XML иногда называют словарями.

При построении статической информационной модели необходимо пройти следующие этапы:

Этап 1. Идентификация понятий, присвоение им имен и их определение

Этап 2. Организация понятий в иерархию классов

Этап 3. Определение связей, множественности и ограничений

Этап 4. Добавление свойств для конкретизации деталей значений, связанных с объектами

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

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

Существует несколько подходов к динамическому моделированию:

  • Модели рабочих процессов
  • Модели потоков данных
  • Объектные модели
  • Жизненные циклы объектов
  • Варианты использования
  • Диаграммы взаимодействия объектов

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

Диаграмма объектов

Диаграмма объектов (Objectdiagram) — демонстрирует полный или частичный снимок моделируемой системы в заданный момент времени. На диаграмме объектов отображаются экземпляры классов (объекты) системы с указанием текущих значений их атрибутов и связей между объектами.

12) Диаграммы взаимодействия описывают поведение взаимодействующих групп объектов (в рамках варианта использования или некоторой операции класса). Как правило, диаграмма взаимодействия охватывает поведение объектов в рамках только одного потока событий варианта использования. На такой диаграмме отображается ряд объектов и те сообщения, которыми они обмениваются между собой. Существует два вида диаграмм взаимодействия: диаграммы последовательности и кооперативные диаграммы.

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

Наши рекомендации