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. Вивести на консоль власні анкетні дані: Прізвище, ім'я, вік, група, курс


 

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

50240. Г. Спенсер как основатель органической школы в социологии 15 KB
  Герберта Спенсера считают основателем органической школы в социологии. В фундаментальном труде Основы социологии (1877) Спенсер проводил аналогии между биологической и социальной эволюцией, между живым организмом и обществом
50241. Принципы построения бухгалтерского финансового учета 80.5 KB
  Информация, которая формируется в системе бухгалтерского учета хозяйствующих субъектов, должна отвечать требованиям всех заинтересованных пользователей. В зависимости от круга интересов различных групп пользователей информацией в системе бухгалтерского учета можно выделить взаимосвязанные подсистемы
50242. ЭЛЕКТРОИСКРОВОЕ ЛЕГИРОВАНИЕ МЕТАЛЛИЧЕСКИХ МАТЕРИАЛОВ 411 KB
  Этот способ имеет следующие специфические свойства: материал анода легирующий материал может образовывать на поверхности катода легируемая поверхность прочно сцепленный с ней слой покрытия. В этом случае между материалом основы и покрытием существует промежуточный слой в котором протекают диффузионные процессы элементов катода и анода; процесс легирования может происходить так что материал анода не образует покрытия на поверхности катода а диффузно обогащает ее своими составляющими элементами; легирование можно проводить...
50243. ОПРЕДЕЛЕНИЕ МОМЕНТОВ ИНЕРЦИИ ТЕЛ МЕТОДОМ КРУТИЛЬНЫХ КОЛЕБАНИЙ 183.5 KB
  Инертные свойства тела при вращении определяются не только массой тела, но и расположением отдельных частей тела по отношению к оси вращения. Для характеристики этих свойств вводится понятие момента инерции.
50245. Понятие отчета в СУБД Access и его основных элементов 117 KB
  Понятие отчета в СУБД ccess и его основных элементов Отчеты представляют собой наилучшее средство представления информации из базы данных в виде печатного документа. Основные сведения об отчетах Рис.1 Вид окна Новый отчет Для создания отчета в окне базы данных выбираем пункт Отчет в раскрывающемся списке кнопки Новый объект на панели инструментов или кнопку Создать на вкладке Отчеты . Мастер отчетов запускает основного мастера для создания отчетов позволяющего выбрать поля для отчета задать форматы условия группировки и итоговые...
50246. Пояснить создание и настройку отчета в режиме конструктора СУБД Access 22.5 KB
  Настройка отчетов Чтобы изменить размер выделенного элемента управления можно воспользоваться маркерами изменения размера находящимися на сторонах в нижних углах и в правом верхнем углу. Для перемещения невыделенного элемента управления используйте указатель мыши. Если элемент управления имеет присоединенную надпись она перемещается вместе с ним. перемещать элемент управления и присоединенную надпись можно независимо друг от друга с помощью маркеров перемещения расположенных в левых верхних углах элемента управления и надписи.
50247. Визначення енергії дисоціації молекул йоду 896.5 KB
  Лабораторна установка для вивчення спектрів поглинання розчинів йоду зібрана на базі монохроматора УМ2 який використовується як спектроскоп. 3 виділені оптичні елементи що входять до складу монохроматора. 2 сфокусоване конденсорною лінзою 3 світло проходить через досліджуваний розчин 4 і потрапляє на вхідну щілину 6 монохроматора. Градуювання монохроматора Для цього потрібно див.
50248. СНЯТИЕ КРИВОЙ НАМАГНИЧИВАНИЯ И ПЕТЛИ ГИСТЕРЕЗИСА ФЕРРОМАГНИТНЫХ ВЕЩЕСТВ С ПОМОЩЬЮ ОСЦИЛЛОГРАФА 881.5 KB
  Классический расчет для круговой орбиты дает где eзаряд электрона;  его линейная скорость; rрадиус орбиты. Если для данного вещества экспериментально получить зависимость J=JH которая одинакова для образцов любой формы и размеров и рассчитать по формуле 2 H то на основании уравнения 1 можно найти индукцию магнитного поля в веществе. Экспериментально наиболее просто J=JH определяется для образца в виде тороида на который равномерно нанесены витки провода. 3...