Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования»




Скачать 308.28 Kb.
НазваниеКурсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования»
страница1/2
Дата публикации11.11.2013
Размер308.28 Kb.
ТипКурсовая
uchebilka.ru > Информатика > Курсовая
  1   2
Реферат скачан с сайта allreferat.wow.ua


Интерполяционный полином Лагранжа

Министерство образования РФ Филиал Владивостокского Государственного Университета Экономики и Сервиса в г. Артеме Кафедра информационно-математических дисциплин КУРСОВАЯ РАБОТА по дисциплине «Высокоуровневые методы обработки информации и программирования». Студент гр. ИПИ-02-01 Хмель Ксения Александровна Руководитель преподаватель Кан Николай Эрикович Артем 2003 Содержание|Аннотация |1 ||Введение |2 ||Глава 1: | ||1. Эволюция технологии программирования |3 ||2. Различия функционального и объектно-ориентированного подходов к |7 ||программированию | ||3. Объектно-ориентированный подход |12 ||4. Оценка сложности программных систем |18 ||Глава 2: | ||1. Интегрированная среда разработки Delphi |24 ||2. Характеристики модулей программного средства: | ||2.1. Связность внутри модулей |26 ||2.2. Сцепление между модулями |26 ||Заключение |27 ||Приложение 1. Исходный код программного средства |28 ||Приложение 2. Блок-схема программного средства |35 ||Приложение 3. Блок-схема алгоритма вычисления (третий модуль) |42 ||Приложение 4. Тесты – наборы проверочных данных |45 ||Список использованных источников |47 | Аннотация Целью данной курсовой работы, посвященной изучению высокоуровневыхметодов обработки информации и программирования, является: . систематизация и углубление теоретических и практических знаний по специальности «Прикладная информатика в экономике»; . углубление навыков программирования на языках высокого уровня; . обобщение опыта применения объектно-ориентированного подхода к технологии программирования; . применение полученных знаний при создании программного продукта, выполняющего расчет значения функций, заданных таблично. По сравнению с традиционным функциональным подходом, вместопоследовательных этапов цикла жизни программы решение задачи в объектно-ориентированном подходе представляется в виде иерархии уровней, начиная стребований пользователя и кончая сопровождением готовой программы. Всеуровни разрабатываются в единой среде программирования с использованиемодного языка. При создании программного продукта используются высокоуровневые методыобработки информации и программирования, умение программировать на языкахвысокого уровня, в частности, на языке Pascal, на основе которого созданаинтегрированная среда разработки Delphi7. В первой главе рассматриваются объектно-ориентированный подход креализации задачи программирования. Вторая глава является проектной, в нейописаны алгоритмы разработанного программного продукта, внутренние ивнешние связи между модулями программы, их взаимодействие. В приложенияхданы исходный текст программы и блок-схема. Курсовая работа выполнена налистах. Результатом выполнения курсовой работы является создание программногосредства, которое по введенному значению аргумента выводит значениефункции, для этого использована формула интерполяционного полиномаЛагранжа. Введение Преимущество написания программного продукта на языке высокого уровняPascal заключается в том, что язык позволяет четко реализовать идеиструктурного программирования и структурной организации данных, этот языкявляется процедурным. То есть программа явно описывает действия, которыенеобходимо выполнить, а результат задается способом получения его припомощи некоторой процедуры – определенной последовательности действий.Основными средствами, применяемыми в этом языке (как и в других процедурныхязыках) являются величины, присваивания, циклы, процедуры. При построениипроцедурной программы необходимо ясно представлять, какие действия и вкакой последовательности будут производиться при ее выполнении. В отличиеот функциональной программы, для построения которой требуются скореематематические, чем алгоритмические мышления. При разработке программного средства используется объектно-ориентированный подход к технологии программирования, который являетсяинженерно-конструкторской технологией, концентрирующей внимание на процессерешения задачи. Объектно-ориентированный подход предполагает, что приразработке программы должны быть определены классы используемых в программеобъектов и построены их описания, затем созданы экземпляры необходимыхобъектов и определено взаимодействие между ними. Основная задача (разработать программный продукт, вычисляющий значениефункции по заданному значению аргумента) выполняется с помощью средстввычислительной математики. В основе решения задачи лежит вычислениезначение функции с помощью интерполяционного полинома Лагранжа. Основныенаправления выполнения программы: 1. создать модули, предлагающие поэтапное выполнение поставленной задачи; 2. создать модули, выполняющие вычисление правильно, быстро и корректно; 3. разработать интерфейс программы, совместимый с Windows-интерфейсом. Глава 1 1. Эволюция технологии программирования На ранних этапах развития программирования, когда программы писались ввиде последовательностей машинных команд, какая-либо технологияпрограммирования отсутствовала. Первые шаги в разработке технологиисостояли в представлении программы в виде последовательности операторов.Написанию последовательности машинных команд предшествовало составлениеоператорной схемы, отражающей последовательность операторов и переходымежду ними. Операторный подход позволил разработать первые программы дляавтоматизации составления программ – так называемые составляющие программы. С увеличением размеров программ стали выделять их обособленные части иоформлять их как подпрограммы. Часть таких подпрограмм объединялась вбиблиотеки, из которых подпрограммы можно было включать в рабочие программыи затем вызывать из рабочих программ. Это положило начало процедурномупрограммированию – большая программа представлялась совокупностью процедур-подпрограмм. Одна из подпрограмм являлась главной и с нее начиналосьвыполнение программы. В 1958 году были разработаны первые языки программирования, Фортран иАлгол-58. Программа на Фортране состояла из главной программы и некоторогоколичества процедур – подпрограмм и функций. Программа на Алголе-58 и егопоследующей версии Алголе-60 представляла собой единое целое, но имелаблочную структуру, включающую главный блок и вложенные блоки подпрограмм ифункций. Компиляторы для Фортрана обеспечивали раздельную трансляциюпроцедур и последующее их объединение в рабочую программу, первыекомпиляторы для Алгола предполагали, что транслируется сразу вся программа,раздельная трансляция процедур не обеспечивалась. Процедурный подход потребовал структурирования будущей программы,разделения ее на отдельные процедуры. При разработке отдельной процедуры одругих процедурах требовалось знать только их назначение и способ вызова.Появилась возможность перерабатывать отдельные процедуры, не затрагиваяостальной части программы, сокращая при этом затраты труда и машинноговремени на разработку и модернизацию программ. Следующим шагом в углублении структурирования программ стало такназываемое структурное программирование, при котором программа в целом иотдельные процедуры рассматривались как последовательности каноническихструктур: линейных участков, циклов и разветвлений. Появилась возможностьчитать и проверять программу как последовательный текст, что повысилопроизводительность труда программистов при разработке и отладке программ. Сцелью повышения структурности программы были выдвинуты требования к большейнезависимости подпрограмм, подпрограммы должны связываться с вызывающими ихпрограммами только путем передачи им аргументов, использование вподпрограммах переменных, принадлежащих другим процедурам или главнойпрограмме, стало считаться нежелательным. Процедурное и структурное программирование затронули прежде всегопроцесс описания алгоритма как последовательности шагов, ведущих отварьируемых исходных данных к искомому результату. Для решения специальныхзадач стали разрабатываться языки программирования, ориентированные наконкретный класс задач: на системы управления базами данных, имитационноемоделирование и т.д. При разработке трансляторов все больше внимания стало уделятьсяобнаружению ошибок в исходных текстах программ, обеспечивая этим сокращениезатрат времени на отладку программ. Применение программ в самых разных областях человеческой деятельностипривело к необходимости повышения надежности всего программногообеспечения. Одним из направлений совершенствования языков программированиястало повышения уровня типизации данных. Теория типов данных исходит изтого, что каждое используемое в программе данное принадлежит одному итолько одному типу данных. Тип данного определяет множество возможныхзначений данного и набор операций, допустимых над этим данным. Данноеконкретного типа в ряде случаев может быть преобразовано в данное другоготипа, но такое преобразование должно быть явно представлено в программе. Взависимости от степени выполнения перечисленных требований можно говоритьоб уровне типизации того или иного языка программирования. Стремлениеповысить уровень типизации языка программирования привело к появлению языкаПаскаль, который считается строго типизированным языком, хотя и в немразрешены некоторые неявные преобразования типов, например, целого ввещественное. Применение строго типизированного языка при написаниипрограммы позволяет еще при трансляции исходного текста выявить многиеошибки использования данных и этим повысить надежность программы. Вместе стем строгая типизация сковывала свободу программиста, затрудняла применениенекоторых приемов преобразования данных, часто используемых в системномпрограммировании. Практически одновременно с Паскалем был разработан языкСи, в большей степени ориентированный на системное программирование иотносящийся к слабо типизированным языкам. Все универсальные языки программирования, несмотря на различия всинтаксисе и используемых ключевых словах, реализуют одни и те жеканонические структуры: операторы присваивания, циклы и разветвления. Вовсех современных языках присутствуют предопределенные (базовые) типы данных(целые и вещественные арифметические типы, символьный и, возможно,строковый тип), имеется возможность использования агрегатов данных, в томчисле массивов и структур (записей). Для арифметических данных разрешеныобычные арифметические операции, для агрегатов данных обычно предусмотренатолько операция присваивания и возможность обращения к элементам агрегата.Вместе с тем при разработке программы для решения конкретной прикладнойзадачи желательна возможно большая концептуальная близость текста программык описанию задачи. Например, если решение задачи требует выполненияопераций над комплексными числами или квадратными матрицами, желательно,чтобы в программе явно присутствовали операторы сложения, вычитания,умножения и деления данных типа комплексного числа, сложения, вычитания,умножения и обращения данных типа квадратной матрицы. Решение этой проблемывозможно несколькими путями: . Построением языка программирования, содержащего как можно больше типов данных, и выбором для каждого класса задач некоторого подмножества этого языка. Такой язык иногда называют языком- оболочкой. На роль языка-оболочки претендовал язык ПЛ/1, оказавшийся настолько сложным, что так и не удалось построить его формализованное описание. Отсутствие формализованного описания, однако, не помешало широкому применению ПЛ/1 как в Западной Европе, так и в СССР. . Построением расширяемого языка, содержащего небольшое ядро и допускающего расширение, дополняющее язык типами данных и операторами, отражающими концептуальную сущность конкретного класса задач. Такой язык называют языком-ядром. Как язык-ядро были разработаны языки Симула и Алгол-68, не получившие широкого распространения, но оказавшие большое влияние на разработку других языков программирования. Дальнейшим развитием второго пути явился объектно-ориентированныйподход к программированию. 2. Различия функционального и объектно-ориентированного подходов программирования Есть два принципиально отличающихся подхода к технологиипрограммирования: инженерно-конструкторский и математический. Первыйоснован на том, что изготовление программного продукта по заданнымтребованиям суть итеративный процесс последовательной реализации алгоритмарешения задачи. Второй подход основан на математическом доказательствеправильности программы и автоматическом (или полуавтоматическом) полученииготовой программы по заданным спецификациям. Объектно-ориентированный подход к технологии программирования –инженерно-конструкторский, в котором внимание концентрируется на самомпроцессе решения задачи. В данной статье авторами обобщается опытиспользования объектно-ориентированной технологии при разработке средыобъектно-ориентированного программирования и некоторых прикладных программ,работающих в этой среде. Оценим преимущества и недостатки наиболее распространенной инженернойтехнологии – функциональной. Существует три главные проблемыфункционального подхода: 1. Слабая формализация связей между этапами. Специализация этапов приводит к тому, что интерфейсы между ними описываются на различных языках с разной степенью формализации. Слабая формализация уменьшает надежность программы и, что самое неприятное, ее адекватность требованиям заказчика. 2. Отсутствие гибкости. Поэтапная последовательная схема жестко связана с нисходящим способом создания программы. Однако практика показывает, что процесс. создания. хоть сколько-нибудь сложной программы неизбежно оказывается циклическим, с возвратами для внесения изменений в предыдущие этапы. Такие возвраты связаны с большими затратами, поскольку вовлекают этапы с разными интерфейсами и разными исполнителями. 3. Плохое использование результатов предыдущих разработок. Нисходящее проектирование вместе со слабой формализацией языков спецификаций приводят к тому, что результаты проектирования, как и готовые программы и их части, практически невозможно использовать для других целей. Исключение составляют библиотеки языков программирования на этапе кодирования. Принципиальное отличие от функциональной схемы состоит в том, чтопоэтапный цикл жизни программного продукта заменяется многоуровневымпредставлением процесса решения задачи, которое получается сочетаниемнисходящего и восходящего способов. С одной стороны идет детализацияверхних уровней, с другой стороны из нижних уровней собираются недостающиекомпоненты верхних уровней. Смежные и другие близлежащие уровни могутпересекаться, т.е. иметь общие компоненты. Таким образом, границы междууровнями размываются, их число становится произвольным и даженеопределенным, а сами уровни теряют свою специфику. Возможность применения вышеуказанной схемы обеспечивают три единые длявсех уровней средства: объектно-ориентированный язык, средапрограммирования, база данных (библиотека классов). Эти средства в явномвиде составляют основу любой объектно-ориентированной технологии.Рассмотрим их основные характеристики. Объектно-ориентированный язык программирования основывается на понятииобъекта как замкнутой независимой сущности, взаимодействующей с внешниммиром через строго определенный интерфейс в виде перечня сообщений, которыеобъект может принимать. Объект обладает свойствами, поведением исостоянием. Объекты с одинаковыми свойствами и поведением объединяются вклассы. Программа на объектно-ориентированном языке представляет собойсовокупность описаний классов. Классы, в свою очередь, представляют собойописания свойств и поведения составляющих их объектов. Свойствапредставляются другими, как правило, более простыми объектами. Поведениеописывается обменивающимися сообщениями объектами. Объектно-ориентированным языкам присущи следующие характеристики: . абстрактные типы данных; . скрытие реализации внешнего интерфейса (инкапсуляция); . наследование свойств и поведения объектов; . динамическое связывание имени со значением; . полиморфизм имен сообщений; . автоматическое управление памятью. Чисто объектно-ориентированные языки, такие как 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. Оценка сложности программных систем При конструировании объектно-ориентированных программных средствзначительная часть затрат приходится на создание визуальных моделей. Оченьважно корректно и всесторонне оценить качество этих моделей, сопоставивкачеству числовую оценку. Решение данной задачи требует введенияспециального метрического аппарата. Такой аппарат развивает идеиклассического оценивания сложных программных систем, основанного наметриках сложности, связности и сцепления. Вместе с тем он учитываетспецифические особенности объектно-ориентированных решений. Объектно-ориентированные метрики вводятся с целью: . улучшить понимание качества продукта; . оценить эффективность процесса конструирования; . улучшить качество работы на этапе проектирования. Для любого инженерного продукта метрики должны ориентироваться на егоуникальные характеристики. С точки зрения метрик выделяют пятьхарактеристик объектно-ориентированных систем: локализацию, инкапсуляцию,информационную закрытость, наследование и способы абстрагирования объектов.Эти характеристики оказывают максимальное влияние на объектно-ориентированные метрики. Локализация фиксирует способ группировки информации в программе. Вклассических методах, где используется функциональная декомпозиция,информация локализуется вокруг функций. Функции в них реализуются какпроцедурные модули. В методах, управляемых данными, информация группируетсявокруг структур данных. В объектно-ориентированной среде информациягруппируется внутри классов или объектов (инкапсуляция, как данных, так ипроцессов). Поскольку в классических методах основной механизм локализации– функция, программные метрики ориентированы на внутреннюю структуру илисложность функций (длина модуля, связность, цикломатическая сложность) илина способ, которым функции связываются друг с другом (сцепление модулей).Так как в объектно-ориентированной системе базовым элементом являетсякласс, то локализация здесь основывается на объектах. Поэтому метрикидолжны применяться к классу (объекту) как к комплексной сущности. Крометого, между операциями (функциями) и классами могут быть отношения нетолько «один-к-одному». Поэтому метрики, отображающие способывзаимодействия классов, должны быть приспособлены к отношениям «один-ко-многим», «многие-ко-многим». Инкапсуляция – упаковка (связывание) совокупности элементов. Дляклассических программных средств примерами низкоуровневой инкапсуляцииявляются записи и массивы. Механизмом инкапсуляции среднего уровня являютсяподпрограммы. В объектно-ориентированных системах инкапсулируютсяобязанности класса, представляемые его свойствами, операциями исостояниями. Для метрик учет инкапсуляции приводит к смещению фокусаизмерений с одного модуля на группу свойств и обрабатывающих модулей(операций). Кроме того, инкапсуляция переводит измерения на более высокийуровень абстракции. Напротив, классические метрики ориентированы на низкийуровень – количество булевых условий (цикломатическая сложность) иколичество строк программы. Информационная закрытость делает невидимыми операционные деталипрограммного компонента. Другим компонентам доступна только необходимаяинформация. Качественные объектно-ориентированные системы поддерживаютвысокий уровень информационной закрытости. Таким образом, метрики,измеряющие степень достигнутой закрытости, тем самым отображают качествообъектно-ориентированного проекта. Наследование – механизм, обеспечивающий тиражирование обязанностейодного класса в другие классы. Наследование распространяется через всеуровни иерархии классов. Стандартные программные средства не поддерживаютэту характеристику. Поскольку наследование – основная характеристикаобъектно-ориентированных систем, на ней фокусируются многие объектно-ориентированные метрики (количество детей – потомков класса, количествородителей, высота класса в иерархии наследования). Абстракция – это механизм, который позволяет проектировщику выделятьглавное в программном компоненте (как свойства, так и операции) без учетавторостепенных деталей. По мере перемещения на более высокие уровниабстракции мы игнорируем все большее количество деталей, обеспечивая всеобщее представление понятия или элемента. По мере перемещения на болеенизкие уровни абстракции мы вводим все большее количество деталей,обеспечивая более точное представление понятия или элемента. Класс – этоабстракция, которая может быть представлена на различных уровняхдетализации и различными способами. Поэтому объектно-ориентированныеметрики должны представлять абстракции в терминах измерений класса. Классической мерой сложности внутренних связей модуля являетсясвязность, а классической мерой сложности внешних связей – сцепление. Связность модуля – мера зависимости его частей, это внутренняяхарактеристика модуля. Чем выше связность модуля, тем лучше результатпроектирования. Для измерения связности используют понятие силы связности(СС). Существует 7 типов связности: 1. Связность по совпадению (СС=0). В модуле отсутствуют явно выраженные внутренние связи. 2. Логическая связность (СС=1). Части модуля объединены по принципу функционального подобия. Например, модуль состоит из разных подпрограмм обработки ошибок. При использовании такого модуля клиент выбирает только одну из подпрограмм. Недостатками является сложное сопряжение и большая вероятность внесения ошибок при изменении сопряжения ради одной функции. 3. Временная связность (СС=3). Части модуля не связаны, но необходимы в один и тот же период работы системы. Недостаток: сильная взаимная связь с другими модулями, отсюда – сильная чувствительность к внесению изменений. 4. Процедурная связность (СС=5). Части модуля связаны порядком выполняемых ими действий, реализующих некоторый сценарий поведения. 5. Коммуникативная связность (СС=7). Части модуля связаны по данным (работают с одной и той же структурой данных). 6. Информационная (последовательная) связность (СС=9). Выходные данные одной части используются как входные данные в другой части модуля. 7. Функциональная связность (СС=10). Части модуля вместе реализуют одну функцию. Этот метод функционален по своей природе, поэтому наибольшей связностьюздесь объявлена функциональная связность. Вместе с тем одним изпринципиальных преимуществ объектно-ориентированного подхода являетсяестественная связность объектов. Максимально связанным является объект, вкотором представляется единая сущность и в который включены все операциинад этой сущностью. Следовательно, восьмой тип можно определить так: 8. Объектная связность. Каждая операция обеспечивает функциональность, которая предусматривает, что все свойства объекта будут модифицироваться, отображаться и использоваться как базис для предоставления услуг. Высокая связность – желательная характеристика, так как она означает,что объект представляет единую часть в проблемной области, существует ведином пространстве. При изменении системы все действия над частьюинкапсулируются в едином компоненте. Поэтому для производства изменения нетнужды модифицировать много компонентов. Если функциональность в объектно-ориентированной системе обеспечивается наследованием от суперклассов, тосвязность объекта, который наследует свойства и операции, уменьшается. Вэтом случае нельзя рассматривать объект как отдельный модуль – должныучитываться все его суперклассы. Системные средства просмотра содействуюттакому учету. Однако понимание элемента, который наследует свойства отнескольких суперклассов, резко усложняется. В классическом методе Л. Констентайна и Э. Йордана определены шестьтипов сцепления, которые ориентированы на процедурное проектирование.Принципиальное преимущество объектно-ориентированного проектирования в том,что природа объектов приводит к созданию слабо сцепленных систем.Фундаментальное свойство объектно-ориентированного проектированиязаключается в скрытости содержания объекта. Как правило, содержание объектаневидимо внешним элементам. Степень автономности объекта достаточно высока.Любой объект может быть замещен другим объектом с таким же интерфейсом. Темне менее наследование в объектно-ориентированных системах приводит к другойформе сцепления. Объекты, которые наследуют свойства и операции, сцеплены сих суперклассами. Изменения в суперклассах должны проводиться осторожно,так как эти изменения распространяются во все классы, которые наследуют иххарактеристики. Таким образом, сами по себе объектно-ориентированные механизмы негарантируют минимального сцепления. Конечно, классы – мощное средствоабстракции данных. Их введение уменьшило поток данных между модулями и,следовательно, снизило общее сцепление внутри системы. Однако количествотипов зависимостей между модулями выросло. Появились отношениянаследования, делегирования, реализации и т.д. Более разнообразным сталсостав модулей в системе (классы, объекты, свободные функции и процедуры,пакеты). Отсюда вывод: необходимость измерения и регулирования сцепления вобъектно-ориентированных системах обострилась. Сцепление – мера зависимости модулей по данным, внешняя характеристикамодуля, которую желательно уменьшать. Количественно сцепление измеряетсястепенью сцепления (СЦ). Выделяют 6 типов сцепления: 1. Сцепление по данным (СЦ=1). Модуль А вызывает модуль В. Все входные и выходные параметры вызываемого модуля – простые элементы данных. 2. Сцепление по образцу (СЦ=3). В качестве параметров используются структуры данных. 3. Сцепление по управлению (СЦ=4). Модуль А явно управляет функционированием модуля В (с помощью флагов или переключателей), посылая ему управляющие данные. 4. Сцепление по внешним ссылкам (СЦ=5). Модули А и В ссылаются на один и тот же глобальный элемент данных. 5. Сцепление по общей области (СЦ=7). Модули разделяют одну и ту же глобальную структуру данных. 6. Сцепление по содержанию (СЦ=9). Один модуль прямо ссылается на содержание другого модуля (не через точку входа). Например, коды их программ перемежаются друг с другом. Глава 2 1. Интегрированная среда разработки Delphi Курсовой проект был разработан в интегрированной среде разработкиDelphi 7, далее последует описание данного программного изделия. Прикладные программы, или приложения, Delphi создаются винтегрированной среде разработки. Пользовательский интерфейс этой средыслужит для организации взаимодействия с программистом и включает в себя рядокон, содержащих различные элементы управления. С помощью средствинтегрированной среды разработчику удобно проектировать интерфейсную частьприложения, а также писать программный код и связывать его с элементамиуправления. В интегрированной среде разработки проходят все этапы созданияприложения, включая отладку. Интегрированная среда разработки Delphi 7представляет собой многооконную систему. Язык Delphi реализует концепцию объектно-ориентированногопрограммирования. Это означает, что функциональность приложенияопределяется набором взаимосвязанных задач, каждая из которых становитсясамостоятельным объектом. У объекта есть свойства (т.е. характеристики, илиатрибуты), методы, определяющие его поведение, и события, на которые онреагирует. Одним из наиболее важных понятий объектно-ориентированногопрограммирования является класс. Класс представляет собой дальнейшееразвитие концепции типа и объединяет в себе задание не только структуры иразмера переменных, но и выполняемых над ним операций. Объекты в программевсегда являются экземплярами того или иного класса. Все вычисления курсовой программы построены на знании интерполяционногополинома Лагранжа (интерполяционный многочлен в форме Лагранжа). Именно сего помощью вычисляется значение функции при нескольких заданныхпользователем значениях аргумента и некоторым другим входным данным.Интерполяционным многочленом называется многочлен [pic] степени не выше n,который в узлах [pic]принимает значения [pic]. Условия применения полинома: Функция [pic] непрерывна на интервале [pic] и задана некоторыми своимизначениями [pic] для соответствующих значений аргумента [pic]. Полиномиспользуется, когда необходимо найти значение этой функции в точке [pic]. Теорема: Пусть заданы узлы [pic], среди которых нет совпадающих и значения [pic]некоторой функции f(x) в этих узлах. Существует один и только одинмногочлен [pic] степени не выше n, принимающий в узлах [pic] значения[pic]. Введем вспомогательные многочлены[pic].Это многочлен степени n, для которого выполняется равенство [pic].Многочлен [pic] называется полиномом Лагранжа. При применении программы, названной «Интерполирование», пользовательв первом окне вводит количество аргументов, столько узлов [pic] будет вдальнейшем использоваться программой. Во втором окне пользователь вводитзначения аргументов и функций для построения полинома Лагранжа. В третьемокне задается значение аргумента, функцию которого необходимо найти. Принажатии кнопки «Вычислить», приводится в действие алгоритм программы,происходит вычисление и выдается результат и одновременно с этим процессомпрограмма находит погрешность вычисления. Пользователь сам может оценить,насколько полученный в ходе вычислений результат расходится с правильным,используя погрешность. 2. Характеристики модулей программного средства 1. Связность внутри модулей Модули 1, 2 и 4 имеют внутреннюю связность временную (части модуля несвязаны, но необходимы в один и тот же период работы системы). Третиймодуль имеет тип связности – информативный последовательный, которыйговорит о том, что выходные данные одной части модуля используются каквходные данные другой части модуля. Эта связи присутствует, потому чтоfunction Ln (k: Integer): Real; function Pol ( ): Real; и function Delta (): Real; являются входными данными для Procedure TForm3/Button1Click(Sender: Tobject). 2. Сцепление модулей между собой Модуль 1 сцеплен с модулем 2 по данным (тип сцепления первый, СЦ=1), тоесть модуль 1 вызывает модуль 2, входные и выходные параметры – простыеэлементы данных. Модуль 3 с модулем 2 сцеплен по содержанию, то есть модуль 3 прямоссылается на содержание модуля 2. Модуль 3 с первым модулем не сцеплены,так как, хотя они оба сцеплены со вторым модулем, но каждый из них имеетразный тип сцепления, не имеющих ничего общего. Четвертый модуль, являющийся сведениями о программе связан с модулями1, 2 и 3 по данным, все три модуля вызывают четвертый. Заключение Во время выполнения курсовой работы был разработан программноесредство, вычисляющее значение функции по заданному значению аргумента,выполняющегося с помощью средств вычислительной математики. В основерешения задачи, как было описано во второй части курсовой работы лежитвычисление интерполяционным полиномом Лагранжа. Было создано четыре модуля,три из которых являются активными, четвертый («О программе») может бытьвызван с любого из трех главных модулей. Три основных модуля предлагаютпоэтапное выполнение задачи; в первом модуле вводятся начальные данные, вовтором заполняется таблица со значениями функций и аргументов (этопромежуточные точки, на основании которых и строится полином Лагранжа).Третий модуль является основным, использующим данные из второго и третьегомодуля для вычислительного процесса. Интерфейс программы совместим сWindows-интерфейсом благодаря тому, что программа, в которойразрабатывалась курсовая работа, – Delphi7 – предоставляет такуювозможность и поддерживает именно Windows-интерфейс. Все пункты курсовогозадания были выполнены, разработанное программное средство выполняетпоставленную перед ним задачу. Приложение 1. Исходный код программного средства: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls, Menus; type TForm1 = class(TForm) Memo1: TMemo; Edit1: TEdit; Button1: TButton; Memo2: TMemo; Label1: TLabel; MainMenu1: TMainMenu; N1: TMenuItem; N4: TMenuItem; N2: TMenuItem; procedure Button1Click(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure N2Click(Sender: TObject); procedure N4Click(Sender: TObject); private Private declarations public Public declarations end; var Form1: TForm1; A, k :integer; implementation uses Unit2, unit6, Unit3; $R *.dfm procedure TForm1.N2Click(Sender: TObject); begin AboutBox.ShowModal; end; procedure TForm1.N4Click(Sender: TObject); begin close; end; procedure TForm1.Button1Click(Sender: TObject); begin k:=StrToInt(edit1.Text); if (k<=3) or (k>
  1   2

Добавить документ в свой блог или на сайт

Похожие:

Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования» iconРабочая программа по дисциплине высокоуровневые методы
Рабочая учебная программа (руп) по дисциплине “Высокоуровневые методы информатики и программирования” разработана к т н., доцентом...

Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования» iconРабочая программа по дисциплине высокоуровневые методы
Рабочая учебная программа (руп) по дисциплине “Высокоуровневые методы информатики и программирования” разработана к т н., доцентом...

Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования» iconРабочая учебная программа (руп) по дисциплине «Высокоуровневые методы...
Рабочая учебная программа (руп) по дисциплине «Высокоуровневые методы информатики и программирования» разработана ст преподавателем...

Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования» iconЛабораторная работа №2 Двойственная задача линейного программирования...
Цель работы: получить навыки в переходе к двойственной задаче линейного программирования и решении задач линейного программирования...

Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования» iconКурсовая работа по дисциплине: «Информатика и программирование» на...
Организация обработки информации на ЭВМ по формированию плана поставок готовой продукции

Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования» iconКурсовая работа по дисциплине «Системы обработки экономической информации»
Целью данной курсовой работы является ознакомление с несколькими аис в области учета зарплаты и кадров на малом предприятии, а также...

Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования» iconЛекция методы определения важности требований, предъявляемых к сзи
Уэя, Саати, Коггера и Ю, методы наименьших квадратов, ранговые методы). Методы обработки информации в произвольных шкалах (методы...

Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования» iconКурсовая работа по дисциплине «Объектно-ориентированное программирование»
Объектно-ориентированное программирование это метод программирования, развивающий принципы структурного программирования и основанный...

Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования» iconКурсовая работа по дисциплине «Численные методы оптимизации»

Курсовая работа по дисциплине «Высокоуровневые методы обработки информации и программирования» iconКурсовая работа по курсу: “Методы и системы обработки сигналов” На...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<