ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 27.08.2020
Просмотров: 932
Скачиваний: 2
2.Понятие объектно-ориентированного анализа. Классы и объекты. Основные отношения между классами и объектами.
По теории Г.Буча объектно-ориентированный анализ - это методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, выявленных в предметной области. При этом предметная область или домен — это пространство, в котором формулируется определенная задача, т.е. набор понятий, представляющих важные аспекты решаемой задачи.
В результате объектно-ориентированного анализа строится концептуальная база — объектная модель, которая включает в себя 4 главных элемента:
-
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя.
-
Инкапсуляция - это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации.
-
Модульность - это свойство системы, которая была разложена на внутренне связные, но слабо связанные между собой модули.
-
Иерархия - это упорядочение абстракций, расположение их по уровням.
Эти элементы являются главными в том смысле, что без них модель не будет объектно-ориентированной. Кроме главных, имеются еще 3 дополнительных элементы:
-
Типизация - это способ защититься от использования объектов одного класса вместо другого, или по крайней мере управлять таким использованием.
-
Параллелизм - это свойство, отличающее активные объекты от пассивных.
-
Сохраняемость - способность объекта существовать во времени, переживая породивший его процесс, и (или) в пространстве, перемещаясь из своего первоначального адресного пространства.
Важным элементом объектной модели является объект. С точки зрения восприятия человеком объектом может быть:
-
осязаемый и (или) видимый предмет;
-
нечто, воспринимаемое мышлением;
-
нечто, на что направлена мысль или действие.
Объект обладает состоянием, поведением и идентичностью. Состояние объекта характеризуется перечнем (обычно статическим) всех свойств данного объекта и текущими (обычно динамическими) значениями каждого из этих свойств. Поведение - это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта и передачи сообщений. Идентичность - это такое свойство объекта, которое отличает его от всех других объектов.
Для инициализации объектов в процессе их конкретизации используются специальные методы, называемые конструкторами. Процесс создания объекта называется реализацией.
В объектной модели объект не существует сам по себе, а обычно взаимодействует с другими объектами. Выделяют два основных типа взаимодействия объектов между собой: связи и агрегация. Связи характеризуют равноправные или клиент-серверные отношения между объектами. Участвуя в связи, объект может выполнять одну из следующих трех ролей: актер (объект может воздействовать на другие объекты, но сам никогда не подвергается воздействию других объектов), сервер (объект может только подвергаться воздействию со стороны других объектов, но он никогда не выступает в роли воздействующего объекта) или агент (такой объект может выступать как в активной, так и в пассивной роли; как правило, объект-агент создается для выполнения операций в интересах какого-либо объекта-актера или агента). Агрегация описывает отношения целого и части, приводящие к соответствующей иерархии объектов, причем, идя от целого (агрегата), мы можем придти к его частям (атрибутам).
Для организации взаимодействия каждый объект должен иметь интерфейс, который представляет собой список служб, предоставляемых компонентом. Интерфейс бывает:
-
открытым (public) – разрешение доступа для всех объектов;
-
защищенным (protected) – разрешение доступа только самому классу и его подклассам;
-
закрытым (private) – разрешение доступа только самому классу.
Структура и поведение схожих объектов определяет общий для них класс. Классы так же как и объекты вступают в отношения. Выделяют 4 главных типа отношений между классами. Ассоциация — это смысловая связь: один-к-одному, один-ко-многим или многие-ко-многим. Наследование — дочерний класс может унаследовать структуру и поведение родительских классов. Агрегация описывает отношения целого и части (“Has-a” — «содержит»: один объект содержится в другом объекте). Использование – это агрегация, когда одна из сторон (клиент) пользуется услугами второй стороны (сервера).
Моделирование в процессе объектно-ориентированного анализа позволяет решить 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).
Событие в объектно-ориентированное программировании — это сообщение, которое возникает в различных точках исполняемого кода при выполнении определённых условий. События предназначены для того, чтобы иметь возможность предусмотреть реакцию программного обеспечения.
Для решения поставленной задачи создаются обработчики событий: как только программа попадает в заданное состояние, происходит событие, посылается сообщение, а обработчик перехватывает это сообщение. В общем случае в обработчик не передаётся ничего, либо передаётся ссылка на объект, инициировавший (породивший) обрабатываемое событие. В особых случаях в обработчик передаются значения некоторых переменных или ссылки на какие-то другие объекты, чтобы обработка данного события могла учесть контекст возникновения события.
Самое простое событие — это событие, сообщающее о начале или о завершении некоторой процедуры. Событие, по сути, сообщает об изменении состояния некоторого объекта. Наиболее наглядно события представлены в пользовательском интерфейсе, когда каждое действие пользователя порождает цепочку событий, которые, затем обрабатываются в приложении.
4. Классификация данных. Типы данных. Совместимость типов. Константы и переменные. Работа с данными статической структуры. Простые типы данных и работа с ними.
Данные – информация представленная в формальном виде, предназначенная для обработки на ЭВМ.
В любом языке программирования каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип данных.
Тип данных – это множество допустимых значений, которые может принимать тот или иной объект, а также множество допустимых операций, которые применимы к нему. В современном понимании тип также зависит от внутреннего представления информации.
Таким образом, данные различных типов хранятся и обрабатываются по-разному. Тип данных определяет:
-
внутреннее представление данных в памяти компьютера;
-
объем памяти, выделяемый под данные;
-
множество (диапазон) значений, которые могут принимать величины этого типа;
-
операции и функции, которые можно применять к данным этого типа.
Базовые типы – это типы данных, которые предопределены стандартом языка, указываются зарезервированными ключевыми словами, характеризуются одним значением и внутренним представлением.
Вещественный тип – это базовый тип данных, который применяется для хранения дробных чисел в формате с плавающей точкой.
Логический (булевый) тип – это базовый тип данных, который применяется для хранения значений двузначной логики.
Неявное приведение типа – это преобразование значения переменной к новому типу, которое происходит автоматически, по правилам, заложенным в языке программирования.
Перечисляемый тип – это производный тип данных, он определяется как набор идентификаторов, являющихся именованными целыми константами, которым приписаны уникальные обозначения
Преобразование типов – это приведение значения переменной одного типа в значение другого типа.
Производные типы – это типы данных, которые задаются пользователем.
Символьный тип – это базовый тип данных, который применяется для хранения символов или управляющих последовательностей в виде кода.
Типы класса – это типы данных, экземплярами которых являются объекты.
Целочисленный тип – это базовый тип данных, который применяется для хранения целых чисел.
Явное приведение типа – это преобразование значения переменной к новому типу, при котором указывается тип переменной, к которому необходимо привести исходную переменную.