Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP.doc
Скачиваний:
6
Добавлен:
16.09.2019
Размер:
642.56 Кб
Скачать

Основные принципы объектно-ориентированного программирования:

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

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

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

Принципы ООП:

  1. Абстрагирование – процесс выделения абстракций в предметной области задач.

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

  1. Ограничение доступа – сокрытие отдельных элементов реализации абстракций, не затрагивающих существенных характеристик ее как целого. Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракции: 1. Интерфейс – совокупность доступных извне элементов реализации абстракции (свойства, методы, события); 2. Реализация – совокупность недоступных извне элементов реализации абстракции (ее внутренняя реализация и механизмы поведения). Ограничение доступа позволяет разработчику выполнять конструирование системы поэтапно и легко модифицировать реализацию отдельных объектов, не нарушая их внутренней целостности. Сочетание и объединение всех свойств объекта, определяющих его состояние и поведение в единую абстракцию, и ограничение доступа у реализации их свойств называют инкапсуляцией.

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

  3. Иерархия – ранжированная (упорядоченная) система абстракций.

В ООП используют два вида иерархий:

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

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

  1. Типизация – ограничения, накладываемые на свойства объектов и препятствующие взаимозаменяемости абстракции различных типов. В языках с жесткой типизацией для каждого программного объекта объявляется тип, который определяет допустимое множество операций над соответствующим программным объектом. Типизация обеспечивает: 1. Раннее обнаружение ошибок, связанных с недопустимыми операциями над объектами; 2. Упрощение документирования; 3. Возможность генерации более эффективного кода.

Тип может связываться с программным объектом статически (определяется на этапе компиляции – раннее связывание) и динамически (определяется во время выполнения программы – позднее связывание).

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

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

Различают:

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

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

  3. Глобальные объекты, существующие, пока программа загружена в память.

  4. Сохраняемые объекты, данные которых хранятся в файлах внешней памяти между сеансами работы программы.

Язык считается объектно-ориентированным если в нем реализованы первые 4 рассмотренные принципа.

Этапы разработки программных систем с использованием ООП:

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

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

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

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

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

В качестве кандидатов на роль объектов могут быть:

1) Физические и материальные объекты (дом, стол, стул…);

2) Характеристики объектов (цвет, размер, стиль…);

3) Место действия (офис, банк, аэропорт…);

4) Роль человека (продавец, покупатель, менеджер…);

5) Абстрактные понятия (графические образы, несуществующие элементы виртуального мира, философские образы с четко определенными категориями…);

6) Организация или ее элемент (конкретная фирма, ее отделы, направления и другие подразделения…);

7) Событие (покупка, продажа, сделка…);

8) Совокупность записей (чек, книга учета, справочник…).

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

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

Принято различать два типа связей между понятиями:

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

  1. * от 0 до бесконечности

  2. <Целое>-* - это заданного числа до бесконечности

  3. <Целое> - точно определенное число объектов

  4. <Целое1>,…<ЦелоеN> - несколько значений точно определенного числа 1

  5. <Целое1>-<Целое2> - диапазон объектов.

  1. Обобщение – отношение между однотипными имеющими общие признаки, но, все же, разными понятиями, при котором одно из понятий является обобщающим и включает в себя второе понятие. Обобщающее понятие называют супертипом.

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

Наименование варианта

Поиск записи

Цель

Поиск записи в файле

Действующие лица

Пользователь

Краткое описание

Заполнение шаблона поиска и поиск информации в файле

Тип

Основной

Наименование варианта

Ввод имени файла

Цель

Настройка на нужный файл

Действующие лица

Пользователь

Краткое описание

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

Тип

Дополнительный

Наименование варианта

Работа с меню

Цель

Возможность выбора операции

Действующие лица

Пользователь

Краткое описание

Выбор необходимой операции

Тип

Вспомогательная

Удаление файлов:

Для удаления файлов используется метод Delete, имеющий следующий синтаксис:

  1. Для класса File – Sub Delete (ByVal path As String)

  2. Для класса FileInfo - Sub Delete ()

