русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Створення бібліотеки


Дата додавання: 2015-01-08; переглядів: 903.


 

Для створення бібліотеки треба при розробці проекту в середовищі Visual Studio.NET вибрати шаблон Class Library (бібліотека класів). В розділі 8 була створена проста ієрархія класів персонажів комп'ютерної гри. У цьому розділі ми оформимо її у вигляді бібліотеки, тобто збірки з розширенням dll. Для збірки задано ім'я MonsterLib (рис. 12.2).

 

 

Рис. 12.2. Створення бібліотеки

 

Текст модуля приведений в лістингу 12.1. В порівнянні з модулем з розділу 8 в нього додані специфікатори доступу public для всіх трьох класів, що входять в бібліотеку.

 

Лістинг 12.1. Бібліотека монстрів

 

namespace MonsterLib

{

using System;

public abstract class Spirit

{

public abstract void Passport();

}

 

public class Monster : Spirit

{

public Monster()

{

this.name = "Noname";

this.health = 100;

this.ammo = 100;

}

 

public Monster(string name)

: this()

{

this.name = name;

}

public Monster(int health, int ammo, string name)

{

this.name = name;

this.health = health;

this.ammo = ammo;

}

 

public int Ammo

{

get { return ammo; }

set

{

if (value > 0) ammo = value; else ammo = 0;

}

}

public int Health

{

get { return health; }

set

{

if (value > 0) health = value; else health = 0;

}

}

 

override public void Passport()

{

Console.WriteLine("Monster {0} \t health = {1} ammo = {2}", name, health, ammo);

}

 

public string name; // закриті поля

public int health, ammo;

}

 

public class Daemon : Monster

{

public Daemon()

{

brain = 1;

}

 

public Daemon(string name, int brain)

: base(name) // 1

{

this.brain = brain;

}

 

public Daemon(int health, int ammo, string name, int brain)

: base(health, ammo, name)

{

this.brain = brain;

}

 

override public void Passport()

{

Console.WriteLine(

"Daemon {0} \t health = {1} ammo = {2} brain = {3}",

name, health, ammo, brain);

}

public void Think()

{

Console.Write( name + " is");

for (int i = 0; i < brain; ++i);

Console.Write( " thinking");

Console.WriteLine("...");

}

 

int brain; // закрите поле

}

}

 

Скомпілювавши бібліотеку, ви виявите файл Monsterlib.dll у каталогах ...\bin\ Debug і ...\obj\Debug. Відкривши файл Monsterlib.dll за допомогою програми ILdasm.exe, можна отримати повну інформацію про створену бібліотеку (рис. 12.3).

 

 

Рис. 12.3. Перегляд бібліотеки за допомогою дизасемблера Lidasm.exe

 

Будь-яка бібліотека - це сервер, що надає свої ресурси клієнтам. Створимо клієнтське застосування, що виконує ті ж функції, що і додаток з розділу “Віртуальні методи” (див. розділ 8, лістінг 8.3), але з використанням бібліотеки Monsterlib.dll. Для того, щоб компілятор міг її виявити, необхідно після створення проекту (як завжди, це - консольний додаток) підключити посилання на бібліотеку за допомогою команди Project > Add Reference (Додати посилання). Для пошуку каталогу, що містить бібліотеку, слід використовувати кнопку Browse.

Після підключення бібліотеки можна користуватися її відкритими елементами таким же чином, неначебто вони були описані в тому ж модулі. Текст додатку приведений в лістингу 12.2.

 

Лістинг 12.2. Клієнтське застосування

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace exam100

{

using MonsterLib;

 

class Program

{

static void Main(string[] args)

{

const int n = 3;

Monster[] stado = new Monster[n];

stado[0] = new Monster( "Monia" );

stado[1] = new Monster( "Monk" );

stado[2] = new Daemon ( "Dimon", 3 );

foreach ( Monster elem in stado ) elem. Passport();

for ( int i = 0; i < n; ++i ) stado[i].Ammo = 0;

Console.WriteLine();

foreach ( Monster elem in stado ) elem.Passport();

}

}

}

 

Результат роботи програми:

Monster Monia health = 100 ammo = 100

Monster Monk health = 100 ammo = 100

Monster Dimon health = 100 ammo = 100 brain = 3;

 

Monster Monia health = 100 ammo = 0

Monster Monk health = 100 ammo = 0

Monster Dimon health = 100 ammo = 0 brain = 3;

 

Перевага .NET полягає в тому, що завдяки стандартним угодам можна використовувати бібліотеки незалежно від мови, на якій вони були написані. Таким чином, можна було б написати клієнтське застосування, наприклад, на мові VB.NET.

 


<== попередня лекція | наступна лекція ==>
РОЗДІЛ 12. ЗБІРКИ, БІБЛІОТЕКИ, АТРИБУТИ, ДИРЕКТИВИ | Рефлексія


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн