Створення 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. Що є інтерфейсним контрактом бібліотеки?