Muhammad al-Xorazmiy nomidagi Toshkent Axborot texnologiyalari Universiteti
Samarqand filiali
Kompyuter injiniring fakulteti
DI21-10-guruh talabasi:
Ibrohimov Sayyodbekning
Inson va kompyuterningo’zaro ta’siri
2-amaliy topshiriq
chempionat.uz rasmiy axborot saytini shablon funksiyalarini taqdim etuvchi saytlarda interfeysini yarating?
Interfeys (en, Interface) - bu aloqador bo'lmagan obyektlar orasida o'zaro ta'sir qilish uchun foydalanadigan qurilma yoki tizim. Masalan : Masofadan boshqarish pulti - siz va televizor o'rtasidagi interfeys. Ingliz tili - ikki kishi o'rtasidagi interfeys. Interface qanday yaratiladi? Interface larni yaratish juda ham oson. Quyidagi ko’rinishda interface yaratishingiz mumkin.
public interface Championat
{ public void APL();
public void La_liga();
public void ChL();
}
Interface larni yaratishda bir qoida bor, Masalan siz Championat.asia interface ni yaratmoqchi bo’lsangiz IChampionat deb nomlashingiz kerak Nomlar oldidan kelgan “I” harfi bu interface ekanligini bildirib turadi. Interface larda faqat funksiya prototipi e’lon qilib ketiladi va funksiya tanasi yozilmaydi. Ya’ni logika yozilmaydi, logikani siz ushbu interface ni implimentatsiya qilgan class da yozasiz. Bu sizga ma’lum bir obyekt xususiyatlarini ajratib olishingizda juda katta yordam beradi.
Interface ni biror class implementation (implimentatsiya) qilishi mumkin. Va ushbu interface dagi xususiyatlarini o’ziga biriktirib oladi.
public interface Championat
{ public void APL();
public void La_liga();
public void ChL();
public void Yl()
}
Public class Championat : ICHampionat
{
Public void APL()
{
Console. WriteLine(“Mc-Liv”)
}
Public void La_liga()
{
Console. WriteLine(“Real-Barsa”)
}
Public void ChL ()
{
Console. WriteLine(“Real-Mc”)
}
Public void Yl ()
{
Console. WriteLine(“Liv-Ajax“)
}
Biror bir class, interfacedan me’ros olgan bo’lsa interface dagi barcha funksiyalarni o’zida e’lon qilishi shart bo’ladi. Masalan : APL yoki La_liga funksiyalari e’lon qilinmay qolib ketsa xatolik yuz beradi. Buning afzalligi Interface da funksiya tanasi bo’lmaganligi uchun, umumiy strukturani o’zida saqlab turadi. Haqiqiy proyektlarda juda ko’p interface lar va juda ko’p methodlar bo’ladi, va ular orasidan biror bir method yozilmay qolishi ehtimoli bo’ladi va shunda interface ni qaysi methodi e’lon qilinmaganligi haqidagi error paydo bo’ladi.
Multiple Inheritance
Multiple Inheritance bir yoki bir nechta classlardan meros olish degan ma’noda qo’llaniladi. Quyidagi class lar meros olish strukturasiga e’tibor bering.
public class APL
{
}
public class La_liga
{
}
public class Chl
{
}
public class Yl
{
}
Ushbu ko’rinishda meros olish , ya’ni child class ham father ham mother class laridan meros olish xususiyati C++ va boshqa ko’p tillarda qo’llab quvvatlanadi.
Interfaceni Multiple Inheritance ga nima aloqasi bor?
Interfacelar multiple inheritance ni qo’llab quvvatlaydi. Multiple Inheriatance - Interfacelarni larni qo’llashdagi asosiy imkoniyatlardan biri hisoblanadi. Ya’ni bir class bir nechta interface lardan meros olishi mumkin. Bir dastur yozsakda, u orqali interface larni ishlatishni samarasi va multiple inheritance ga nima aloqasi bor ekanligi tushunib olsak. Tasavvur qiling, biz Championat.asia classini tuzish jarayonidamiz va ularning xususiyatlarini belgilayapmiz.
public interface IAPL
{
public void APL();
}
public interface ILa_liga
{
public void La_liga();
}
public interface IChL
{
public void Chl();
}
public interface IYl
{
public void Yl();
}
Interface larni yaratib oldik, endi esa ularni qo’llashimizga e’tibor bering:
Public class Real Madrid : ILa_liga
{
Public void La_liga()
{
Console.WriteLine("Barselona bilan uynadi");
}
Public void ChL()
{
Console.WriteLine("Napole bilan uynadi");
}
}
Public class Manchester_city : IAPL
{
Public void APL()
{
Console.WriteLine("Liverpool bilan uynadi");
}
Public void ChL()
{
Console.WriteLine("Bavariya bilan uynadi");
}
}
Public class Barselona : IChL
{
Public void La_liga()
{
Console.WriteLine("Atletiko bilan uynadi");
}
Public void ChL()
{
Console.WriteLine("Shaxtyor bilan uynadi");
}
}
Public class Liverpool : IYL
{
Public void APL()
{
Console.WriteLine("Chelsea bilan uynadi");
}
Public void YL()
{
Console.WriteLine("Ajax bilan uynadi");
}
}
Classlarni ham yaratib oldik, endi ularni tahlil qilsak:
RealMadrid class: La ligada Barselona bilan, Chl sida Napole bilan o’ynaydi.
Manchester_city class: APL da Liverpool bilan, Chl sida Bavariya bilan uynaydi.
Barselona class: La ligada Atletiko bilan, Chl sida Shaxtyor bilan uynaydi.
Liverpool class: APL da Chelsea bilan, YL sida Ajax bilan uynaydi.
Dostları ilə paylaş: |