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


 

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

36587. Система бронирования Amadeus 37 KB
  В настоящее время mdeus ведущая компьютерная система бронирования в Европе. системы бронирования System One она активно продвигается и на американский рынок. Партнером mdeus является немецкая система бронирования туруслуг Strt и любой пользователь mdeus автоматически является также пользователем Strt.
36588. Реляционная модель данных 46.5 KB
  Любую таблицу упрощенно можно описать следующим образом: НАЗВАНИЕ ТАБЛИЦЫ Поле1 Поле2 Поле3ПолеN Например: СТУДЕНТЫНомер_зачетки ФИО Факультет. Располагаются столбцы в таблице в порядке следования их имен принятом при создании таблицы. В каждой таблице должен быть столбец или совокупность столбцов значение которого однозначно идентифицирует каждую запись таблицы. Этот столбец или совокупность столбцов называется первичным ключом primry key PK таблицы.
36589. Основы проектирования баз данных 93.5 KB
  Основные этапы проектирования баз данных 1 Концептуальное инфологическое проектирование Концептуальное инфологическое проектирование построение семантической смысловой модели предметной области то есть информационной модели наиболее высокого уровня абстракции. Такая модель создаётся без ориентации на какуюлибо конкретную СУБД и модель данных. Кроме того в этом контексте равноправно могут использоваться слова модель базы данных и модель предметной области поскольку такая модель является как образом реальности так и образом...
36590. Язык SQL 499.5 KB
  На раннем этапе развития систем управления базами данных(СУБД) в условиях низких технических характеристик ЭВМ основное внимание разработчиков СУБД было направлено на проблемы размещения информации в базе и обмена данными между дисковой памятью и оперативной памятью, поскольку это в первую очередь определяло эффективность функционирования СУБД
36591. Теорія механізмів і машин 8.12 MB
  Структура та класифікація механізмів Структура механізму це його будова. Будовою механізму визначаються такі його важливі характеристики як види виконуваних рухів способи їх перетворення число ступенів вільності. Основними структурними елементами механізму є ланки тверді тіла та кінематичні пари рухомі зєднання твердих тіл. Ланки механізму рухомо зєднані між собою.
36592. ТЕОРІЯ СИСТЕМ І СИСТЕМНИЙ АНАЛІЗ 1.09 MB
  Поняття інформаційної системи. Модель організації як відкритої системи. Сучасні організації підприємства корпорації інтегровані в системи міжнаціональних економічних звязків у транснаціональні компанії в інформаційні системи що обслуговують світовий ринок.
36593. ЦИФРОВА ТЕХНІКА ТА МІКРОПРОЦЕСОРИ 2.83 MB
  Математичні основи цифрової техніки Відображення інформації у ЦТ Системи числення та кодування Двійкова арифметика Основні поняття та закони булевої алгебри Функції алгебри логіки Форми зображення логічних функцій Мінімізація логічних функцій Структурна реалізація логічних функцій Схемотехніка цифрових пристроїв Цифрові сигнали форми їх зображення Основні параметри і характеристики цифрових мікросхем Розширювачі на логічних елементах Збільшення...
36594. ЦИВІЛЬНИЙ ЗАХИСТ КОНСПЕКТ ЛЕКЦІЙ 109.5 KB
  Обсяг навчального часу для вивчення дисципліни Цивільний захист визначений державними вимогами спільний наказ Міністерства освіти і науки України Міністерства України з питань надзвичайних ситуацій та у справах захисту населення від наслідків Чорнобильської катастрофи та Державного комітету України з промислової безпеки охорони праці та гірничого нагляду від 21.2010 року № 969 922 216 Про організацію та вдосконалення навчання з питань охорони праці безпеки життєдіяльності та цивільного захисту у вищих навчальних закладах України і не...
36595. Основи екології. Курс лекцій 161.5 KB
  Предметом вивчення екології є умови та закономірності існування формування та функціонування біосфери від окремої особі до біосфери в цілому та їх взаємозвязок з зовнішніми умовами а також загальні закони розвитку екології. Самою простою структурою сучасної активної частини біосфери являється біогеоценоз. Це дало йому поштовх до створення всеохоплюючої теорії біосфери тобто тієї частини зовнішніх оболонок нашої планети які безпосередньо повязані з існуванням життя на Землі. Вернадський дав визначення біосфери: âБіосфера являє...