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


 

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

74236. ПЕРВОБЫТНОЕ ХОЗЯЙСТВО: ОСНОВНЫЕ ЭТАПЫ РАЗВИТИЯ, ЧЕРТЫ И ОСОБЕННОСТИ 54 KB
  В соответствии с ней история человечества делится на три больших этапа в зависимости от материала из которого изготовлялись орудия труда: каменный век: 3 млн лет тому назад – конец III тысячелетия до н. Вовторых основой производственных отношений первобытного строя была коллективная общинная собственность на орудия труда и средства производства характеризовавшаяся низким уровнем и медленными темпами развития производительных сил уравнительным распределением материальных благ. Важнейшей чертой отличающей человека от животного является...
74237. ДВЕ МОДЕЛИ ХОЗЯЙСТВЕННОГО РАЗВИТИЯ: ДРЕВНЕВОСТОЧНАЯ ЭКОНОМИКА И АНТИЧНОЕ ХОЗЯЙСТВО 58.5 KB
  Отличительной чертой восточного типа хозяйства являлась государственная собственность на землю и ирригационные сооружения. В Древнем Египте регулярно проводились переписи населения и хозяйства в основном для распределения трудовой повинности. Это обусловило невысокий уровень развития хлебопашества в греческих полисах постоянный переход от зернового хозяйства к интенсивному виноградарству и садоводству. Хозяйства носили как правило многоотраслевой характер.
74238. Факторы самобытности в развитии Российской цивилизации 32 KB
  Ее основными элементами были: Община как первичная хозяйственно-социальная ячейка а не как частнособственническое образование как на Западе; Государство с его особой ролью организатора и творца гражданского общества. Но государство было одновременно и сильным и слабым. Слабость проявлялась в чрезвычайно низком коэффициенте полезного действия : государство не смогло создать стабильного общества и само неоднократно разрушалось. В то же время это слабое несовершенное государство было единственным интегратором и организатором общества и...
74239. Великие географические открытия и их результаты 133 KB
  Географические открытия Рост научных знаний Рост производства и появление мануфактур Развитие торговли и складывание европейского и мирового рынка Становление абсолютистских государств Реформация В чем значение эпохи великих географических открытий и каковы ее результаты приведшие к качественным изменениям в мировом развитии Cредневековая Европейская цивилизация замыкалась в узкие рамки европейской территории. Бурное развитие заморской торговли породило акционерные компании имевшие постоянный капитал и боровшиеся за монопольное...
74240. Возбудители гнойно - воспалительных процессов. Стафилококки 717 KB
  Подавляющее большинство гнойно - воспалительных заболеваний вызывают кокки, т.е. имеющие сферическую (шаровидную) форму микроорганизмы. Их делят на две большие группы - грамположительные и грамотрицательные. Внутри этих групп выделяют аэробные и факультативно - анаэробные кокки и анаэробные кокки.
74241. История развития микробиологии, вирусологии и иммунологии. Предмет, методы, задачи 547 KB
  По наличию и строению клеток вся живая природа может быть разделена на прокариоты не имеющие истинного ядра эукариоты имеющие ядро и не имеющие клеточного строения формы жизни. Колония видимая изолированная структура при размножении бактерий на плотных питательных средах может развиваться из одной или нескольких родительских клеток. Деление этих микроорганизмов происходит в одной плоскости образуются пары клеток. Деление в трех взаимоперпендикулярных плоскостях образуя тюки пакеты из 8 16 и большего количества клеток.
74242. ОСНОВЫ АЛГОРИТМИЗАЦИИ 592.5 KB
  В основе любой программы лежит алгоритм. Таблица Изображение блоков в схемах алгоритмов Наименование символа Обозначениеи размеры Функция Процессвычислительный блок Выполнение операции или группы операций в результате которых изменяются значение форма представления или расположение данных Решение логический блок Выбор направления выполнения алгоритма в зависимости от некоторых условий Модификация заголовок цикла Выполнение операций по управлению циклом – повторением команды или группы команд алгоритма Пускостанов началоконец...
74243. Алгоритмы вычисления определенных интегралов 1.27 MB
  Основу численных методов вычисления определенных интегралов составляет их геометрический смысл. В этом случае подынтегральную функцию кривую заменяют прямой а формула для вычисления площади прямоугольника известна. приведена схема алгоритма реализующего вычисления по формуле прямоугольников слева.
74244. Базы данных и их классификация 158 KB
  База данных – это совокупность связанных данных организованных по определенным правилам предусматривающим общие принципы описания хранения и манипулирования независимая от прикладных программ.