Interfeyslarni ta’riflash Net Framework muhiti uchun standart interfeylar


Download 23.67 Kb.
Sana16.10.2023
Hajmi23.67 Kb.
#1704699
Bog'liq
Интерфейсларни таърифлаш


Interfeyslarni ta’riflash. .Net Framework muhiti uchun standart interfeylar.
Interfeys ba'zi funktsional imkoniyatlarni - amalga oshirmasdan usullar va xususiyatlar to'plamini aniqlaydigan ma'lumot turini anglatadi. Ushbu funktsionallik keyinchalik ushbu interfeyslardan foydalanadigan sinflar va tuzilmalar tomonidan amalga oshiriladi.
Interfeysni ta’riflash
interface kalit so'zi interfeysni aniqlash uchun ishlatiladi. Odatda, C# interfeys nomlari I bosh harf bilan boshlanadi, masalan, IComparable, IEnumerable (Venger notatsiyasi deb ataladigan), lekin bu talab emas, balki dasturlash uslubining stilidir.
Interfeys nimani aniqlay oladi? Umuman olganda, interfeyslar quyidagi ob'ektlarni aniqlashi mumkin:
Usullar
Xususiyatlari
Ko'rsatkichlar
Indeksatorlar
Statik maydonlar va o‘zgarmaslar (C # 8.0 dan beri)
Ammo, interfeyslar statik bo'lmagan o'zgaruvchilarni aniqlay olmaydi. Masalan, ushbu barcha tarkibiy qismlarni belgilaydigan eng oddiy interfeys:
interface IMovable
{
// konstanta
const int minSpeed = 0; // minimal tezlik
// static o’zgaruvchilar
static int maxSpeed = 60; // maksimal tezlik
// metod
void Move(); // harakat
// xossa
string Name { get; set; } // nom
delegate void MoveHandler(string message); // delegatni aniqlash
event MoveHandler MoveEvent; //
}
Bunday holda, ko'chib o'tiladigan ob'ektni ifodalovchi interfeys aniqlanadi. Ushbu interfeysda harakatlanuvchi ob'ektning imkoniyatlarini tavsiflovchi turli xil tarkibiy qismlar mavjud. Ya'ni, interfeys harakatlanuvchi ob'ektga ega bo'lishi kerak bo'lgan ba'zi funktsiyalarni tavsiflaydi. Interfeysning usullari va xususiyatlari amalga oshirilmasligi mumkin, bunda ular abstrakt usullar va abstrakt sinflarning xususiyatlari bilan birlashadi.
Bunday holda, interfeys ba'zi bir harakatlarni aks ettiradigan "Move" usulini belgilaydi. Bu amalga oshirilmaydi, parametrlarni olmaydi va hech narsani qaytarmaydi.Bu hol Name xususiyati uchun ham xuddi shunday. Bir qarashda, bu avtomatik xususiyatga o'xshaydi. Ammo, aslida, bu avtomatik xossasi bo‘lmagan aniq xususiyatning ta'rifidir.
Interfeysni e'lon qilishda yana bir holat: agar uning a'zolari - usullari va xususiyatlari murojaat modifikatorlariga ega bo'lmasa, lekin aslida avtomat tarizda murojaat hisoblanadi, chunki interfeysning maqsadi uni sinf tomonidan amalga oshirish uchun funktsional imkoniyatlarni aniqlashdir. Bu, shuningdek, sinflar va strukturalarda private modifikatoriga ega bo'lgan konstanta va statik o'zgaruvchilarga ham tegishli. Interfeyslarda, ular public modifikatorga ega. Masalan,IMovable interfeysning minSpeed konstantasi va maxSpeed o'zgaruvchisiga murojaat qilishimiz mumkin:
static void Main(string[] args)
{
Console.WriteLine(IMovable.maxSpeed);
Console.WriteLine(IMovable.minSpeed);
}
Shu bilan birga, C # 8.0 versiyasidan boshlab interfeys komponentlari uchun murojaat modifikatorlarini aniq belgilashimiz mumkin:
interface IMovable
{
public const int minSpeed = 0; // minimalnaya skorost
private static int maxSpeed = 60; // maksimalnaya skorost
public void Move();
protected internal string Name { get; set; } // nazvanie
public delegate void MoveHandler(string message); // opredelenie delegata dlya sobыtiya
public event MoveHandler MoveEvent; // sobыtie dvijeniya
}
C # 8.0-dan boshlab, interfeys standart usul va xususiyatlarni qo'llashni qo'llab-quvvatlaydi. Bu shuni anglatadiki, biz oddiy sinflar va tuzilmalar singari amalga oshiriladigan interfeyslarda to'liq huquqli usul va xususiyatlarni aniqlashimiz mumkin. Masalan, Move usulining standart bajarilishini aniqlaymiz:
interface IMovable
{
// usulni standart aniqlash
void Move()
{
Console.WriteLine("Walking");
}
}
Shuni ta'kidlash kerakki, agar interfeys xususiy usul va xususiyatlarga ega bo'lsa (ya'ni shaxsiy modifikator bilan), unda ular odatiy bajarishga ega bo'lishi kerak. Xuddi shu narsa har qanday statik usullar va xususiyatlarga tegishli (majburiy emas).
static double GetTime(double distance, double speed) => distance / speed;
static int MaxSpeed
{
get { return maxSpeed; }
set
{
if (value > 0) maxSpeed = value;
}
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(IMovable.MaxSpeed);
IMovable.MaxSpeed = 65;
Console.WriteLine(IMovable.MaxSpeed);
double time = IMovable.GetTime(100, 10);
Console.WriteLine(time);
}
}
Interfeysga kirish modifikatorlari
Sinflar singari, interfeyslar odatda internal bo'lib, bunday interfeys faqat joriy loyihada mavjudligini anglatadi. Ammo public modifikatori yordamida interfeysga umumiy murojaat qilish mumkin:
public interface IMovable
{
void Move();
}
Shuni ta'kidlash kerakki, Visual Studio alohida faylga yangi interfeys qo'shish uchun maxsus tarkibiy qismga ega. Loyihaga interfeys qo'shish uchun siz loyihani sichqonchaning o'ng tugmachasi bilan bosishingiz va paydo bo'lgan kontekst menyusida Add-> New Item... -ni tanlashingiz va yangi komponentni qo'shish uchun dialog oynasidagi Interfeys elementini tanlashingiz mumkin:

Download 23.67 Kb.

Do'stlaringiz bilan baham:




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