Міністерство освіти РФ p>
Філія Владивостоцького Державного Університету Економіки і p>
Сервісу в м. Артеме p>
Кафедра інформаційно-математичних дисциплін p>
Курсова робота з дисципліни «Високорівневі методи обробки інформації та програмування». p>
Студент гр. ІПІ-02-01 Хмель Ксенія Олександрівна p>
Керівник викладач Кан Микола Еріковіч p>
Артем 2003 p>
Зміст p>
| Анотація | 1 | < br>| Вступ | 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 | p>
Анотація p>
Метою даної курсової роботи, присвяченої вивченню високорівневихметодів обробки інформації та програмування, є: p>
. систематизація та поглиблення теоретичних і практичних знань за фахом «Прикладна інформатика в економіці»; p>
. поглиблення навичок програмування на мовах високого рівня; p>
. узагальнення досвіду застосування об'єктно-орієнтованого підходу до технології програмування; p>
. застосування отриманих знань при створенні програмного продукту, що виконує розрахунок значення функцій, заданих таблично. p>
У порівнянні з традиційним функціональним підходом, замістьпослідовних етапів циклу життя програми вирішення завдання у об'єктно -орієнтованому підході представляється у вигляді ієрархії рівнів, починаючи звимог користувача і закінчуючи супроводом готової програми. Всірівні розробляються в єдиному середовищі програмування з використаннямоднієї мови. p>
При створенні програмного продукту використовуються високорівневі методиобробки інформації та програмування, вміння програмувати на мовахвисокого рівня, зокрема, на мові Pascal, на основі якого створенаінтегроване середовище розробки Delphi7. p>
У першому розділі розглядаються об'єктно-орієнтований підхід дореалізації задачі програмування. Другий розділ є проектної, в нійописані алгоритми розробленого програмного продукту, внутрішні тазовнішні зв'язки між модулями програми, їх взаємодія. У додаткахдані вихідний текст програми і блок-схема. Курсова робота виконана нааркушах. p>
Результатом виконання курсової роботи є створення програмногозасобу, який по введеному значенню аргументу виводить значенняфункції, для цього використана формула інтерполяційного полінома
Лагранжа. P>
Введення p>
Перевага написання програмного продукту на мові високого рівня
Pascal полягає в тому, що мова дозволяє чітко реалізувати ідеїструктурного програмування і структурної організації даних, ця моває процедурним. Тобто програма явно описує дії, якінеобхідно виконати, а результат задається способом отримання його придопомогою деякої процедури - певній послідовності дій.
Основними засобами, що застосовуються в цій мові (як і в інших процедурнихмовами) є величини, привласнення, цикли, процедури. При побудовіпроцедурної програми необхідно чітко уявляти, які дії і вякій послідовності будуть проводитися при її виконанні. На відмінувід функціональної програми, для побудови якої потрібні швидшематематичні, ніж алгоритмічні мислення. p>
При розробці програмного засобу використовується об'єктно -орієнтований підхід до технології програмування, який єінженерно-конструкторської технологією, концентрує увагу на процесірішення задачі. Об'єктно-орієнтований підхід припускає, що прирозробці програми повинні бути визначені класи використовуються у програміоб'єктів і побудовані їх описи, потім створені екземпляри необхіднихоб'єктів і визначено взаємодію між ними. p>
Основне завдання (розробити програмний продукт, обчислює значенняфункції по заданому значенню аргументу) виконується за допомогою засобівобчислювальної математики. В основі рішення задачі лежить обчисленнязначення функції за допомогою інтерполяційного полінома Лагранжа. Основнінапрямки виконання програми: p>
1. створити модулі, що пропонують поетапне виконання поставленого завдання; p>
2. створити модулі, що виконують обчислення правильно, швидко і коректно; p>
3. розробити інтерфейс програми, сумісний з Windows-інтерфейсом. p>
Глава 1 p>
1. Еволюція технології програмування p>
На ранніх етапах розвитку програмування, коли програми писалися ввигляді послідовностей машинних команд, будь-яка технологіяпрограмування була відсутня. Перші кроки у розробці технологіїполягали у поданні програми у вигляді послідовності операторів.
Написанню послідовності машинних команд передувало складанняоператорної схеми, що відбиває послідовність операторів і переходиміж ними. Операторні підхід дозволив розробити перші програми дляавтоматизації складання програм - так звані складові програми. p>
Зі збільшенням розмірів програм стали виділяти їх відокремлені частини іоформляти їх як підпрограми. Частина таких підпрограм об'єднувалася вбібліотеки, з яких підпрограми можна було включати в робочі програмиі потім викликати з робочих програм. Це поклало початок процедурномупрограмування - велика програма представлялася сукупністю процедур -підпрограм. Одна з підпрограм є головною та з неї починалосявиконання програми. p>
У 1958 році були розроблені перші мови програмування, Фортран та
Алгол-58. Програма на Фортране складалася з головної програми і деякогокількості процедур - підпрограм і функцій. Програма на Алгол-58 і йогонаступної версії Алгол-60 являла собою єдине ціле, але малаблокову структуру, що включає головний блок і вкладені блоки підпрограм іфункцій. Компілятори для Фортрану забезпечували роздільну трансляціюпроцедур і подальше їх об'єднання в робочу програму, першийкомпілятори для Алгол припускали, що транслюється відразу вся програма,роздільна трансляція процедур не забезпечувалася. p>
Процедурний підхід зажадав структурування майбутньої програми,поділу її на окремі процедури. При розробці окремої процедури проінших процедурах було потрібно знати тільки їх призначення і спосіб виклику.
З'явилася можливість переробляти окремі процедури, не зачіпаючирешті частини програми, скорочуючи при цьому витрати праці і машинногочасу на розробку і модернізацію програм. p>
Наступним кроком у поглибленні структурування програм стало такзване структурне програмування, при якому програма в цілому іокремі процедури розглядалися як послідовності канонічнихструктур: лінійних ділянок, циклів і розгалужень. З'явилася можливістьчитати і перевіряти програму як послідовний текст, що підвищилопродуктивність праці програмістів при розробці й налагодженню програм. Зметою підвищення структурності програми були висунуті вимоги до більшоїнезалежності підпрограм, підпрограми повинні зв'язуватися з викликають їхпрограмами тільки шляхом передачі їм аргументів, використання впідпрограма змінних, що належать іншим процедур або головноїпрограмі, стало вважатися небажаним. p>
Процедурне і структурне програмування торкнулися перш за всепроцес опису алгоритму як послідовності кроків, що ведуть відварьируемых вихідних даних до шуканого результату. Для вирішення спеціальнихзадач стали розроблятися мови програмування, орієнтовані наконкретний клас задач: на системи управління базами даних, імітаційнемоделювання і т.д. p>
При розробці трансляторів все більше уваги стало приділятисявиявлення помилок у вихідних текстах програм, забезпечуючи цим скороченнявитрат часу на налагодження програм. p>
Застосування програм у різних галузях людської діяльностіпризвело до необхідності підвищення надійності всього програмногозабезпечення. Одним з напрямків вдосконалення мов програмуваннястало підвищення рівня типізації даних. Теорія типів даних виходить зтого, що кожне використовуване в програмі дане належить одному ітільки одного типу даних. Тип даного визначає безліч можливихзначень цього та набір операцій, допустимих над цими даними. Данеконкретного типу в ряді випадків може бути перетворено в даний іншоготипу, але таке перетворення повинно бути явно представлено в програмі. Узалежно від ступеня виконання перерахованих вимог можна говоритипро рівень типізації тієї чи іншої мови програмування. Прагненняпідвищити рівень типізації мови програмування призвело до появи мови
Паскаль, який вважається універсальна мова, хоча й у ньомудозволені деякі неявні перетворення типів, наприклад, цілого вречовий. Застосування універсальна мова при написанніпрограми дозволяє ще при трансляції вихідного тексту виявити багатопомилки використання даних і цим підвищити надійність програми. Разом зтим строга типізація сковувала свободу програміста, ускладнювала застосуваннядеяких прийомів перетворення даних, що часто використовуються в системномупрограмуванні. Практично одночасно з Паскалем була розроблена мова
Сі, більшою мірою орієнтована на системне програмування тащо відноситься до слабо універсальна мова. p>
Всі універсальні мови програмування, незважаючи на відмінності всинтаксисі і використовуваних ключових словах, реалізують одні й ті жканонічні структури: оператори присвоювання, цикли і розгалуження. Підвсіх сучасних мовах присутні зумовлені (базові) типи даних
(цілі і речові арифметичні типи, символьний і, можливо,рядковий тип), є можливість використання агрегатів даних, у томучислі масивів і структур (записів). Для арифметичних даних дозволенізвичайні арифметичні операції, для агрегатів даних зазвичай передбаченатільки операція привласнення і можливість звернення до елементів агрегату.
Разом з тим при розробці програми для вирішення конкретної прикладноїзавдання бажана можливо велика концептуальна близькість тексту програмидо опису завдання. Наприклад, якщо рішення завдання вимагає виконанняоперацій над комплексними числами або квадратними матрицями, бажано,щоб у програмі явно були присутні оператори додавання, віднімання,множення і ділення даних типу комплексного числа, додавання, віднімання,множення й звернення даних типу квадратної матриці. Вирішення цієї проблемиможливо кількома шляхами: p>
. Побудовою мови програмування, що містить як можна більше типів даних, і вибором для кожного класу задач деякого підмножини цієї мови. Такий мова іноді називають мовою-оболонкою. На роль мови-оболонки претендував мова ПЛ/1, що виявився настільки складним, що так і не вдалося побудувати його формалізований опис. Відсутність формалізованого опису, однак, не завадило широкому застосуванню ПЛ/1 як у Західній Європі, так і в СРСР. P>
. Побудовою розширюваного мови, що містить невелике ядро і допускає розширення, доповнює мову типами даних і операторами, що відображають концептуальну сутність конкретного класу задач. Такий мову називають мовою-ядром. Як мова-ядро були розроблені мови Симула і Алгол-68, які не отримали широкого розповсюдження, але що зробили великий вплив на розробку інших мов програмування. P>
Подальшим розвитком другого шляху з'явився об'єктно-орієнтованийпідхід до програмування. p>
2. Відмінності функціонального і об'єктно-орієнтованого підходів програмування p>
Є два принципово відрізняються підходу до технологіїпрограмування: інженерно-конструкторський та математичний. Першийзаснований на тому, що виготовлення програмного продукту за заданимивимогам суть ітеративний процес послідовної реалізації алгоритмурішення задачі. Другий підхід заснований на математичному доказіправильності програми й автоматичному (або напівавтоматичному) отриманніготової програми з заданим специфікаціям. p>
Об'єктно-орієнтований підхід до технології програмування --інженерно-конструкторський, в якому увага концентрується на самомупроцесі рішення задачі. У даній статті авторами узагальнюється досвідвикористання об'єктно-орієнтованої технології при розробці середовищаоб'єктно-орієнтованого програмування та деяких прикладних програм,що працюють в цьому середовищі. p>
Оцінимо переваги та недоліки найбільш поширеною інженерноїтехнології - функціональною. Існує три головні проблемифункціонального підходу: p>
1. Слабка формалізація зв'язків між етапами. Спеціалізація етапів приводить до того, що інтерфейси між ними описуються на різних мовах з різним ступенем формалізації. Слабка формалізація зменшує надійність програми і, що саме неприємне, її адекватність вимогам замовника. P>
2. Відсутність гнучкості. Поетапна послідовна схема жорстко пов'язана з тих, що сходять способом створення програми. Однак практика показує, що процес. створення. хоч скільки-небудь складної програми неминуче виявляється циклічним, з поверненнями для внесення змін у попередні етапи. Такі повернення пов'язані з великими витратами, оскільки залучають етапи з різними інтерфейсами і різними виконавцями. P>
3. Погане використання результатів попередніх розробок. Спадний проектування разом зі слабкою формалізацією мов специфікацій призводять до того, що результати проектування, як і готові програми та їх частини, практично неможливо використовувати для інших цілей. Виняток становлять бібліотеки мов програмування на етапі кодування. P>
Принципова відмінність від функціональної схеми полягає в тому, щопоетапний цикл життя програмного продукту замінюється багаторівневимподанням процесу вирішення завдання, яке виходить поєднаннямспадного і висхідного способів. З одного боку йде деталізаціяверхніх рівнів, з іншого боку з нижніх рівнів збираються відсутнікомпоненти верхніх рівнів. Суміжні та інші прилеглі рівні можутьперетинатися, тобто мати загальні компоненти. Таким чином, межі міжрівнями розмиваються, їх стає довільним і навітьневизначеним, а самі рівні втрачають свою специфіку. p>
Можливість застосування вищевказаної схеми забезпечують три єдині длявсіх рівнів кошти: об'єктно-орієнтована мова, середапрограмування, база даних (бібліотека класів). Ці кошти в явномувигляді складають основу будь-якої об'єктно-орієнтованої технології.
Розглянемо їх основні характеристики. P>
Об'єктно-орієнтована мова програмування грунтується на поняттіоб'єкта як замкнутої незалежної сутності, що взаємодіє із зовнішнімсвітом через строго визначений інтерфейс у вигляді переліку повідомлень, якіоб'єкт може приймати. Об'єкт має властивості, поведінкою істаном. Об'єкти з однаковими властивостями і поведінкою об'єднуються вкласи. Програма на об'єктно-орієнтованої мови являє собоюсукупність описів класів. Класи, у свою чергу, єопису властивостей і поведінки складових їх об'єктів. Властивостіпредставляються іншими, як правило, більш простими об'єктами. Поведінкаописується обмінюються повідомленнями об'єктами. p>
Об'єктно-орієнтованим мовам притаманні наступні характеристики: p>
. абстрактні типи даних; p>
. приховування реалізації зовнішнього інтерфейсу (інкапсуляція); p>
. успадкування властивостей і поведінки об'єктів; p>
. динамічне зв'язування імені зі значенням; p>
. поліморфізм імен повідомлень; p>
. автоматичне керування пам'яттю. p>
Чисто об'єктно-орієнтовані мови, такі як Smalltalk, Eiffel,володіют всіма перерахованими тут властивостями. Широко поширеніоб'єктно-орієнтовані розширення традиційних мов (Сі + +, Турбо-
Паскаль), в яких присутні не всі об'єктно-орієнтовані риси. P>
Об'єктно-орієнтована база класів являє собою ієрархічнийнабір (бібліотеку) класів - будівельних блоків для побудови нових рівнівстворюваного програмного продукту. Тут зберігаються класи «джентльменськогонабору »бібліотек мов програмування, а також класи, які описуютьпоняття прикладних предметних областей. p>
Класи представляють собою накопичені знання про раніше виготовленихпродуктах. База класів повинна забезпечувати легкий пошук класів, їхвивчення, модифікацію, включення нових класів. Мова і база класівоб'єднуються в інтегровану об'єктно-орієнтоване середовищепрограмування, в якій всі засоби підтримки процесу розробкипрограм написані цією мовою і входять на рівних правах до складу базикласів. Типовими прикладами таких засобів є графічнийбагатовіконний інтерфейс з користувачем, ієрархічні меню, компілятор,інтерпретатор, відладчик, текстовий редактор. p>
Розробка програм за об'єктно-орієнтованої технології зводиться достворення нових класів, їх тестування та включенню до складу об'єктно -орієнтованого середовища розробки. p>
Кожен окремий клас, завдяки своїй незалежності, можерозроблятися і тестуватися окремо. Перевірений клас включається добібліотеку і стає надбанням поточної і подальших розробок.
Особливістю об'єктно-орієнтованої технології розробки програмє можливість швидкого прототипирування. У цьому випадку класирозв'язуваної задачі описуються тільки своїми основними властивостями іповедінкою, що дозволяє відразу перевірити головну ідею розв'язання задачі. Якщовона невірна, то може бути швидко змінена і перевірено знову. При цьомузаощаджуються істотні витрати на програмування деталей. p>
Розглянемо, яким чином в об'єктно-орієнтованої технологіїдолаються три перерахованих нестачі функціонального підходу. p>
1. Формалізація зв'язків між етапами. Всі етапи (рівні), починаючи аналізу програми, описуються на єдиному формалізованому мовою. P>
Фактично чіткої межі між рівнями. P>
2. Єдиний неформалізовані рівень - вимоги користувача. P>
Цей рівень взагалі важко формалізуємо, оскільки кінцевим користувачем або замовником зазвичай є непрофесіонал в області програмування і йому необхідно запропонувати свободу у викладі вимог до задачі. Те, що потрібно для наступних специфікацій, - перелік об'єктів, їх властивостей і взаємних дій - не виходить за рамки звичайного опису проблеми природною мовою. Перехід від цього опису до специфікації програми робиться вручну, але практично один в один з точністю до простого синтаксису об'єктно-орієнтованої мови. P>
3. Гнучкість. Внесення змін всередині об'єкта або класу абсолютно не зачіпає його клієнтів, тобто тих об'єктів, які його використовують, зрозуміло, якщо зовнішній інтерфейс об'єкту залишається незмінним. Це фундаментальний принцип об'єктно-орієнтованого програмування. P>
Таким чином забезпечується гнучкість при програмуванні знизу-вгору. P>
В даний час об'єктно-орієнтований підхід є одним зшвидко розвиваються, напрямків у проектуванні систем. Прикладом можутьбути об'єктно-орієнтований аналіз - методологія розробки систем,запропонована Йорданом, об'єктно-орієнтоване проектування, об'єктно -орієнтоване програмування, реалізоване у численнихкомпіляторах C + +, Object Pascal, Borland Pascal, Smalltalk. p>
3. Об'єктно-орієнтований підхід p>
Основні ідеї об'єктно-орієнтованого підходу спираються на наступніположення: p>
. програма являє собою модель деякого реального процесу, частини реального світу; p>
. модель реального світу або його частини може бути описана як сукупність взаємодіючих між собою об'єктів; p>
. об'єкт описується набором параметрів, значення яких визначають стан об'єкта, і набором операцій (дій), які може виконувати об'єкт; p>
. взаємодія між об'єктами здійснюється посилкою спеціальних повідомлень від одного об'єкта до іншого. Повідомлення, отримане об'єктом, може вимагати виконання певних дій, наприклад, зміни стану об'єкта; p>
. об'єкти, описані одним і тим же набором параметрів і здатні виконувати один і той же набір дій, являють собою клас однотипних об'єктів. p>
З точки зору мови програмування клас об'єктів можнарозглядати як тип даного, а окремий об'єкт - як дане цього типу.
Визначення програмістом власних класів об'єктів для конкретногонабору завдань повинно дозволити описувати окремі завдання в термінах самогокласу задач (при відповідному виборі імен типів та імен об'єктів, їхпараметрів і виконуваних дій). p>
Таким чином, об'єктно-орієнтований підхід припускає, що прирозробці програми повинні бути визначені класи використовуються у програміоб'єктів і побудовані їх описи, потім створені екземпляри необхіднихоб'єктів і визначено взаємодію між ними. p>
Поняття об'єкта і класу тісно пов'язані. Тим не менш, існує важливевідмінність між цими поняттями. Клас - це абстракція істотниххарактеристик об'єкта. Клас - опис множин об'єктів, якіподіляють однакові властивості, операції, відносини і семантику (сенс).
Будь-який об'єкт - просто екземпляр класу. Розрізняють внутрішньо поданнякласу (реалізацію) і зовнішнє уявлення (інтерфейс). p>
Значне збільшення складності завдань, що вирішуються за допомогоюкомп'ютерів, призводить до збільшення розмірів і складності програм, щопороджує труднощі при їх розробці та налагодженні. Розгляд будь-якої складноїсистеми вимагає застосування техніки декомпозиції - розбиття на складовіелементи. Відомі дві схеми декомпозиції: алгоритмічна декомпозиція іоб'єктно-орієнтована декомпозиція. p>
В основі алгоритмічної декомпозиції лежить розбиття по діях --алгоритмами. Ця схема подання застосовується в звичайних програмнихзасобах. Об'єктно-орієнтована декомпозиція забезпечує розбиття поавтономним особам - об'єктів реального (або віртуального) світу. Ці особи
(об'єкти) - більш «великі» елементи, кожен з них несе в собі й описудій, і опису даних. p>
Об'єктно-орієнтоване подання програмного засобугрунтується на принципах абстрагування, інкапсуляції, модульності іієрархічної організації. Кожен з цих принципів не новий, але їхспільне застосування розраховане на проведення об'єктно-орієнтованоїдекомпозиції. Це визначає модифікацію їх змісту і механізміввзаємодії один з одним. p>
Апарат абстракції - зручний інструмент для боротьби зі складністюреальних систем. Створюючи поняття в інтересах якої-небудь завдання, мивідволікаємося (абстрагуємося) від несуттєвих характеристик конкретнихоб'єктів, визначаючи тільки істотні характеристики. Абстрагуваннязводиться до формування абстракцій. Кожна абстракція фіксує основніхарактеристики об'єкта, які відрізняють його від інших видів об'єктів ізабезпечують ясні понятійні кордону. Абстракція концентрує увагу назовнішньому представленні об'єкту, дозволяє відокремити основне в поведінціоб'єкту від його реалізації. Абстракцію зручно будувати шляхом виділенняобов'язків об'єкта. p>
Інкапсуляція і абстракція - взаємодоповнюючі поняття: абстракціявиділяє зовнішнє поводження об'єкта, а інкапсуляція містить і приховуєреалізацію, що забезпечує цю поведінку. Інкапсуляція досягається задопомогою інформаційної закритості. Зазвичай ховаються структура об'єктів іреалізація їх методів. Інкапсуляція є процесом розподілу елементівабстракції на секції з різною видимістю. Інкапсуляція служить длявідділення інтерфейсу абстракції від її реалізації. p>
У мовах С + +, Object Pascal, Ada 95 абстракція класів та об'єктівформують логічну структуру системи. При виробництві фізичноїструктури ці абстракції поміщаються в модулі. У великих системах, декласів сотні, модулі допомагають керувати складністю. Модулі служатьфізичними контейнерами, в яких оголошуються класи та об'єкти логічноїрозробки. p>
Модульність визначає здатність системи піддаватися декомпозиції наряд сильного зв'язку і слабо зчеплених модулів. Загальна мета декомпозиції намодулі: зменшення термінів розробки та вартості програмного засобу зарахунок виділення модулів, що проектуються і змінюються незалежно.
Кожна модульна структура має бути досить простий, щоб бутиповністю зрозумілою. Зміна реалізації модулів повинно проводитися беззнання реалізації інших модулів і без впливу на їхню поведінку. p>
Визначення класів і об'єктів виконується в ході логічноїрозробки, а визначення модулів - в ході фізичної розробки системи.
Ці дії сильно взаємозалежні, здійснюються Ітеративний. Припустимо, в
Ada 95 потужним засобом забезпечення модульності є пакет. P>
Чудовим доповненням до попередніх принципам є ієрархічнаорганізація - формування з абстракцій ієрархічної структури.
Ухвалою ієрархії в проекті спрощуються розуміння проблем замовника і їхреалізація - складна система стає доступній для огляду людиною. Ієрархічнаорганізація задає розміщення абстракція на різних рівнях описусистеми. p>
Двома важливими інструментами ієрархічної організації в об'єктно -оріентрованних системах є: p>
1. структура з класів ( «is a»-ієрархія); p>
2. структура з об'єктів ( «part of»-ієрархія). p>
Найчастіше «is a»-ієрархічна структура будується за допомогоюуспадкування. Спадкування визначає відношення між класами, де класрозділяє структуру або поведінку, визначені в жодному іншому (одиничнеуспадкування) або в кількох інших (множинне спадкоємство) класах.
Інший різновид ієрархічної організації - «part of»-ієрархічнаструктура - базується на ставленні агрегації. Агрегація не єпоняттям, унікальним для об'єктно-орієнтованих систем. Наприклад, будь-якиймова програмування, що дозволяє структури типу «запис», підтримуєагрегацію. І все ж агрегація особливо корисна у поєднанні зі спадщиною:агрегація забезпечує фізичну угруповання логічно зв'язковий структури,а успадкування дозволяє легко і багаторазово використовувати ці спільні групив інших абстракціях. p>
Розглянемо більш пильно об'єкти - конкретні сутності, якііснують в часі і просторі. p>
Об'єкт - це конкретне уявлення абстракції. Об'єкт маєіндивідуальністю, станом і поведінкою. Структура та поведінка подібнихоб'єктів визначені в їх спільному класі. Терміни «екземпляри класу» і
«Об'єкт» взаємозамінні. P>
Індивідуальність - це характеристика об'єкта, яка відрізняє його відвсіх інших об'єктів. p>
Стан об'єкта характеризується переліком всіх властивостей об'єкта іпоточними значеннями кожного з цих властивостей. Об'єкти не існуютьізольовано один від одного. Вони піддаються впливу або самівпливаю на інші групи. Поведінка характеризує те, як об'єктвпливає на інші об'єкти (або піддається впливу) в термінахзмін його стану і передачі повідомлень. Поведінка об'єкта єфункцією як його стану, так і виконуваних ним операцій. Кажуть, щостан об'єкта представляє сумарний результат його поведінки. Операціяпозначає обслуговування, що об'єкт пропонує своїм клієнтам. Можливіп'ять видів операцій клієнта над об'єктом: p>
1) модифікатор (змінює стан об'єкта); p>
2) селектор (дає доступ до стану, але не змінює його); p> < p> 3) ітератор (доступ до змісту об'єкта по частинах, в строго визначеному порядку); p>
4) конструктор (створює об'єкт і ініціалізує його стан); p>
5) деструктор (руйнує об'єкт і звільняє займану їм пам'ять). p>
У чистих об'єктно-орієнтованих мовах програмування операціїможуть оголошуватися тільки як методи - елементи класів, примірникамияких є об'єкти. Гібридні мови дозволяють писати операції яквільні підпрограми (поза класів). У загальному випадку всі методи і вільніпідпрограми, асоційовані з конкретним об'єктом, утворюють протокол.
Таким чином, протокол визначає оболонку припустимого поводження об'єкта ітому містить в собі цільне (статичне і динамічне) поданняоб'єкта. Великий протокол корисно розділяти на логічні угруповання,розділяють простір поведінки об'єкт, позначають ролі, які можеграти об'єкт. З точки зору зовнішнього середовища важливе значення має такепоняття, як обов'язки об'єкта. Обов'язки означають зобов'язанняоб'єкта забезпечити певну поведінку. Обов'язками об'єкта євсі види обслуговування, які він пропонує клієнтам. У світі об'єкт граєпевні ролі, виконуючи свої обов'язки. p>
Наявність в об'єкта внутрішнього стану означає, що порядоквиконання ним операцій дуже важливий. Тобто об'єкт може представлятися якнезалежний автомат. Можна виділити активні і пасивні об'єкти. Активнийоб'єкт має власний канал (потік) управління, пасивний - ні.
Активний об'єкт автономний, він може проявляти свою поведінку безвпливу з боку інших об'єктів. Пасивний об'єкт, навпаки, можезмінювати свій стан тільки під впливом інших об'єктів. p>
У полі зору розробника програмного забезпечення знаходяться необ'єкти-одинака, а взаємодіючі об'єкти, адже саме взаємодіяоб'єктів реалізує поведінку системи. Відносини між парою об'єктівгрунтуються на взаємній інформації про дозволені операції і очікуваномуповедінці. p>
4. Оцінка складності програмних систем p>
При конструюванні об'єктно-орієнтованих програмних засобівзначна частина витрат припадає на створення візуальних моделей. Дужеважливо коректно і всебічно оцінити якість цих моделей, зіставившиякості числову оцінку. Рішення даної задачі вимагає введенняспеціального метричного апарату. Такий апарат розвиває ідеїкласичного оцінювання складних програмних систем, заснованого наметриках складності, зв'язності і зчеплення. Разом з тим він враховуєспецифічні особливості об'єктно-орієнтованих рішень. Об'єктно -орієнтовані метрики вводяться з метою: p>
. поліпшити розуміння якості продукту; p>
. оцінити ефективність процесу конструювання; p>
. поліпшити якість роботи на етапі проектування. p>
Для будь-якого інженерного продукту метрики повинні орієнтуватися на йогоунікальні характеристики. З точки зору метрик виділяють п'ятьхарактеристик об'єктно-орієнтованих систем: локалізацію, інкапсуляцію,інформаційну закритість, наслідування і способи абстрагування об'єктів.
Ці характеристики роблять максимальний вплив на об'єктно -орієнтовані метрики. p>
Локалізація фіксує спосіб угруповання інформації в програмі. Укласичних методах, де використовується функціональна декомпозиція,інформація локалізується навколо функцій. Функції в них реалізуються якпроцедурні модулі. У методах, керованих даними, інформація групуєтьсянавколо структур даних. В об'єктно-орієнтованої середовищі інформаціягрупується всередині класів або об'єктів (інкапсуляція, як даних, так іпроцесів). Оскільки в класичних методах основний механізм локалізації
- Функція, програмні метрики орієнтовані на внутрішню структуру абоскладність функцій (довжина модуля, зв'язність, цікломатіческая складність) абона спосіб, яким функції зв'язуються один з одним (зчеплення модулів).
Так як в об'єктно-орієнтованої системи базовим елементом єклас, то локалізація тут грунтується на об'єктах. Тому метрикиповинні застосовуватися до класу (об'єкта) як до комплексної сутності. Крімтого, між операціями (функціями) і класами можуть бути відносини нелише «один-до-одного». Тому метрики, що відображають способивзаємодії класів, повинні бути пристосовані до відносин «один-ко -багатьох »,« багато-до-багатьох ». p>
Інкапсуляція - упаковка (зв'язування) сукупності елементів. Длякласичних програмних засобів прикладами нізкоуро?? Невою інкапсуляціїє записи і масиви. Механізмом інкапсуляції середнього рівня єпідпрограми. В об'єктно-орієнтованих системах інкапсулюютьсяобов'язки класу, що представляються його властивостями, операціями істанами. Для метрик облік інкапсуляції призводить до зміщення фокусувимірювань з одного модуля на групу властивостей і обробних модулів
(операцій). Крім того, інкапсуляція переводить вимірювання на більш високийрівень абстракції. Навпаки, класичні метрики орієнтовані на низькийрівень - кількість бульових умов (цікломатіческая складність) ікількість рядків програми. p>
Інформаційна закритість робить невидимими операційні деталіпрограмного компонента. Іншим компонентів доступна тільки необхіднаінформація. Якісні об'єктно-орієнтовані системи підтримуютьвисокий рівень інформаційної закритості. Таким чином, метрики,вимірюють ступінь досягнутої закритості, тим самим відображають якістьоб'єктно-орієнтованого проекту. p>
Спадкування - механізм, що забезпечує тиражування обов'язківодного класу в інші класи. Спадкування поширюється через всірівні ієрархії класів. Стандартні програмні засоби не підтримуютьцю характеристику. Оскільки спадкування - основна характеристикаоб'єктно-орієнтованих систем, на ній фокусуються багато об'єктно -орієнтовані метрики (кількість дітей - нащадків класу, кількістьбатьків, висота класу в ієрархії наслідування). p>
Абстракція - це механізм, який дозволяє проектувальнику виділятиголовне в програмному компоненті (як властивості, так і операції) без урахуваннядругорядних деталей. У міру переміщення на більш високі рівніабстракції ми ігноруємо все більша кількість деталей, забезпечуючи всізагальне уявлення поняття або елемента. У міру переміщення на більшнизькі рівні абстракції ми вводимо все більша кількість деталей,забезпечуючи більш точне уявлення поняття або елемента. Клас - цеабстракція, яка може бути представлена на різних рівняхдеталізації і різними способами. Тому об'єктно-орієнтованіметрики повинні представляти абстракції в термінах вимірювань класу. p>
Класичною мірою складності внутрішніх зв'язків модуля єзв'язність, а класичної мірою складності зовнішніх зв'язків - зчеплення. p>
Зв'язність модуля - міра залежності його частин, це внутрішняхарактеристика модуля. Чим вище зв'язність модуля, тим краще результатпроектування. Для вимірювання зв'язності використовують поняття сили зв'язності
(СС). Існує 7 типів зв'язності: p>
1. Зв'язність за збігом (СС = 0). У модулі відсутні явно виражені внутрішні зв'язки. P>
2. Логічна зв'язність (СС = 1). Частини модуля об'єднані за принципом функціонального подоби. Наприклад, модуль складається з різних підпрограм обробки помилок. При використанні такого модуля клієнт вибирає тільки одну з підпрограм. Недоліками є складне пару і велика ймовірність занесення помилок при з