asyan.org
добавить свой файл
1
Створення бібліотек компонентів
Динамічна бібліотека (DLL)набір функцій, скомпонованих разом у вигляді бінарного файлу, який може бути динамічно завантажений в адресний простір процесу, що використовує ці функції. Динамічне завантаження (dynamic loading) — завантаження під час виконання процесу.

DLL-бібліотеки – основа компонентної ідеології і повторного використання коду.

Оскільки динамічні бібліотеки є двійковими файлами, можна організувати спільну роботу бібліотек, розроблених із використанням різних мов програмування і програмних засобів, що спрощує створення застосунків на основі програмних компонентів.
Технологія створення DLL

1. Запустіть Visual Studio

2. В головному меню виберіть пункт File|New|Project, задайте шаблон проекту «Class Library». У вікні створення DLL всі поля заповнені значеннями за замовчанням. Їх слід перевизначити, задаючи власну інформацію. Задавши необхідні установки і клацнувши по кнопці «OK», отримаємо автоматично побудований проект DLL, відкритий в середовищі Visual Studio.
Імена класів повинні бути змістовними. Змініть ім'я «Class1» на ім'я бібліотеки, наприклад, «MySin». Для цього у вікні коду проекту виділіть ім'я змінної об'єкту, потім в головному меню виберіть пункт Refactor і підпункт Rename. У вікні, що відкрилося, вкажіть нове ім'я. Тоді будуть показані всі місця, що вимагають перейменування об'єкту. В нашому прикладі буде лише одна очевидна заміна, але в загальному випадку замін багато, так що автоматична заміна всіх входжень корисна.

Наступний крок також продиктований правилом стилю – ім'я класу і ім'я файлу, що зберігає клас, повинні бути однаковими. Перейменування імені файлу робиться безпосередньо у вікні проектів Solution Explorer.

І наступний крок, продиктований також важливим правилом стилю, - додавання коментаря. Для цього в рядку перед заголовком класу слід набрати три слеша (три косі риски). В результаті перед заголовком класу з'явиться заголовний коментар – тег «summary», в який і слід додати короткий, але змістовний опис призначення класу. Теги «summary», якими слід супроводжувати класи, відкриті (public) методи і поля класу відіграють три важливі ролі. Вони полегшують розробку і супровід проекту, роблячи його самодокументованим. Клієнти класу при створенні об'єктів класу отримують інтелектуальну підказку, що пояснює суть того, що можна робити з об'єктами. Спеціальний інструментарій дозволяє побудувати документацію за проектом, що включає інформацію з тегів «summary».

У нашому випадку коментар до класу MySin може бути достатньо простим – «Обчислення математичних функцій ».

Напишемо реалізацію одного методу класу – обчислення функції Sin(x) через ряд Тейлора.


Спочатку напишемо коментарі до методу (у форматі XML). Далі напишемо реалізацію методу. Отримаємо код.
Лістинг 2. Код бібліотечного методу

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace MyLib

{

///Обчислення математичних фунцій
public class MySin

{

///

/// Sin(x)

///


///
кут в радіанах – перший аргумент функції Sin


///
показник ступеня – другий аргумент функції Sin


/// Повертає значення функції Sin для заданого кута

public static double Sin(double x, int n)

{

double result = 0;

for (int i = 0; i < n; i++)

{

result = result + (Math.Pow((-1), i) * Math.Pow(x, (2 * i + 1))) / F(2 * i + 1);

}

return result;

}

static double F(int n)

{

double tmp = 1;

for (int i = 1; i <= n; i++)

{

tmp = tmp * i;

}

return tmp;

}
}

}

Побудуйте Рішення, що містить проект, для чого в Головному меню виберіть пункт Build|Build Solution. В результаті успішної компіляції буде побудований файл з розширенням dll. Оскільки побудована збірка не містить виконуваного файлу, то безпосередньо запустити наш проект на виконання не удасться. Побудуємо консольний проект, до якого приєднаємо нашу DLL, і протестуємо, наскільки коректно працюють створені нами методи.

Створення консольного проекту для тестування функції з бібліотеки


1. Виберіть пункт меню File|New|Project, задайте тип проекту ConsoleApp2, назвіть його – ConsoleMySin, вкажіть, що проект додається до існуючого Рішення. В результаті у вже існуюче Рішення додасться ще один проект.

2. Напишіть код, який викликає реалізовану функцію Sin(x,n), стандартну функцію Sin(x), обчислює похибку і виводить результат на консоль.
Лістинг 3. Консольний застосунок, який викликає бібліотечний метод

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;
namespace ConsoleMySin

{

class Program

{

///

/// Виклик бібліотечного методу Sin(x,n) з MySin.dll

///


///

static void Main(string[] args)

{

Console.WriteLine("Введіть x- кут в радіанах");

double x = double.Parse(Console.ReadLine());

Console.WriteLine("Введіть показник ступеня n");

int n = int.Parse(Console.ReadLine());

//виклик метода обчислення sin(x) бібліотеки

double my_sinus = MyLib.MySin.Sin(x, n);

//виклик метода з класу Math

double sinus = Math.Sin(x);

double delta = sinus - my_sinus;

Console.WriteLine("my_sinus= {0},sin={1},delta={2}", my_sinus, sinus, delta);

Console.ReadKey();
}

}

}
3. Побудуйте рішення і отримаєте повідомлення про помилку. Наша бібліотека не підключена до проекту.

4. Підключення проекту бібліотеки до консольного проекту.

Для цього додайте посилання на проект з DLL MySin. У вікні Solution Explorer наведіть покажчик миші до імені консольного проекту і з контекстного меню виберіть пункт меню «Add Reference». Виберіть вкладку «Projects». Оскільки проект MySin включений в Рішення, то він автоматично з'явиться у вікні. Якщо посилання потрібно встановити на проект, не включений в Рішення, то у вікні додавання посилань потрібно вказати шлях до проекту.

Посилання на DLL з'явиться в папці «References» консольного проекту. Тепер проекти зв'язані і з консольного проекту доступний реалізований бібліотечний метод.

5. Перебудуйте рішення, щоб не було помилок.

6. Встановлення стартового проекту.

У вікні Solution Explorer наведіть курсор миші на заголовок консольного проекту і виберіть:
Set as StartUp Project
Після цього його можна запустити на виконання.