Объектно-ориентированное программирование

Автор: Пользователь скрыл имя, 18 Сентября 2011 в 21:41, курсовая работа

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

Microsoft Visual Basic — средство разработки программного обеспечения, разрабатываемое корпорацией Microsoft и включающее язык программирования и среду разработки. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка — языка Бейсик, у которого есть немало диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Среда разработки VB включает инструменты для визуального конструирования пользовательского интерфейса.

Оглавление

ВВЕДЕНИЕ 2
1.ЗАДАЧА 1 6
2. ЗАДАЧА 2 12
3. ЗАДАЧА 3 15
4. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД 18
5. ОБЪЕКТ МОДЕЛЬ 20
5.1 Абстрагирование 20
5.2 Инкапсуляция 21
5.3 Модульность 22
5.4 Иерархичность 25
5.5 Типизация 26
5.6 Паралеллизм 27
5.7 Сохраняемость 27
6. ОБЪЕКТ 29
6.1 Состояние 29
6.2 Поведение 29
6.3 Идентичность 30
6.4 Отношения между объектами 30
7. КЛАССЫ 31
7.1 Ассоциация; 31
7.2 Агрегация; 32
7.3 Обобщение; 33
7.4 Зависимость; 34
7.5 Инстанцирование. 35
ЗАКЛЮЧЕНИЕ 36
ЛИТЕРАТУРА 37

Файлы: 1 файл

Курсовой информатика.doc

— 201.50 Кб (Скачать)

     – типизация;

     – параллелизм;

     – сохраняемость.

     Называя их дополнительными, мы имеем в виду, что они полезны в объектной  модели, но не обязательны.

       Абстрагирование

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

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

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

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

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

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

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

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

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

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

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

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

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

       Модульность

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

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

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

      В объектно-ориентированном программировании по модулям необходимо распределить классы и объекты.

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

      – конечной целью разбиения программы  на модули является снижение затрат на программирование за счет независимой разработки и тестирования;

      – структура модуля должна быть достаточно простой для восприятия;

      – реализация каждого модуля не должна зависеть от реализации других модулей;

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

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

      – особенности системы, подверженные изменениям, следует скрывать в отдельных модулях;

      – в качестве межмодульных можно использовать только те элементы, вероятность изменения которых мала;

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

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

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

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

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

      В результате всего сказанного сформулируем следующее определение модульности:

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

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

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

     Иерархичность

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

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

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

     Основными видами иерархических структур применительно  к сложным системам являются иерархии типа "является" и иерархии типа "имеет".

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

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

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

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

     Иерархия  "имеет" вводит отношение агрегации (целое/часть). В иерархии "имеет" некоторая абстракция находится на более высоком уровне, чем любая из использовавшихся при ее реализации.

Информация о работе Объектно-ориентированное программирование