69094

Кросплатформне програмування. Створення DLL-бібліотеки

Лабораторная работа

Информатика, кибернетика и программирование

Запустимо Visual Studio 2008, із стартової сторінки перейдемо до створення проекту, виберемо тип проекту «Class Library». У вікні створення DLL всі поля заповнені значеннями за замовчанням. Як правило, їх слід перевизначити, задаючи власну інформацію. У полі Name задати ім’я DLL – MyLib.

Украинкский

2014-09-29

53.28 KB

6 чел.

Кросплатформне програмування

Кредитний модуль 1

Лабораторна робота 1. Створення DLL-бібліотеки

Мета роботи:

1. Створення DLL-бібліотеки

2. Створення рішення з кількох проектів (модулів)

3. Створення DLL-бібліотеки як окремого рішення.

4. Вивчення структури збірки, метаданих збірки

Створити на диску папку з шифром групи, а в ній папку Lab1. В цій папці розмістити створені рішення.

1. Створення DLL-бібліотеки

Запустимо Visual Studio 2008, із стартової сторінки перейдемо до створення проекту, виберемо тип проекту «Class Library».  У вікні створення DLL всі поля заповнені значеннями за замовчанням. Як правило, їх слід перевизначити, задаючи власну інформацію.

У полі Name задати ім'я DLLMyLib.

У полі Location вказується шлях до каталогу, де зберігатиметься Рішення, що містить проект.

Розмістіть рішення в папці Lab1

У полі Solution вибраний елемент «Create New Solution», що створює нове Рішення. Альтернативою є елемент списку, вказуючий, що проект може бути доданий до існуючого Рішення.

У вікні Solution Name задано ім'я Рішення. Вибрати Lab1.

Зверніть увагу на інші установки, зроблені в цьому вікні, - включений прапорець (за замовчанням) «Create directory for solution», у верхньому віконці із списку можливих каркасів вибраний каркас Framework .Net 3.5. Задавши необхідні установки і клацнувши по кнопці «OK», отримаємо автоматично побудовану заготівку проекту DLL, відкриту в середовищі Visual Studio 2008 .

Імена класів повинні бути змістовними. Змінимо ім'я «Class1» на ім'я «MySin».  Для цього у вікні коду проекту виділимо ім'я змінної об'єкту, потім в головному меню виберемо пункт Refactor і підпункт Rename. У вікні, що відкрилося, вкажемо нове ім'я. Тоді будуть показані всі місця, що вимагають перейменування об'єкту. В даному випадку буде лише одна очевидна заміна, але в загальному випадку замін багато, так що автоматична заміна всіх входжень корисна.

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

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

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

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

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace MyLib

