МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Интерполяционный полином Лагранжа

    представляются другими, как правило, более простыми объектами. Поведение

    описывается обменивающимися сообщениями объектами.

    Объектно-ориентированным языкам присущи следующие характеристики:

    . абстрактные типы данных;

    . скрытие реализации внешнего интерфейса (инкапсуляция);

    . наследование свойств и поведения объектов;

    . динамическое связывание имени со значением;

    . полиморфизм имен сообщений;

    . автоматическое управление памятью.

    Чисто объектно-ориентированные языки, такие как Smalltalk, Eiffel,

    обладают всеми перечисленными здесь свойствами. Широко распространены

    объектно-ориентированные расширения традиционных языков (Си++, Турбо-

    Паскаль), в которых присутствуют не все объектно-ориентированные черты.

    Объектно-ориентированная база классов представляет собой иерархический

    набор (библиотеку) классов – строительных блоков для сборки новых уровней

    создаваемого программного продукта. Здесь хранятся классы «джентльменского

    набора» библиотек языков программирования, а также классы, описывающие

    понятия прикладных предметных областей.

    Классы представляют собой накопленные знания о ранее изготовленных

    продуктах. База классов должна обеспечивать легкий поиск классов, их

    изучение, модификацию, включение новых классов. Язык и база классов

    объединяются в интегрированную объектно-ориентированную среду

    программирования, в которой все средства поддержки процесса разработки

    программ написаны на данном языке и входят на равных правах в состав базы

    классов. Типичными примерами таких средств являются графический

    многооконный интерфейс с пользователем, иерархические меню, компилятор,

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

    Разработка программ по объектно-ориентированной технологии сводится к

    созданию новых классов, их тестированию и включению в состав объектно-

    ориентированной среды разработки.

    Каждый отдельный класс, благодаря своей независимости, может

    разрабатываться и тестироваться отдельно. Проверенный класс включается в

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

    Особенностью объектно-ориентированной технологии разработки программ

    является возможность быстрого прототипирования. В этом случае классы

    решаемой задачи описываются только своими основными свойствами и

    поведением, что позволяет сразу проверить главную идею решения задачи. Если

    она неверна, то может быть быстро изменена и проверена снова. При этом

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

    Рассмотрим, каким образом в объектно-ориентированной технологии

    преодолеваются три перечисленных недостатка функционального подхода.

    1. Формализация связей между этапами. Все этапы (уровни), начиная

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

    Фактически четкой границы между уровнями.

    2. Единственный неформализованный уровень – требования пользователя.

    Этот уровень вообще трудно формализуем, поскольку конечным

    пользователем или заказчиком обычно является непрофессионал в

    области программирования и ему необходимо предложить свободу в

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

    спецификаций, – перечень объектов, их свойств и взаимных действий –

    не выходит за рамки обычного описания проблемы на естественном

    языке. Переход от этого описания к спецификации программы делается

    вручную, но практически один в один с точностью до простого

    синтаксиса объектно-ориентированного языка.

    3. Гибкость. Внесение изменений внутри объекта или класса совершенно не

    затрагивает его клиентов, т.е. тех объектов, которые его используют,

    разумеется, если внешний интерфейс объекта остается неизменным. Это

    фундаментальный принцип объектно-ориентированного программирования.

    Таким образом обеспечивается гибкость при программировании снизу-

    вверх.

    В настоящее время объектно-ориентированный подход является одним из

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

    являться объектно-ориентированный анализ – методология разработки систем,

    предложенная Йорданом, объектно-ориентированное проектирование, объектно-

    ориентированное программирование, реализованное в многочисленных

    компиляторах C++, Object Pascal, Borland Pascal, Smalltalk.

    3. Объектно-ориентированный подход

    Основные идеи объектно-ориентированного подхода опираются на следующие

    положения:

    . программа представляет собой модель некоторого реального процесса,

    части реального мира;

    . модель реального мира или его части может быть описана как

    совокупность взаимодействующих между собой объектов;

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

    состояние объекта, и набором операций (действий), которые может

    выполнять объект;

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

    сообщений от одного объекта к другому. Сообщение, полученное

    объектом, может потребовать выполнения определенных действий,

    например, изменения состояния объекта;

    . объекты, описанные одним и тем же набором параметров и способные

    выполнять один и тот же набор действий, представляют собой класс

    однотипных объектов.

    С точки зрения языка программирования класс объектов можно

    рассматривать как тип данного, а отдельный объект – как данное этого типа.

    Определение программистом собственных классов объектов для конкретного

    набора задач должно позволить описывать отдельные задачи в терминах самого

    класса задач (при соответствующем выборе имен типов и имен объектов, их

    параметров и выполняемых действий).

    Таким образом, объектно-ориентированный подход предполагает, что при

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

    объектов и построены их описания, затем созданы экземпляры необходимых

    объектов и определено взаимодействие между ними.

    Понятия объекта и класса тесно связаны. Тем не менее, существует важное

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

    характеристик объекта. Класс – описание множеств объектов, которые

    разделяют одинаковые свойства, операции, отношения и семантику (смысл).

    Любой объект – просто экземпляр класса. Различают внутренне представление

    класса (реализацию) и внешнее представление (интерфейс).

    Значительное увеличение сложности задач, решаемых с помощью

    компьютеров, приводит к увеличению размеров и сложности программ, что

    порождает трудности при их разработке и отладке. Рассмотрение любой сложной

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

    элементы. Известны две схемы декомпозиции: алгоритмическая декомпозиция и

    объектно-ориентированная декомпозиция.

    В основе алгоритмической декомпозиции лежит разбиение по действиям –

    алгоритмам. Эта схема представления применяется в обычных программных

    средствах. Объектно-ориентированная декомпозиция обеспечивает разбиение по

    автономным лицам – объектам реального (или виртуального) мира. Эти лица

    (объекты) – более «крупные» элементы, каждый из них несет в себе и описания

    действий, и описания данных.

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

    основывается на принципах абстрагирования, инкапсуляции, модульности и

    иерархической организации. Каждый из этих принципов не нов, но их

    совместное применение рассчитано на проведение объектно-ориентированной

    декомпозиции. Это определяет модификацию их содержания и механизмов

    взаимодействия друг с другом.

    Аппарат абстракции – удобный инструмент для борьбы со сложностью

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

    отвлекаемся (абстрагируемся) от несущественных характеристик конкретных

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

    сводится к формированию абстракций. Каждая абстракция фиксирует основные

    характеристики объекта, которые отличают его от других видов объектов и

    обеспечивают ясные понятийные границы. Абстракция концентрирует внимание на

    внешнем представлении объекта, позволяет отделить основное в поведении

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

    обязанностей объекта.

    Инкапсуляция и абстракция – взаимодополняющие понятия: абстракция

    выделяет внешнее поведение объекта, а инкапсуляция содержит и скрывает

    реализацию, которая обеспечивает это поведение. Инкапсуляция достигается с

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

    реализация их методов. Инкапсуляция является процессом разделения элементов

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

    отделения интерфейса абстракции от ее реализации.

    В языках С++, Object Pascal, Ada 95 абстракция классов и объектов

    формируют логическую структуру системы. При производстве физической

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

    классов сотни, модули помогают управлять сложностью. Модули служат

    физическими контейнерами, в которых объявляются классы и объекты логической

    разработки.

    Модульность определяет способность системы подвергаться декомпозиции на

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

    модули: уменьшение сроков разработки и стоимости программного средства за

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

    Каждая модульная структура должна быть достаточно простой, чтобы быть

    полностью понятной. Изменение реализации модулей должно проводиться без

    знания реализации других модулей и без влияния на их поведение.

    Определение классов и объектов выполняется в ходе логической

    разработки, а определение модулей – в ходе физической разработки системы.

    Эти действия сильно взаимосвязаны, осуществляются итеративно. Допустим, в

    Ada 95 мощным средством обеспечения модульности является пакет.

    Прекрасным дополнением к предыдущим принципам является иерархическая

    организация – формирование из абстракций иерархической структуры.

    Определением иерархии в проекте упрощаются понимание проблем заказчика и их

    реализация – сложная система становится обозримой человеком. Иерархическая

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

    системы.

    Двумя важными инструментами иерархической организации в объектно-

    ориентрованных системах являются:

    1. структура из классов(«is a»-иерархия);

    2. структура из объектов(«part of»-иерархия).

    Чаще всего «is a»-иерархическая структура строится с помощью

    наследования. Наследование определяет отношение между классами, где класс

    разделяет структуру или поведение, определенные в одном другом (единичное

    наследование) или в нескольких других (множественное наследование) классах.

    Другая разновидность иерархической организации – «part of»-иерархическая

    структура – базируется на отношении агрегации. Агрегация не является

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

    язык программирования, разрешающий структуры типа «запись», поддерживает

    агрегацию. И все же агрегация особенно полезна в сочетании с наследованием:

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

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

    в других абстракциях.

    Рассмотрим более пристально объекты – конкретные сущности, которые

    существуют во времени и пространстве.

    Объект – это конкретное представление абстракции. Объект обладает

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

    объектов определены в их общем классе. Термины «экземпляры класса» и

    «объект» взаимозаменяемы.

    Индивидуальность – это характеристика объекта, которая отличает его от

    всех других объектов.

    Состояние объекта характеризуется перечнем всех свойств объекта и

    текущими значениями каждого их этих свойств. Объекты не существуют

    изолированно друг от друга. Они подвергаются воздействию или сами

    воздействую на другие группы. Поведение характеризует то, как объект

    воздействует на другие объекты (или подвергается воздействию) в терминах

    изменений его состояния и передачи сообщений. Поведение объекта является

    функцией как его состояния, так и выполняемых им операций. Говорят, что

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

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

    пять видов операций клиента над объектом:

    1) модификатор (изменяет состояние объекта);

    2) селектор (дает доступ к состоянию, но не изменяет его);

    3) итератор (доступ к содержанию объекта по частям, в строго

    определенном порядке);

    4) конструктор (создает объект и инициализирует его состояние);

    5) деструктор (разрушает объект и освобождает занимаемую им память).

    В чистых объектно-ориентированных языках программирования операции

    могут объявляться только как методы – элементы классов, экземплярами

    которых являются объекты. Гибридные языки позволяют писать операции как

    свободные подпрограммы (вне классов). В общем случае все методы и свободные

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

    Таким образом, протокол определяет оболочку допустимого поведения объекта и

    поэтому заключает в себе цельное (статическое и динамическое) представление

    объекта. Большой протокол полезно разделять на логические группировки,

    разделяющие пространство поведения объект, обозначают роли, которые может

    играть объект. С точки зрения внешней среды важное значение имеет такое

    понятие, как обязанности объекта. Обязанности означают обязательства

    объекта обеспечить определенное поведение. Обязанностями объекта являются

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

    определенные роли, выполняя свои обязанности.

    Наличие у объекта внутреннего состояния означает, что порядок

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

    независимый автомат. Можно выделить активные и пассивные объекты. Активный

    объект имеет собственный канал (поток) управления, пассивный – нет.

    Активный объект автономен, он может проявлять свое поведение без

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

    изменять свое состояние только под воздействием других объектов.

    В поле зрения разработчика программного обеспечения находятся не

    объекты-одиночки, а взаимодействующие объекты, ведь именно взаимодействие

    объектов реализует поведение системы. Отношения между парой объектов

    основываются на взаимной информации о разрешенных операциях и ожидаемом

    поведении.

    4. Оценка сложности программных систем

    При конструировании объектно-ориентированных программных средств

    значительная часть затрат приходится на создание визуальных моделей. Очень

    важно корректно и всесторонне оценить качество этих моделей, сопоставив

    качеству числовую оценку. Решение данной задачи требует введения

    специального метрического аппарата. Такой аппарат развивает идеи

    классического оценивания сложных программных систем, основанного на

    метриках сложности, связности и сцепления. Вместе с тем он учитывает

    специфические особенности объектно-ориентированных решений. Объектно-

    ориентированные метрики вводятся с целью:

    . улучшить понимание качества продукта;

    . оценить эффективность процесса конструирования;

    . улучшить качество работы на этапе проектирования.

    Для любого инженерного продукта метрики должны ориентироваться на его

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

    характеристик объектно-ориентированных систем: локализацию, инкапсуляцию,

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

    Эти характеристики оказывают максимальное влияние на объектно-

    ориентированные метрики.

    Локализация фиксирует способ группировки информации в программе. В

    классических методах, где используется функциональная декомпозиция,

    информация локализуется вокруг функций. Функции в них реализуются как

    процедурные модули. В методах, управляемых данными, информация группируется

    вокруг структур данных. В объектно-ориентированной среде информация

    группируется внутри классов или объектов (инкапсуляция, как данных, так и

    процессов). Поскольку в классических методах основной механизм локализации

    – функция, программные метрики ориентированы на внутреннюю структуру или

    сложность функций (длина модуля, связность, цикломатическая сложность) или

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

    Так как в объектно-ориентированной системе базовым элементом является

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

    должны применяться к классу (объекту) как к комплексной сущности. Кроме

    того, между операциями (функциями) и классами могут быть отношения не

    только «один-к-одному». Поэтому метрики, отображающие способы

    взаимодействия классов, должны быть приспособлены к отношениям «один-ко-

    многим», «многие-ко-многим».

    Инкапсуляция – упаковка (связывание) совокупности элементов. Для

    Страницы: 1, 2, 3


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.