Перемещение файла:

Применяется с использованием специального метода Move класса File или метода Move To для класса FileInfo.

Синтаксис:

1)Sub Move(ByVal F1 As String, ByVal F2 As String)

2)Sub MoveTo(ByVal F2 As String)

Где F1 – полное имя копируемого файла, а F2 – новое имя файла и путь к нему.

Копирование файлов:

Применяется с использованием специального метода Copy класса File или метода CopyTo для класса FileInfo.

Синтаксис:

1)Sub Copy(ByVal F1 As String, ByVal F2 As String, ByVal P1 As Boolean)

Где F1 – полное имя копируемого файла, F2 – новое имя файла и путь к нему, а P1 – параметр, определяющий возможность перезаписи файла, если он уже существует. В случае False – перезапись запрещена.

Объекты и сообщения:

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

Реакция объекта на сообщение может зависеть от его состояния.

Состояние объектов характеризуется набором конкретных значений его свойств. В процессе работы перечень характеристик объекта, как правило, не меняется. Могут изменяться лишь конкретные значения этих характеристик.

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

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

Если существуют свойства, которые отличают объект от всех других объектов группы, они представляют его индивидуальность – в этом случае к объекту в группе приходится обращаться персонально.

<Имя Группы>.<Имя Объекта>.<Индивидуальное свойство> = <Значение>

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

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

Модификация может быть синхронной – в этом случае объект-отправитель дожидается завершения операции и только потом продолжает решение; асинхронной – в этом случае объект продолжает решение задачи, не дожидаясь результатов модификации.

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

Полный список всех возможных операций над объектами включает:

  1. Создание объекта

  2. Уничтожение объекта

  3. Модификация

  4. Селекция

  5. Итерация

При выполнении объектной декомпозиции устанавливаются отношения между объектами двух типов:

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

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

Интерфейс разрабатываемых приложений:

Общие рекомендации по разработке интерфейса (принципы разработки):

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

  2. Удобство и простота работы – интерфейс должен быть интуитивно понятным. Желательно, чтобы все действия легко запоминались и не требовали многократных мелких действий (лишних нажатий кнопок, вызов промежуточного окна диалога и т.д.).

  3. Внешний дизайн – интерфейс должен обеспечивать длительную работу пользователя и не утомлять его зрение.

  4. Не перегруженность форм – они должны быть оптимально загружены элементами управления. При необходимости дополнительного места на форме необходимо использовать дополнительные вкладки или страницы форм.

  5. Группировка – элементы управления следует группировать по смыслу, используя соответствующие контейнеры.

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

Типы интерфейсов:

В настоящее время в VB используются три основных базовых типа интерфейсов:

1. Однодокументный интерфейс (SDI)

2. Многодокументный интерфейс (MDI)

3. Интерфейс типа проводник

SDI-интерфейс – позволяет работать только с одним документом в одном окне. Для работы с несколькими документами и различными данными SDI-интерфейс требует многократного запуска приложений. При загрузке большого количества SDI-приложений быстро переполняется ОЗУ, за счет загрузки одних и тех же элементов меню и т.д. Этот интерфейс целесообразно использовать при работе с небольшим количеством форм документов. Однако он проще в создании и функционально меньше при работе с одним документом. Обычно состоит из главного меню, панели инструментов, окна приложения, элементов управления для работы с данными и строки состояния.

MDI-интерфейс – многодокументный интерфейс, позволяющий в одной программе открывать множество документов. Для него характерным является наличие главного MDI-окна, называемого родительским и необходимого для работы подчиненных окон, называемых дочерними. Количество дочерних окон ограничивается только ОЗУ ПК. В состав MDI-интерфейса входит главное меню, панель инструментов, главное окно приложения, дочерние окна, элементы управления для работы с данными, расположенные в дочерних окнах и строки состояния. Родительское окно является контейнером для всех дочерних. При его минимизации минимизируются все дочерние окна. В случае если в родительском окне не помещается хотя бы одно дочернее, автоматически появляются полосы прокрутки. Для создания родительского окна необходимо свойству формы IsMDIConteiner придать значение True. Дочерние окна могут располагаться только внутри родительского и не могут быть вынесены или перемещены за его границы. При сворачивании дочернего окна, его значок отображается внизу окна-родителя.

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

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