{

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

   public class MySin

   {

    /// <summary>

    /// Sin(x)

    /// </summary>

    /// <param name="x">кут в радіанах – перший аргумент функції  Sin</param>

    ///<param name="n">показник ступеня – другий аргумент функції  Sin</param>

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

       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, і протестуємо, наскільки коректно працюють створені нами методи.

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

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

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleMySin

{

   class Program

   {

       /// <summary>

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

       /// </summary>

       /// <param name="args"></param>

       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. Підключення проекту бібліотеки до консольного проекту.

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

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

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

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

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

Set as StartUp Project

Після цього його можна запустити на виконання.

5. Створення Windows-проекту в тому самому рішенні.

Виберемо пункт меню File|New|Project, задамо тип проекту Windows Forms Application, дамо йому ім'я – WindowsMySin, вкажемо, що проект додається до існуючого Рішення Lab1.

На формі створимо 2 текстові поля для введення вхідних параметрів, третє і четверте – для результатів.

Додамо 2 кнопки. При натисканні кнопки "Обчислення Sin" виконується виклик функцій, "Вихід" – завершення роботи.

Код форми:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsMySin

{

   public partial class Form1 : Form

   {

       public Form1()

       {

           InitializeComponent();

       }

       private void button1_Click(object sender, EventArgs e)

       {

          double x = double.Parse(txt_x.Text);

          int n = int.Parse(txt_n.Text);

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

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

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

          double sinus = Math.Sin(x);

          txt_y1.Text = my_sinus.ToString();

          txt_y2.Text = sinus.ToString();

       }

       private void button2_Click(object sender, EventArgs e)

       {

           this.Close();

       }

   }

}

6. Робимо проект стартовим і запускаємо на виконання. Результат:

7. Документування коду

    /// <summary>

    /// Sin(x)

    /// </summary>

    /// <param name="x">кут в радіанах – перший аргумент функції  Sin</param>

    ///<param name="n">показник ступеня – другий аргумент функції  Sin</param>

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

Завдання для самостійної роботи

1. Створити DLL-бібліотеку, яка містить методи, які реалізують завдання. В кожному методі вказати XML-коментарі.

2. Створити рішення, яке включає DLL-бібліотеку, консольний проект, який тестує роботу бібліотечних методів.

3. Створити Windows-проект в тому самому рішенні, який викликає бібліотечні методи.

4. Створити DLL-бібліотеку як окреме рішення. Зв'язати бібліотеку з Windows-проектом.

варіанту

Зміст завдання

1

1. Реалізувати функцію обчислення суми та різниці двох цілих чисел

2. Реалізувати функцію піднесення в квадрат добутку двох цілих чисел

3. Знайти значення поліному p=a*x^4-b*x^3+c*x+d. Значення  a,b,c,d – дійсні числа, ініціалізувати в коді, x ввести з консолі. Результат вивести на консоль.

4. Обчислити середнє арифметичне і середнє геометричне двох цілих чисел. Результат вивести на консоль. Використати методи класу Convert.

5. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс.

2

1. Реалізувати функцію піднесення до кубу частки двох цілих чисел

2. Реалізувати функцію обчислення добутку двох дійсних чисел

3. Знайти значення поліному p=a*x^5-1/b*x^4+c*x+d.  Значення  a,b,c,d – цілі числа, ініціалізувати в коді, x ввести з консолі. Результат вивести на консоль.  Використати методи класу Convert.

4. Обчислити периметр прямокутного трикутника за заданими катетами.

5. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс.

3

1. Реалізувати функцію обчислення добутку двох цілих чисел

2. Реалізувати функцію піднесення до кубу суми двох дійсних чисел

3. Знайти значення поліному p=23,5*x^5 + 30*x^4+10*x+87,3.  Значення x ввести з консолі. Результат вивести на консоль

4. Обчислити площу прямокутного трикутника за заданими катетами. Результат вивести на консоль. Використати методи класу Convert.

5. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс.

4

1. Реалізувати функцію обчислення частки двох цілих чисел

2. Реалізувати функцію піднесення до кубу частки двох дійсних чисел

3. Знайти значення поліному p=3,5*x^4 + 3*x^3+10*x^2+8,3.  Значення x ввести з консолі. Результат вивести на консоль

4. Ввести вартість покупки та суму, яку сплачує покупець. Вивести повідомлення про решту, яку має видати продавець. Результат вивести на консоль. Використати методи класу Convert.

5. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс.

5

1. Реалізувати функцію обчислення суми двох дійсних чисел

2. Реалізувати функцію піднесення цілого числа в квадрат

3. Обчислити площу прямокутника за заданими сторонами

4. Обчислити значення функції z=a*x^2+b*y^2 при будь-яких значеннях параметрів і змінних. Результат вивести на консоль. Використати методи класу Convert. 

5. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс.

6

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

2. Реалізувати функцію піднесення до кубу різниці двох дійсних чисел

3. Обчислити значення функції z=5*x^2+2*x*y+ y^2 при будь-яких значеннях параметрів і змінних. Результат вивести на консоль. Використати методи класу Convert.

4. Обчислити площу квадрату за заданою стороною

5. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс.

7

1. Реалізувати функцію обчислення добутку двох дійсних чисел

2. Реалізувати функцію піднесення цілого числа в квадрат

3. Обчислити значення функції z=6*x^2 - 12*x*y+ 25*y^2 при будь-яких значеннях параметрів і змінних. Результат вивести на консоль. Використати методи класу Convert

4. Обчислити  площу кола за радіусом 

5. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс

8

1. Реалізувати функцію обчислення суми трьох цілих чисел

2. Реалізувати функцію обчислення частки двох дійсних чисел

3. Обчислити значення функції y=2*x2 + 10*x+40. Змінна х вводиться з консолі 

4. Для вказаної площі території і кількості жителів країни знайти щільність населення. Вхідні дані ввести з консолі. Результат вивести на консоль. Використати методи класу Convert

5. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс

9

1. Реалізувати функцію піднесення в квадрат суми двох цілих чисел

2. Реалізувати функцію обчислення суми двох дійсних чисел

3. Обчислити довжину гіпотенузи і площу прямокутного трикутника по заданих катетах

4. Для вказаного об'єму і маси твердого тіла знайти його щільність. Вхідні дані ввести з консолі. Результат вивести на консоль. Використати методи класу Convert

5. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс

10

1. Реалізувати функцію піднесення в квадрат різниці двох цілих чисел

2. Реалізувати функцію обчислення суми трьох чисел

3. Ввести вартість покупки та суму, яку сплачує покупець. Вивести повідомлення про решту, яку має видати продавець

4.  Відомі координати на площині двох точок.  Обчислити відстань між цими точками. Результат вивести на консоль. Використати методи класу Convert

5. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс


 

А также другие работы, которые могут Вас заинтересовать

64501. Преднаука и философия познания в античном мире (доклассический период) 38.5 KB
  Спецификой греческой философии особенно в начальный период ее развития является стремление понять сущность природы космоса мира в целом. Он учил что основой мира является число.
64502. ЖК и ЭЛТ мониторы: плюсы и минусы. 29 KB
  В последнее время очень большой популярностью стали пользоваться ЖК мониторы а ЭЛТ мониторы почемуто отошли на задний план. Первый и самый значимый плюс ЖК монитора в том что он компактен и занимает мало места в отличие от своего собрата ЭЛТ.
64503. Эссе по роману П.Коэльо «Алхимик» о секрете счастья 10.13 KB
  Что ведет к подлинному счастью Беглый взгляд на нашу собственность и приоритеты на наше общество и средства массовой информации со всей очевидностью показывает что именно большинство людей искренне считают приносящим подлинное счастье: вещи причем самые разные.
64504. Творческий вклад Л.Н.Гумилёва в историческую науку. Фазы этногенеза и их характеристика. Примерная периодизация 21.55 KB
  Открытие формирование нового этноса связано с наличием у некоторых индивидов внутреннего стремления к целенаправленной деятельности всегда связанной с изменением окружающего общества или природы причём достижение цели часто губительно...
64505. Понятие права, его сущность и социальное назначение 29 KB
  Профессиональное понимание права практикующими юристами обыкновенно базируется на определении права как совокупности правовых норм право в объективном смысле исходящих от государства или поддерживаемых им в качестве масштаба средства решения юридических дел.
64506. Основные свойства формы костюма 32.5 KB
  Создание художественно-выразительной формы основная задача художника-модельера так как именно изменение формы одежды и является модой. Рассмотрим важнейшие из них помогающие созданию художественной выразительности предмета: величина это соотношение размеров формы с размерами других форм при их сопоставлении...
64507. «РУССКИЙ ЯЗЫК И КУЛЬУТРА РЕЧИ» КАК ЯЗЫКОВЕДЧЕСКАЯ ДИСЦИПЛИНА 15.65 KB
  Это определенный уровень владения нормами литературного языка степень умения использовать различные средства языка в соответствии с целями и задачами речи. Коммуникативный аспект КР: Высокая культура речи заключается в умении найти...