Розробка бібліотечних засобів вирішення задач лінійної алгебри.
ОБ'ЄКТ ДОСЛІДЖЕННЯ: класові типи - чисельна квадратна матриця і одновимірний динамічний масив із змінними розмірами.
МЕТОД ДОСЛІДЖЕННЯ: розробка алгоритмів і написання класів функцій на мові Borland С + +.
У курсовому проекті розроблені алгоритми для вирішення основних задач лінійної алгебри. За цим алгоритмам на мові Borland C + + написані два класи функцій, орієнтованих на об'єкти типу чисельна квадратна матриця і одновимірний масив (вектор). У класи включені арифметичні операції, операції вводу-виводу, функції обчислення визначника матриці, довжини вектора, а також рішення системи лінійних алгебраїчних рівнянь. Для наочності отриманих результатів розроблена демонстраційно-Тестуюча програма.
Результати курсового проекту можуть бути використані на практиці для розв'язання систем лінійних рівнянь та інших задач лінійної алгебри.
ВСТУП
Об'єктно-орієнтоване програмування - це новий спосіб підходу до програмування. Таке програмування, взявши кращі риси структурного програмування, доповнює його новими ідеями, які переводять в нову якість підхід до створення програм.
Найбільш важливе поняття мов об'єктно-орієнтованого програмування - це поняття об'єкта (object). Об'єкт - це логічна одиниця, яка містить дані і правила (методи) обробки цих даних. У мові С + + в якості таких правил обробки виступають функції, тобто об'єкт у Borland C + + поєднує в собі характеристики та функції, що обробляють ці дані.
Одним з найголовніших понять мови С + + є поняття класу (class). У мові С + + для того, щоб визначити об'єкт, треба спочатку визначити його форму за допомогою ключового слова class [1].
Найближчою аналогією класу є структура. Пам'ять виділяється об'єкту тільки тоді, коли клас використовується для його створення. Цей процес називається створенням екземпляра класу (class instance).
Будь-який об'єкт мови С + + має однакові атрибути і функціональність з іншими об'єктами того ж класу. За створення своїх класів і поведінку об'єктів цих класів повну відповідальність несе сам програміст. Працюючи в деякому середовищі, програміст дістає доступ до великих бібліотек стандартних класів.
Зазвичай, об'єкт знаходиться в деякому унікальному стані, що визначається поточними значеннями його атрибутів. Функціональність об'єктного класу визначається можливими операціями над екземпляром цього класу.
Шаблони, або параметризрвані типи, дозволяють конструювати сімейство пов'язаних функцій або класів. Узагальнений синтаксис визначення шаблону має вигляд
template <список шаблонних типів> (оголошення);
Розрізняють шаблони функцій і шаблони класів.
Шаблон класів задає зразок визначень сімейства класів. Над типізований елементами цього класу виконуються однакові базові операції незалежно від конкретного типу елементів [2].
Введення в об'єктно-орієнтоване програмування
Об'єктно-орієнтоване програмування являє собою трохи більше автоматизований спосіб програмування. Об'єктно-орієнтовані програми - це не просто процедурні програми, переведені на новий синтаксис. Вони повинні будується на новій філософії розробки. Для них потрібна нова стратегія програмування, яку часто буває важко освоїти [3].
Основна ідея ООП: програма складається з групи об'єктів, часто пов'язаних між собою. У С + + об'єкти описуються за допомогою нового типу даних class. Клас включає в себе набір змінних (даних) і операцій (методів або функцій-членів), які діють на ці змінні. Отриманими об'єктами можна керувати за допомогою повідомлень.
У ООП об'єкти включають в себе не тільки дані (дані-члени), а й методи (функції-члени) впливу на ці дані. Ці дві частини в поєднанні утворюють функціональну одиницю програми. Іншими словами, об'єкти містять дані та методи роботи з цими даними. Нижче наведено три основні переваги об'єктно-орієнтованих програм в порівнянні з еквівалентними програмами, розробленими зверху вниз.
Супровід програми. Програми простіше читати і розуміти, ООП дозволяє керувати складністю програми, залишаючи видимими програмісту тільки істотні деталі.
Модифікація програми (додавання або виключення можливостей). Ви можете часто робити доповнення або виключення в програмі, наприклад, при роботі з базою даних, просто додаючи і виключаючи об'єкти. Нові об'єкти можуть наслідувати всі властивості базових об'єктів, необхідно тільки додати або прибрати що відрізняються властивості.
Повторне використання. Можна зберегти грамотно розроблений об'єкт в наборі корисних програм і потім вставити його в нову програму з невеликими змінами або без змін.
ООП повністю належить до світу С + +, оскільки в С немає основного ядра - абстрактного типу даних class [5]. Тому переписати процедурно-орієнтовану програму як об'єктно-орієнтовану набагато складніше, ніж просто підставити замість одного ключового слова іншого.
ООП представляє собою техніку програмування, яка дозволяє розглядати основні ідеї як безліч об'єктів. Використовуючи об'єкти, можна уявити завдання, які необхідно виконати, їх взаємодія і будь-які поставлені умови, які повинні бути дотримані. Структура даних часто утворює основи об'єктів; таким чином у С або С + + тип struct може утворювати елементарний об'єкт. Зв'язок з об'єктом можна організувати за допомогою повідомлень. Використання повідомлень схоже на виклик функцій у процедурно-орієнтованої програми. Коли об'єкт отримує повідомлення, вступають в дію методи, що містяться в об'єкті. Методи (їх іноді називають Функція-членами) аналогічні функціям процедурно-орієнтованого програмування. Проте метод є частиною об'єкта, а не чимось окремим, як було б у процедурному аналогу.
Основні терміни та положення ООП
Інкапсуляція даних
Цей термін включає в себе логічне зв'язування даних з конкретною операцією. Вона так само означає, що вони є не-глобальними доступними всій програмі, а локальними - доступними тільки малої її частини. Інкапсуляція також автоматично передбачає захист даних. Саме для цього призначена структура class в С + +. У класі керування функціональними деталями об'єкту здійснюється за допомогою специфікатор private, public, protected.
Ієрархія класів
У загальному випадку можна уявити собі ієрархію класів як родовід в генеалогічному дереві, де клас С + + представляє собою шаблон для створення класів-нащадків. Об'єкти, отримані з опису класу, називають примірниками цього класу. Можна створити ієрархію класів з класом-батьком і декількома класами-нащадками. Основою для цього є похідні класи.
Спадкування
Спадкування в ООП дозволяє класу отримувати совйства іншого класу об'єктів. Батьківський клас є шаблоном для похідного класу; цей шаблон можна змінювати різними способами. Спадкування є важливим положенням, оскільки воно дозволяє повторно використовувати визначення класу без значних змін в коді.
Поліморфізм
Будується на описаної вище концепції наслідування. Програма посилає одне і теж повідомлення як об'єкту батьківського класу, так і всіх об'єктах похідних класів. І батьківський клас, і класи-нащадки дадуть відповідь на повідомлення відповідним чином. Поліморфізм дає можливість доповнювати вже існуючі частини програми.
Віртуальні функції
Віртуальні функції визначаються в батьківському класі, а в похідних класах відбувається довизначення цих функцій і для них створюються нові реалізації. Під час роботи з віртуальними функціями повідомлення передаються як покажчики, які вказують на об'єкт замість прямої передачі об'єкту. Віртуальні функції використовують таблицю для адресної інформації. Ця таблиця ініціалізується під час виконання за допомогою конструктора.
Конструктор викликається кожного разу, коли створюється об'єкт його класу. Завдання конструктора в даному випадку полягає в зв'язуванні віртуальної функції з таблицею адресної інформації. Під час компіляції адреса віртуальної функції невідомий; натомість їй відводиться позиція в таблиці адрес. Ця позиція буде містити адресу функції [5].
Глава 2. Задачі лінійної алгебри
2.1. Обчислення визначників
Нехай маємо квадратну матрицю розміром n '
n:
. (2.1.1)
Потрібно обчислити визначник матриці det (A).
еквівалентним перетворенням матриці називають перетворення матриці, що не змінюють величину визначника матриці. Еквівалентним є наступне перетворення: будь-яку її рядок можна замінити сумою вихідної рядки і будь-який інший, помноженої на будь-яке число, не рівне нулю.
Використовуючи такого роду перетворення можна спробувати привести ис-Ходна матрицю до Трикутному увазі:
,
при цьому det (A) = det (A