Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФОРМАТИКА 2-15.doc
Скачиваний:
21
Добавлен:
26.10.2018
Размер:
804.35 Кб
Скачать

2.Понятие объектно-ориентированного анализа. Классы и объекты. Основные отношения между классами и объектами.

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

В результате объектно-ориентированного анализа строится концептуальная база — объектная модель, которая включает в себя 4 главных элемента:

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

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

  3. Модульность - это свойство системы, которая была разложена на внутренне связные, но слабо связанные между собой модули.

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

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

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

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

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

Важным элементом объектной модели является объект. С точки зрения восприятия человеком объектом может быть:

  • осязаемый и (или) видимый предмет;

  • нечто, воспринимаемое мышлением;

  • нечто, на что направлена мысль или действие.

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

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

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

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

  • открытым (public) – разрешение доступа для всех объектов;

  • защищенным (protected) – разрешение доступа только самому классу и его подклассам;

  • закрытым (private) – разрешение доступа только самому классу.

Структура и поведение схожих объектов определяет общий для них класс. Классы так же как и объекты вступают в отношения. Выделяют 4 главных типа отношений между классами. Ассоциация — это смысловая связь: один-к-одному, один-ко-многим или многие-ко-многим. Наследование — дочерний класс может унаследовать структуру и поведение родительских классов. Агрегация описывает отношения целого и части (“Has-a” — «содержит»: один объект содержится в другом объекте). Использование – это агрегация, когда одна из сторон (клиент) пользуется услугами второй стороны (сервера).

Моделирование в процессе объектно-ориентированного анализа позволяет решить 4 различные задачи:

  • визуализировать систему в ее текущем или желательном для нас состоянии;

  • определить структуру или поведение системы;

  • получить шаблон, позволяющий затем сконструировать систему;

  • документировать принимаемые решения, используя полученные модели.

Основные принципы моделирования:

  1. Выбор модели оказывает определяющее влияние на подход к решению проблемы и на то, как будет выглядеть это решение.

  2. Каждая модель может быть воплощена с разной степенью абстракции.

  3. Лучшие модели — те, что ближе к реальности.

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

3.Понятие о системе программирования, ее основные функции и компоненты. Интерпретаторы и компиляторы. Трансляция программ. Библиотеки объектов. Интерфейсные объекты: управляющие элементы, окна, диалоги. События и сообщения

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

  • трансляторы;

  • среду разработки программ;

  • библиотеки справочных программ (функций, процедур);

  • отладчики;

  • редакторы связей и др.

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

По этому критерию можно выделить следующие уровни языков программирования:

машинные;

машинно-оpиентиpованные (ассемблеры);

машинно-независимые (языки высокого уровня).

Машинные языки и машинно-ориентированные языки — это языки низкого уровня, требующие указания мелких деталей процесса обработки данных.

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

Языки высокого уровня делятся на:

алгоритмические (Basic, Pascal, C и др.), которые предназначены для однозначного описания алгоритмов;

логические (Prolog, Lisp и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания.

объектно-ориентированные (Object Pascal, Delphi, C++, Visual Basic, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами. Программа на объектно-ориентированном языке, решая некоторую задачу, по сути описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.

Алгоритмический язык (как и любой другой язык), образуют три его составляющие: алфавит, синтаксис и семантика.

Алфавит – фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т.д.), которые могут быть использованы при написании программы.

Синтаксис - правила построения из символов алфавита специальных конструкций, с помощью которых составляется алгоритм.

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

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

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

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

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

Транслятор (англ. translator — переводчик) — это программа-переводчик. Она преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд.

Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.

Компилятор (англ. compiler — составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется. (Pascal).

Интерпретатор (англ. interpreter — истолкователь, устный переводчик) переводит и выполняет программу строка за строкой. (Basic).

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

Развитие объектно-ориентированного программирования позволило создавать библиотеки объектов. Объектная библиотека (Object Library- это модуль, который может объединять в себе различные наборы объектов, предназначенных для многократного использования. Объектная библиотека - это очень мощная структура, позволяющая хранить в себе всевозможные объекты и программные единицы. Применяя это средство многократного использования объектов, вы получаете возможность хранить в одном объекте однажды созданные объекты и программные единицы для совместной работы в других модулях. Объектная библиотека не имеет редактируемых свойств, кроме имени. Для включения в библиотеку новых объектов используется метод "Drag-and-Drop" ("перетащить и оставить").

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

Задание полного интерфейсного объекта с соответствующими интерфейсными элементами требует двух шагов:

* Построения объекта.

* Создания элемента экрана.

Как и в случае создания интерфейсный объектов, их уничтожение предполагает выполнение двух шагов:

* Уничтожение визуального интерфейсного элемента (Destroy).

* Уничтожение интерфейсного объекта (Dispose).

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

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

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