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


 

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

28439. Процедуры и функции. Локализация имен. Описание подпрограммы. Параметры. Примеры использования подпрограмм 51 KB
  Процедуры и функции. Процедуры и функций используется для оформления самостоятельного фрагмента программы используемого более одного раза. Процедуры. Процедура состоит из заголовка и тела процедуры называемого блоками.
28440. Модули. Структура модулей. Заголовок модуля и связь модулей друг с другом. Интерфейсная часть. Исполняемая часть. Инициирующая часть. Компиляция модулей. Доступ к объявленным в модуле объектам. Примеры использования модулей 56.5 KB
  Заголовок модуля и связь модулей друг с другом. Здесь UNIT зарезервированное слово единица; начинает заголовок модуля; имя имя модуля; INTERFACE зарезервированное слово интерфейс; начинает интерфейсную часть модуля; IMPLEMENTATION зарезервированное слово выполнение; начинает исполняемую часть; BEGIN зарезервированное слово; начинает инициирующую часть модуля; конструкция BEGIN инициирующая часть необязательная; END зарезервированное слово признак конца модуля. Тела процедур и функций располагаются в исполняемой...
28441. Алфавит языка. Идентификаторы. Константы. Выражения. Операции. Структура программы. Типы данных INTEGER, REAL, CHAR, STRING, BOOLEAN. Оператор присваивания. Организация ввода-вывода данных. Программирование линейных структур алгоритмов. Условный оператор. 61.5 KB
  Оператор присваивания. Условный оператор. Составной оператор. Метки и операторы перехода.
28442. Операторы повторений. Счетный оператор цикла FOR. Оператор цикла WHILE. Оператор цикла REPEAT… UNTIL. Программирование циклических структур алгоритмов 29 KB
  Операторы повторений. Счетный оператор цикла FOR. Оператор цикла WHILE. Оператор цикла REPEAT UNTIL.
28443. Структура типов данных. Стандартные процедуры и функции, применимые к целым, вещественным числам. Логический, символьный, перечисляемый типы, тип-диапазон 80.5 KB
  константы переменные значения функций или выражения характеризуются своими типами. Порядковые типы К порядковым типам относятся целые логический символьный перечисляемый и тип диапазон. ORDX для логического типа даёт положительное целое число в диапазоне от 0 до 1. ORDX для символьного типа даёт целое число в диапазоне от 0 до 255 для перечисляемое типа ORDX даёт число в диапазоне от 0 до 65535.
28444. Массивы. Описание одномерного массива. Ввод – вывод одномерного массива. Обработка одномерных числовых массивов. Описание двумерного массива. Ввод – вывод двумерного массива. Обработка двумерных числовых массивов 30 KB
  Описание одномерного массива. Ввод вывод одномерного массива. Описание двумерного массива. Ввод вывод двумерного массива.
28445. Особенности договорных отношений и оформление договорной документации между юридическими лицами и участниками туристской деятельности 29.5 KB
  Договоры с авиа компаниями могут быть трех видов: договор на квоту мест на регулярных авиа рейсах; агентское соглашение; чартер аренда самолета. Договор на квоту мест на регулярных авиа рейсах. Квота мест может быть жесткой или мягкой. При жесткой квоте мест вся ответственность за не реализацию мест падает на туристскую фирму независимо от причины не реализации.
28446. Технология составления и основное содержание туристской документации 43.5 KB
  В набор технологической документации для каждого тура обязательно включаются: технологическая карта туристского путешествия по маршруту; график загрузки туристского предприятия группами туристов на определенное время; информационный листок к путевке туристского путешествия; бланки путевок типовой формы ТУР1 Туристская путевка утвержденной Минфином России; лист бронирования см. Технологическая карта туристского путешествия это документ наглядно и лаконично дающий все необходимые для работы сведения и данные по туру...
28447. Порядок движения документов в организациях социально 32 KB
  Порядок движения документов в организациях социальнокультурного сервиса и туризма. Документооборот д о это движение документов в организации с момента создания или получения до отправки или передачи их на хранение. Основой структуры любого документооборота является документ комплекс документов связанный процессов управления разных уровней и автоматической обработкой. Единый маршрут для одного вида документов или совокупности документов образует документопоток.