Элементы интерфейсов:

Меню:

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

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

  1. Menu Strip – предназначен для создания главного меню приложений;

  2. Context Menu Strip – для создания контекстного меню.

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

Для открытия редактора меню необходимо выбрать расположенный под формой соответствующий ЭУ.

Для добавления различных элементов меню необходимо щелкнуть правой кнопкой и выбрать пункт Insert. Для удаления – Delete.

Иерархия элементов определяется использованием стрелок перемещения. Свойство меню, определяющее его имя – Name.

Текст меню определяется свойством – Text.

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

ООП Лекция от 13.03.2012

Строка состояния

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

Для добавления строки состояния в проект используется элемент управления StatusStrip. По умолчанию строка располагается в нижней части формы. Однако, используя свойство Dock, ее положение можно изменить: 1. Bottom (снизу); 2. Fill (на всю форму); 3. Left; 4. None (в любом месте формы); 5. Right; 6. Top.

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

Панель инструментов

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

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

Основные свойства

Dock - определяют положения панели инструментов (см. строка состояния),

Visible – определяет видимость панели инструментов,

Enable – определяет возможность доступа к нему.

Диалоговые окна

  1. Открытие файла

- служит для поиска и открытия файлов, используемых в программе (используя ресурсы ОС). Для открытия файлов служит специальный элемент управления OpenFileDialog. Он имеет стандартный вид типового окна открытия файла Windows.

Основные свойства:

AddExtension – при значении True автоматически добавляет расширение имени файла,

CheckFileExist – проверяет существование файла с указанным именем при значении True, если файл не существует выдается предупреждение,

CheckPathExist – в положении True проверяет существование пути к указанному файлу. Если путь не реальный, выдается предупреждение,

DefaultExt – Определяет расширение файла, добавленное по умолчанию,

FileName – определяет имя и полный путь к выбранному файлу,

Filter – задает значение, определяющее тип отображаемых файлов,

MultiSelect – по умолчанию установлено на одиночный выбор (False), возможен перевод к множественному,

Title – позволяет задать наименование, выводимое в строке заголовка окна.

  1. Сохранение файла

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

Для применения окна используется специальный элемент управления SaveFileDialog. Он во всем аналогичен элементу открытия и имеет свои дополнительные свойства:

OverWritePrompt – при значении True этого свойства в случае выбора существующего файла выдается сообщение, что данный файл будет перезаписан;

CreatePrompt – при значении True в случае указания несуществующего файла выдается сообщение о создании нового файла;

3. Настройки шрифтов текста

- применяется для управления шрифтами с использованием стандарта Microsoft. Реализуется с применением специального элемента управления FontDialog. Основные свойства:

AllowSimulations – задает использование курсива, жирного курсива и жирных шрифтов;

AllowVectorFonts – в положении True разрешает отображать векторные шрифты;

AllowVerticalFonts – в положении True позволяет отображать как вертикальные, так и горизонтально ориентированные шрифты. В положении False возможно отображение только горизонтальных шрифтов;

Color – задает или возвращает цвет текста;

FixedPitcOnly – в положении True позволяет отображать моноширинные шрифты;

Font – задает или возвращает указанный в окне настройки шрифт;

MaxSize/MinSize – задает максимальные и минимальные размеры шрифта;

ShowApply – в положении True отображает кнопку «применить»;

ShowColor – определяет доступность изменения цвета (по умолчанию False);

ShowEffects - определяет, расположены ли в окне элементы управления для задания подчеркнутого и зачеркнутого шрифта.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]