A J# programozási nyelv

Sablonok



Sablonok

Sablon más nyelven

A J# sajnálatos módon nem támogatja sablonok készítését, de a kiterjesztett szintaktikának köszönhetően van lehetőségünk arra, hogy más nyelven megírt sablont felhasználjuk programunkban. Erről olvashatunk a következő sorokban.

Készítsük el a sablonunkat egy olyan nyelven, melyet a .NET is támogat (jelen esetben a választott nyelv a C#):

using System; using System.Collections.Generic; namespace VeremGeneric { public class Verem<T> { private int meret; private List<T> averem; public Verem(int _meret) { meret=_meret; averem=new List<T>(); } public void Push(T item) { if (!this.Full()) { averem.Add(item); } } public void Pop() { if (!this.Empty()) { averem.RemoveAt(averem.Count-1); } } public bool Full() { return averem.Count == meret; } public bool Empty() { return averem.Count == 0; } public T Top() { if (averem.Count > 0) { return averem[averem.Count - 1]; } else { return default(T); } } public int getAktMeret() { return averem.Count; } public List<T> getVerem() { return averem; } } }

Más nyelven írt sablon használata

Ha sikeresen elkészült a sablonunk és fel szeretnénk használni J# programunkban, két dolgot kell feltétlenül megtenni. Első sorban le kell fordítani a sablont a nyelvnek megfelelő fordítóval. C# esetében a .NET Framework könyvtárban található csc.exe-vel kell fordítani a következő módon: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe /t:library vermes.cs. Eredményül kapunk egy dll kiterjesztésű fájlt (jelen esetben: vermes.dll). Most menjünk a Visual Studio-n belül a Solution Explorer ablakba és ott a projektünkhöz adjunk hozzá egy új referenciát (References -> Add Reference...). Válasszuk a Browse fült és tallózzuk be az előbb említett vermes.dll-t. Ha ezt megtettük, akkor ezután be tudjuk importálni a vermünket úgy mintha egy J# osztály lenne.

... import VeremGeneric.*; //a csomag importálása ... private Verem<int> IntVerem; ... IntVerem = new Verem(10); //inicializálás - 10 elem befogadására képes verem ... //használat: a szokásos módon: IntVerem.Push(...); IntVerem.Pop(); IntVerem.Empty(); ...