Amaliy mashg’ulоt №20 Mavzu: Nomlar fazosidan foydalanish dll kutubxona yaratish va bog’lash



Download 280,07 Kb.
bet8/8
Sana27.09.2021
Hajmi280,07 Kb.
#187069
1   2   3   4   5   6   7   8
Bog'liq
Amaliy mashg 20

Counter.CountDown cd1 = new Counter.CountDown(10);

// Bu Counter2 nom fazosidan CountDown klassi.

Counter2.CountDown cd2 = new Counter2.CountDown();

int i;

do {

i = cd1.Count();

Console.Write(i + " ");

} while(i > 0);

Console.WriteLine();

cd2.Count();

}

}

Bu ushbu dasturni ishga tushirish natijasidir.


10 9 8 7 6 5 4 3 2 1 0

Bu Counter2 nom fazosidan Count () usuli.


Yuqoridagi natijadan ko'rinib turibdiki, Counter nom fazosidagi CountDown klassi Counter2 nom fazosidan bir xil nomdagi sinfdan alohida mavjud va shu sababli nom ziddiyati yo'q. Ushbu misol qanchalik sodda bo'lsa, unda o'zingizning kodingizdagi va boshqa ishlab chiquvchilar tomonidan yozilgan koddagi nizolarni nomlashdan qanday qilib qochishingiz mumkinligi aniq ko'rsatilgan.

Sinflar kutubxonasini yaratish

Ko'pincha, turli xil sinflar va tuzilmalar alohida kutubxonalar sifatida ishlab chiqilgan bo'lib, ular dll fayllariga yig'ilib, keyinchalik boshqa loyihalarga qo'shilishi mumkin. Shu tufayli biz bir xil funktsiyani sinf kutubxonasi ko'rinishida belgilab olamiz va uni turli loyihalarga ulaymiz yoki foydalanish uchun boshqa ishlab chiquvchilarga beramiz.

Keling, sinf kutubxonasini yaratamiz va kiritamiz.

Masalan, avvalgi mavzularda yaratilgan, masalan, mavjud bo'lgan .NET Core konsol dastur loyihasini olaylik. Loyiha tarkibida echim nomini o'ng tugmasini bosing va keyin paydo bo'lgan kontekst menyusida Add -> New Project-ni tanlang ... (yangi loyiha qo'shish):



So'ngra, loyiha shablonlari ro'yxatida Class Library (.NET Core) bandini toping:



Keyin biz yangi loyihaga nom beramiz, masalan MyLib. Shundan so'ng, mening loyihamga MyLib nomi bilan yangi loyiha qo'shiladi:



Yangi loyihada Class1.cs faylida bitta bo'sh sinf mavjud, Class1. Ushbu faylni xohlagancha o'chirib tashlashimiz yoki nomini o'zgartirishimiz mumkin.

Masalan, Class1.cs faylini Person.cs, Class1 sinfini Person deb o'zgartiring. Person sinfidagi eng oddiy kodni aniqlaymiz:

Endi sinf kutubxonasini tuzamiz. Buning uchun sinf kutubxonasi loyihasini o'ng tugmasini bosing va kontekst menyusidagi Rebuild(Перестроить- Qayta qurish) bandini tanlang:

