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

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

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

 

Рис. 1.1. Форма для обчислення sin(x)

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

 

Лістинг 1.3. Код форми

 

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();

}

}

}

 

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

 

Рис. 1.2. Результат роботи форми

1.5.4. Створення DLL-бібліотеки як окремого рішення (в іншому процесі)

Основна мета створення і використання DLL-бібліотек – забезпечення повторного використання коду. Тому в реальних системах різні компоненти можуть викликати однакові бібліотечні методи. Для цього DLL-бібліотека повинна знаходитися в окремому рішенні.

Для підключення бібліотеки до проекту файл зі збіркою, що містить бібліотеку потрібно підключити з меню «Add Reference». Оскільки проект не включений в Рішення, то у вікні додавання посилань потрібно вказати шлях до проекту у файловій системі.

Висновки

Важливим наслідком реалізації компонентного підходу є зниження вартості проектування ПЗ.

До переваг компонентного програмування слід віднести і можливість удосконалення стратегії повторного використання коду.

В платформі Microsoft .NET реалізовано компонентно-орієнтований підхід до програмування. Цей підхід до проектування і реалізації програмних систем і комплексів є розвитком об'єктно-орієнтованого і практично придатніший для розробки великих і розподілених систем.

В компонентній моделі .Net компонентом є збірка, яка може бути у вигляді виконуваного файлу (з розширенням EXE), або файлу динамічної бібліотеки (з розширенням DLL). До складу збірки входить маніфест.

Збірка є самодостатньою одиницею для розгортання, тиражування та повторного використання.

Збірка має маніфест, який містить інформацію про збірку (метадані, які описують збірку).

Велику роль в сучасних системах відіграють бібліотеки повторного використання, зокрема DLL-бібліотеки.

DLL-бібліотеки містять методи, які викликаються динамічно при роботі програмної системи. Вони є окремими компонентами з розширенням .dll. Інтерфейсом бібліотеки є відкриті (public) методи і поля бібліотечних класів. DLL-бібліотека не містить точки входу (main), тому її методи можуть викликатися лише іншими компонентами. Разом з цим, в бібліотеці можуть бути і закриті методи класу, які викликаються методами в середині бібліотеки. DLL-бібліотеки – основа компонентної ідеології і повторного використання коду.

Контрольні запитання та завдання

1. Що таке інтерфейс компонента і яке його призначення?

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

3. Що визначає інтерфейсний контракт? Що являє собою інтерфейс компонента?

4. Основні властивості компонентів?

5. Рівні кросплатформності і різниця між ними?

6. Для чого в Dot.Net використовується компіляція через проміжний код?

7. Для чого використовується компонентний каркас?

8. Що таке компонентна модель і яке її призначення?

9. Що таке DLL-бібліотека? Чим вона відрізняється від консольного проекту?

10. Для чого потрібно XML-документування коду? Як воно допомагає при написанні виклику бібліотечних методів?

11. Чому бібліотечні методи повинні визначатися з модифікатором доступу public?

12. Що є інтерфейсним контрактом бібліотеки?