Sinf kutubxonasini bin/Debug/netcoreapp3.0 katalogi ostidagi loyiha papkasida to'plagandan so'ng, biz kompilyatsiya qilingan dll faylini (MyLib.dll) topishimiz mumkin. Keling, uni asosiy loyihaga bog'laymiz. Buning uchun asosiy loyihada Dependences tuguniga o'ng tugmasini bosing va kontekst menyusidan Add_Reference(Добавить ссылку- Malumot qo'shish)-ni tanlang. Keyin biz uchun kutubxonalarni qo'shish uchun oyna ochiladi. Ushbu oynada mavjud echim loyihalaridan barcha sinf kutubxonalarini ko'rishga imkon beradigan "Solution" bandini tanlang, kutubxonamiz yoniga tasdiq belgisini qo'ying va OK tugmasini bosing:


Agar kutubxonamiz to'satdan bog`lashdagi biron bir loyiha bilan bog'liq bo'lmagan dll faylini taqdim etsa, "Browse" tugmasi yordamida biz dll faylining joylashgan joyini topamiz va uni birlashtiramiz.

Kutubxonani asosiy loyihada muvaffaqiyatli ulab bo'lgandan so'ng, dastur sinfini sinf kutubxonasidan Person sinfidan foydalanishi uchun o'zgartiraylik:

using System;

using Mylib;

namespace kutubxona

{

class Program



{

static void Main(string[] args)

{

Person tom = new Person { name = "Tom", age = 35 };



Console.WriteLine(tom.name);

Console.ReadKey();

}

}

}


Eslatma asosiy bosh loyihaga birlashtirish shart.

Misol. Mylib.dll kutubxona yarating. Kutubxonada:



  1. Uchburchak 3 ta tomoniga ko`ra yuzasini aniqlash funksiyasi;

  2. Tub sonlikka tekshiruvchi funksiyasi;

  3. Berilgan oraliqda egizak tub sonlarni chop etuvchi funksiyalar yarating.

Mylib kutubxona tarkibi quyidagicha:

namespace Mylib

{

public class Person



{

public string ismi;

public int yoshi;

public double uchburchak_yuza(double a, double b, double c)

{

double p = (a + b + c)/2;



double S = Math.Sqrt(p * (p - a) * (p - b) * (p - c));

return S;

}

public bool tub(Int32 a)



{

for (Int32 i = 2; i <= Math.Sqrt(a); i++)

if (a % i == 0) return false;

return true;

}

public void egizak(Int32 a, Int32 b)



{

Int32 t=0,i=a;

while (i <= b)

{

if (tub(i)) {



t = i;

break;


}

i++;


}

i = t+2;


while (i<= b)

{

if (tub(i)) {



if (i-t == 2)

Console.WriteLine("Egizak tub sonlar ({0},{1})", t, i);

t = i;

}

i += 2;



}

}

}



}

Asosiy bosh fayl:

using System;

using Mylib;

namespace kutubxona

{

class Program



{

static void Main(string[] args)

{

Console.Write("Sonni kiriting n=");



Int32 n =Int32.Parse(Console.ReadLine());

Person ss = new Person { yoshi = 26, ismi = "Javohir"};

if (ss.tub(n)) Console.WriteLine("{0} soni tub", n);

else Console.WriteLine("{0} soni tub emas", n);

Console.WriteLine("Sonlarni kiriting");

Console.Write("a=");

Int32 a = Int32.Parse(Console.ReadLine());

Console.Write("b=");

Int32 b = Int32.Parse(Console.ReadLine());

ss.egizak(a, b);

Console.ReadKey();

}

}



}

Dastur natijasi:

Sonni kiriting n=45

45 soni tub emas

Sonlarni kiriting

a=19

b=89


Egizak tub sonlar (29,31)

Egizak tub sonlar (41,43)

Egizak tub sonlar (59,61)

Egizak tub sonlar (71,73)



Topshiriqlar

Har bir talaba kutubxona faylini yarating. Bu kutubxona faylida bir necha amallar bajarilsin. Yaratilgan kutubxona faylni asosiy dasturga chaqiring va foydalaning.




Adabiyotlar


  1. Троелсен Эндрю, Джепикс Филипп | Язык программирования C# 7 и платформы .NET и .NET Core. Вильямс. 2018.

  2. Troelsen, P. Japikse. Pro C# 8 with .NET Core. Foundational Principles and Practices in Programming. Apress, 2020

  3. Албахари Бен, Албахари Джозеф. C# 7.0. Справочник. Полное описание языка. Пер. с англ.-СПб: “Альфа-книга”, 2018, -1024 с

  4. Ю.С. Магда C#. Язык программирования Си Шарп. – Изд. ДМК Пресс, 2013, 190 с.

  5. Кристиан Нейгел, Билл Ивьен, Джей Глинн, Карли Уотсон, Морган Скиннер. C# 4.0 и платформа .NET 4 для профессионалов. – Изд. Вильямс, 2011, 1440 с.

  6. Christian Nagel. PROFESSIONAL C# 7 and .NET Core 2.0. Wrox, 2018.

  7. Madraximov Sh.F., Ikramov A.M. C++ tilida programmalash bo’yicha masalalar to’plami. O’quv qo’llanma // Toshkent, O’zbekiston Milliy Universiteti, “Universitet” nashriyoti, 2017. 160 bet

  8. https://metanit.com/sharp/tutorial/3.46.php


Download 280,07 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish