INTERNATIONAL JOURNAL OF SCIENTIFIC RESEARCHERS
ISSN: 3030-332X Impact factor: 8,293
Volume 11, issue 2, May 2025
https://wordlyknowledge.uz/index.php/IJSR
worldly knowledge
Index:
google scholar, research gate, research bib, zenodo, open aire.
https://scholar.google.com/scholar?hl=ru&as_sdt=0%2C5&q=wosjournals.com&btnG
https://www.researchgate.net/profile/Worldly-Knowledge
https://journalseeker.researchbib.com/view/issn/3030-332X
880
POLIMORFIZM. VORISLIK. ABSTRAKT SINFLAR VA INTERFEYSLAR
Umarov Bekzod Azizovich
Farg‘ona davlat universiteti amaliy matematika va informatika kafedrasi
katta o‘qituvchisi p.f.b.d (PhD)
ubaumarov@mail.ru
Kazimjonova Madinaxon Habibullo kizi
Fargʻona davlat unversiteti talabasi
madinaxonkozimjonova321@gmail.com
Annotatsiya:
Mazkur
maqola
obyektga
yo‘naltirilgan
dasturlash
(OBYEKTGA
YO‘NALTIRILGAN DASTURLASH ) paradigmalaridan polimorfizm, vorislik, abstrakt
sinflar va interfeyslarning nazariy asoslari hamda ularning amaliy dasturlashdagi tutgan o‘rni
tahliliga bag‘ishlangan. C# dasturlash tili misolida bu tushunchalarning o‘zaro bog‘liqligi,
ularni tizimli qo‘llash orqali dasturiy mahsulotlarda kengayuvchanlik, modullik va qayta
foydalanish imkoniyatlarini oshirish usullari yoritilgan. Maqolada nazariy tushunchalar amaliy
loyihalardagi qo‘llanilishi orqali isbotlab beriladi.
Kalit so‘zlar:
Obyektga yo‘naltirilgan dasturlash, polimorfizm, vorislik, interfeys, abstrakt sinf,
C#, modul, SOLID, arxitektura.
Annotation:
This article is devoted to the theoretical foundations of polymorphism, inheritance,
abstract classes and interfaces from the object-oriented programming (OBJECT-ORIENTED
PROGRAMMING) paradigms and their role in practical programming. Using the example of
the C# programming language, the interrelation of these concepts and methods for increasing
extensibility, modularity and reusability in software products through their systematic
application are discussed. The article demonstrates theoretical concepts through their
application in practical projects.
Keywords
: Object-oriented programming, polymorphism, inheritance, interface, abstract class,
C#, module, SOLID, architecture.
Аннотация:
Статья посвящена теоретическим основам полиморфизма, наследования,
абстрактных классов и интерфейсов из парадигм объектно-ориентированного
программирования (ООП), а также анализу их роли в практическом программировании.
На примере языка программирования C# освещается взаимосвязь этих концепций и пути
повышения расширяемости, модульности и возможности повторного использования
программных продуктов за счет их систематического применения. В статье
теоретические концепции демонстрируются через их применение в практических
проектах.
Ключевые слова:
Объектно-ориентированное программирование, полиморфизм,
наследование, интерфейс, абстрактный класс, C#, модуль, SOLID, архитектура.
Obyektga yo‘naltirilgan dasturlash— zamonaviy dasturlashning markaziy paradigmasi bo‘lib,
real dunyo muammolarini modellashtirish, kodni qayta ishlatish, funktsional murakkablikni
INTERNATIONAL JOURNAL OF SCIENTIFIC RESEARCHERS
ISSN: 3030-332X Impact factor: 8,293
Volume 11, issue 2, May 2025
https://wordlyknowledge.uz/index.php/IJSR
worldly knowledge
Index:
google scholar, research gate, research bib, zenodo, open aire.
https://scholar.google.com/scholar?hl=ru&as_sdt=0%2C5&q=wosjournals.com&btnG
https://www.researchgate.net/profile/Worldly-Knowledge
https://journalseeker.researchbib.com/view/issn/3030-332X
881
boshqarish va tizimlarni kengaytirish imkonini beradi. Ayniqsa, polimorfizm, vorislik, abstrakt
sinflar va interfeyslar obyektga yo‘naltirilgan dasturlashning asosi hisoblanadi. Ular orqali
dasturiy tizimlar barqaror, sinovga qulay va mantiqan strukturaviy holatda ishlab chiqilishi
mumkin. Ushbu maqolada bu tushunchalarning nazariy mohiyati, turlari, C# tili doirasida
ulardan qanday foydalanilishi, shuningdek, dasturiy injiniringda tutgan o‘rni chuqur ilmiy tahlil
qilinadi. Polimorfizm ob’ektga yo‘naltirilgan dasturlashda
moslashuvchanlik va
kengaytiriluvchanlikni ta’minlovchi asosiy tamoyil hisoblanadi. Bu tushuncha bir xil nomdagi
metod yoki operatorning turli kontekstlarda har xil xatti-harakatlarni bajarish qobiliyatini
anglatadi. Java tilida polimorfizm ikkiga bo‘linadi: statik (kompilyatsiya vaqtida aniqlanadigan)
va dinamik (ish vaqtida aniqlanadigan). Statik polimorfizm metodlar yoki operatorlarning
ortiqcha yuklanishi (overloading) orqali amalga oshiriladi. Bu jarayon kompilyatsiya vaqtida
hal qilinadi, ya’ni qaysi metod ishlatilishi dastur yozilgan paytda aniqlanadi. Masalan, bir
sinfda bir xil nomga ega, lekin turli parametrlar qabul qiluvchi metodlar bo‘lishi mumkin.
Statik polimorfizmning afzalligi shundaki, u dasturchiga bir xil nomdagi metodlarni turli
maqsadlar uchun ishlatish imkonini beradi, bu esa kodning o‘qilishi va tushunilishini
osonlashtiradi. Biroq, uning cheklovi shundaki, bu turdagi polimorfizm ish vaqtida ob’ektning
dinamik xatti-harakatini o‘zgartira olmaydi. Dinamik polimorfizm vorislik va metodlarni qayta
belgilash (overriding) orqali ta’minlanadi. Bu jarayon ish vaqtida ob’ektning haqiqiy turiga
qarab hal qilinadi. Dinamik polimorfizmning asosiy mexanizmi virtual metodlar deb ataladi,
bunda metodning qaysi versiyasi chaqirilishi ob’ektning runtime turiga bog‘liq bo‘ladi. Bu
tamoyil dasturchilarga bir xil interfeys orqali turli ob’ektlarning xatti-harakatlarini boshqarish
imkonini beradi. Natijada, kod moslashuvchan bo‘lib, yangi funksionallik qo‘shish jarayoni
soddalashadi. Dinamik polimorfizmning afzalligi shundaki, u tizimning kengaytiriluvchanligini
oshiradi, lekin murakkab vorislik ierarxiyalari ish faoliyatiga salbiy ta’sir ko‘rsatishi mumkin.
Polimorfizm dasturiy ta’minot ishlab chiqishda kodning qayta ishlatilishi va umumiy
interfeyslar orqali tizimni boshqarishni osonlashtiradi. Masalan, bir xil metod nomidan
foydalangan holda turli sinflarning o‘ziga xos xatti-harakatlarini amalga oshirish mumkin. Bu
tamoyil “Design Patterns”da keng qo‘llaniladi, masalan, Strategy yoki Factory patternlarida, bu
esa kodning modulliyligi va mustaqilligini oshiradi. Java'da polimorfizm @Override
anotatsiyasi bilan metodlarni qayta yuklash orqali ta'minlanadi. misolda Hayvon sinfining ovoz
metodi voris sinflarda o'zgartirilgan:
class Hayvon {
public void ovoz() {
System.out.println("Hayvon ovozi");
}
}
class Kuchuk extends Hayvon {
@Override
public void ovoz() {
System.out.println("Vov");
}
}
class Mushuk extends Hayvon {
@Override
public void ovoz() {
System.out.println("Myau");
}
INTERNATIONAL JOURNAL OF SCIENTIFIC RESEARCHERS
ISSN: 3030-332X Impact factor: 8,293
Volume 11, issue 2, May 2025
https://wordlyknowledge.uz/index.php/IJSR
worldly knowledge
Index:
google scholar, research gate, research bib, zenodo, open aire.
https://scholar.google.com/scholar?hl=ru&as_sdt=0%2C5&q=wosjournals.com&btnG
https://www.researchgate.net/profile/Worldly-Knowledge
https://journalseeker.researchbib.com/view/issn/3030-332X
882
}
public class Main {
public static void main(String[] args) {
Hayvon hayvon1 = new Kuchuk();
Hayvon hayvon2 = new Mushuk();
hayvon1.ovoz(); // "Vov"
hayvon2.ovoz(); // "Myau"
}
}
Bu misolda Hayvon sinfining ovoz metodi voris sinflarda qayta belgilangan bo‘lib, dinamik
polimorfizmni ko‘rsatadi. Polimorfizm kodning moslashuvchanligini oshiradi va yangi sinflar
qo‘shilganda mavjud kodni o‘zgartirmasdan kengaytirish imkonini beradi.
Vorislik sinflar o‘rtasida umumiy xususiyatlar va metodlarni meros qilib olish imkonini
beruvchi mexanizm bo‘lib, OOPning asosiy tamoyillaridan biridir. Java tilida vorislik extends
kalit so‘zi orqali amalga oshiriladi va faqat yakka vorislik qo‘llab-quvvatlanadi. Vorislik bir
nechta shaklda bo‘lishi mumkin ular, yakka vorislik bu bir sinf faqat bitta superklassdan
vorislik qila oladi. Java tilida bu asosiy qoida hisoblanadi. Ierarxik vorislik bu bir superklassdan
bir nechta voris sinflar yaratiladi. Masalan, Hayvon sinfidan Kuchuk, Mushuk va Qush sinflari
vorislik qilishi mumkin. Ko‘p vorislik bu bir sinf bir nechta superklasslardan vorislik qila oladi.
Java tilida bu to‘g‘ridan-to‘g‘ri qo‘llab-quvvatlanmaydi, lekin interfeyslar orqali shunga
o‘xshash imkoniyatlar ta’minlanadi. Vorislik kodning qayta ishlatilishini ta’minlaydi va sinflar
o‘rtasida mantiqiy ierarxiya yaratadi. Superklass umumiy xususiyatlar va metodlarni belgilaydi,
voris sinf esa bu xususiyatlarni kengaytiradi yoki o‘ziga xos funksionallik qo‘shadi. Masalan,
Hayvon sinfi umumiy xususiyatlarni (masalan, ism yoki ovqatlanish) belgilasa, Qush sinfi
qo‘shimcha xususiyatlarni (masalan, uchish) qo‘shishi mumkin. Vorislikning asosiy afzalligi
shundaki, u kodning takrorlanishini kamaytiradi va loyihaning tuzilishini aniqroq qiladi.
Vorislikning haddan tashqari chuqur ierarxiyalari kodni murakkablashtirishi va uning ish
faoliyatini pasaytirishi mumkin. Masalan, agar ierarxiya besh yoki undan ko‘p darajaga ega
bo‘lsa, kodni tushunish va boshqarish qiyinlashadi. Shuningdek, Java’da ko‘p vorislikning
yo‘qligi “diamond problem” (rombsimon muammo) kabi muammolarni oldini oladi, lekin bu
dasturchilarni interfeyslardan foydalanishga majbur qiladi. Vorislik katta dasturiy loyihalarda
umumiy funksionallikni bir joyda jamlaydi va yangi sinflar qo‘shish jarayonini osonlashtiradi.
Masalan, bir superklassdagi o‘zgarish barcha voris sinflarga ta’sir qiladi, bu esa kodni
yangilashni soddalashtiradi. Java'da extensions va super kalit so'zlari vorislikni boshqaradi:
class Hayvon {
protected String ism;
public Hayvon(String ism) {
this.ism = ism;
}
public void ovqatlanish() {
System.out.println(ism + " ovqatlanmoqda");
}
}
class Qush extends Hayvon {
public Qush(String ism) {
super(ism);
}
INTERNATIONAL JOURNAL OF SCIENTIFIC RESEARCHERS
ISSN: 3030-332X Impact factor: 8,293
Volume 11, issue 2, May 2025
https://wordlyknowledge.uz/index.php/IJSR
worldly knowledge
Index:
google scholar, research gate, research bib, zenodo, open aire.
https://scholar.google.com/scholar?hl=ru&as_sdt=0%2C5&q=wosjournals.com&btnG
https://www.researchgate.net/profile/Worldly-Knowledge
https://journalseeker.researchbib.com/view/issn/3030-332X
883
public void uchish() {
System.out.println(ism + " uchmoqda");
}
}
public class Main {
public static void main(String[] args) {
Qush qush = new Qush("Parvoz");
qush.ovqatlanish(); // "Parvoz ovqatlanmoqda"
qush.uchish();
// "Parvoz uchmoqda"
}
}
Bu misolda Qush sinfi Hayvon sinfidan metodlarni meros qilib oladi va yangi funksionallik
qo‘shadi. Vorislik kodning takrorlanishini kamaytiradi va tuzilmani aniqroq qiladi.
Abstrakt sinflar umumiy funksionallikni belgilash uchun ishlatiladi va ulardan to‘g‘ridan-to‘g‘ri
ob’ekt yaratib bo‘lmaydi. Java tilida abstrakt sinflar abstract kalit so‘zi bilan belgilanadi va
abstrakt metodlarni (to‘liq amalga oshirilmagan metodlar) o‘z ichiga olishi mumkin. Abstrakt
sinflar voris sinflar uchun shablon vazifasini o‘taydi. Ular qisman amalga oshirilgan bo‘lishi
mumkin, ya’ni konkret metodlar bilan birga abstrakt metodlar ham bo‘lishi mumkin. Abstrakt
metodlar voris sinflarda majburiy ravishda amalga oshirilishi kerak. Bu mexanizm sinflar
o‘rtasida umumiy xatti-harakatni ta’minlash bilan birga, har bir voris sinfga o‘ziga xos
xususiyatlarni qo‘shish imkonini beradi. Abstrakt sinflar interfeyslardan farq qiladi, chunki ular
qisman amalga oshirilgan bo‘lishi mumkin. Masalan, abstrakt sinfda umumiy logikani o‘z
ichiga olgan konkret metodlar bo‘lishi mumkin, interfeyslar esa faqat metod imzolarni
belgilaydi. Java tilida sinf faqat bitta abstrakt sinfdan vorislik qila oladi, lekin bir nechta
interfeyslarni amalga oshirishi mumkin. Abstrakt sinflar dasturiy tuzilmalarga aniqlik keltiradi
va umumiy logikani markazlashtiradi. Masalan, geometrik shakllarni modellashtirishda Shakl
abstrakt sinfi umumiy xususiyatlarni (masalan, yuza hisoblash) belgilasa, Doira yoki
Uchburchak sinflari bu xususiyatlarni o‘ziga xos tarzda amalga oshiradi. Abstrakt sinflarning
asosiy cheklovi shundaki, ulardan ob’ekt yaratib bo‘lmaydi va faqat vorislik uchun ishlatiladi.
Agar loyihada faqat metod imzolarni belgilash kerak bo‘lsa, interfeyslar afzalroq bo‘lishi
mumkin.
abstract class Shakl {
abstract void hisoblaYuza();
}
class Doira extends Shakl {
private double radius;
public Doira(double radius) {
this.radius = radius;
}
@Override
void hisoblaYuza() {
System.out.println("Doiraning yuzasi: " + (Math.PI * radius * radius));
}
}
public class Main {
public static void main(String[] args) {
Shakl shakl = new Doira(5);
INTERNATIONAL JOURNAL OF SCIENTIFIC RESEARCHERS
ISSN: 3030-332X Impact factor: 8,293
Volume 11, issue 2, May 2025
https://wordlyknowledge.uz/index.php/IJSR
worldly knowledge
Index:
google scholar, research gate, research bib, zenodo, open aire.
https://scholar.google.com/scholar?hl=ru&as_sdt=0%2C5&q=wosjournals.com&btnG
https://www.researchgate.net/profile/Worldly-Knowledge
https://journalseeker.researchbib.com/view/issn/3030-332X
884
shakl.hisoblaYuza(); // "Doiraning yuzasi: 78.53981633974483"
}
}
Bu misolda Shakl abstrakt sinfi hisoblaYuza metodini belgilaydi, uni Doira sinfi amalga
oshiradi. Abstrakt sinflar dasturiy tuzilmalarga aniqlik va tartib keltiradi.
Interfeyslar faqat metod imzolarni belgilaydigan tuzilmalar bo‘lib, sinflarga umumiy xatti-
harakatni ta’minlash uchun ishlatiladi. Java tilida interfeyslar interface kalit so‘zi bilan
yaratiladi va sinflar ularni implements orqali amalga oshiradi. Interfeyslar sinflar o‘rtasida
shartnoma (contract) yaratadi. Har bir interfeysni amalga oshiruvchi sinf unda belgilangan
metodlarni majburiy ravishda amalga oshirishi kerak. Java tilida bir sinf bir nechta
interfeyslarni amalga oshirishi mumkin, bu esa ko‘p vorislikka o‘xshash imkoniyatlarni beradi.
Java 8 dan boshlab interfeyslarda default metodlar va statik metodlar qo‘shilgan bo‘lib, bu
ularni yanada moslashuvchan qiladi. Default metodlar interfeyslarda standart amalga oshirishni
ta’minlaydi. Bu mavjud kodni buzmasdan yangi funksionallik qo‘shish imkonini beradi. Statik
metodlar esa interfeys ichida umumiy yordamchi funksiyalarni belgilash uchun ishlatiladi.
Interfeyslar loyihani soddalashtiradi va yangi funksionallik qo‘shishni osonlashtiradi. Masalan,
Comparable interfeysi sinflarga tartiblash qobiliyatini beradi, Runnable interfeysi esa ko‘p
oqimli dasturlashda ishlatiladi. Interfeyslar orqali kodning mustaqilligi oshadi, chunki turli
sinflar bir xil interfeysni amalga oshirishi mumkin. Interfeyslarning asosiy cheklovi shundaki,
Java 8 gacha ularda faqat metod imzolarni belgilash mumkin edi, bu esa ba’zi hollarda
qo‘shimcha sinflarni yaratishni talab qilardi. Default metodlar bu muammoni qisman hal qiladi,
lekin murakkab logikani interfeyslarda saqlash tavsiya etilmaydi.
interface HayvonInterfeysi {
void ovoz();
}
class Kuchuk implements HayvonInterfeysi {
public void ovoz() {
System.out.println("Vov");
}
}
class Mushuk implements HayvonInterfeysi {
public void ovoz() {
System.out.println("Myau");
}
}
public class Main {
public static void main(String[] args) {
HayvonInterfeysi hayvon1 = new Kuchuk();
HayvonInterfeysi hayvon2 = new Mushuk();
hayvon1.ovoz(); // "Vov"
hayvon2.ovoz(); // "Myau"
}
}
Interfeyslar loyihani soddalashtiradi va yangi funksionallik qo‘shishni osonlashtiradi. Java 8
dan boshlab default metodlar orqali interfeyslarda standart xatti-harakatlar ham belgilanishi
mumkin.
INTERNATIONAL JOURNAL OF SCIENTIFIC RESEARCHERS
ISSN: 3030-332X Impact factor: 8,293
Volume 11, issue 2, May 2025
https://wordlyknowledge.uz/index.php/IJSR
worldly knowledge
Index:
google scholar, research gate, research bib, zenodo, open aire.
https://scholar.google.com/scholar?hl=ru&as_sdt=0%2C5&q=wosjournals.com&btnG
https://www.researchgate.net/profile/Worldly-Knowledge
https://journalseeker.researchbib.com/view/issn/3030-332X
885
Polimorfizm, vorislik, abstrakt sinflar va interfeyslar Java tilida dasturiy ta’minotni samarali
loyihalashda muhim rol o‘ynaydi. Ular kodning moslashuvchanligi, qayta ishlatilishi va
modulliyligini ta’minlaydi. Nazariy tushunchalar va amaliy misollar orqali ushbu
tamoyillarning Java’dagi qo‘llanilishi va ahamiyati ko‘rsatildi.
FOYDALANILGAN ADABIYOTLAR:
1. Umarov B. RAQAMLI TEXNOLOGIYALAR VOSITASIDA PEDAGOGLARNING
PROFESSIONAL KOMPETENTLIGINI RIVOJLANTIRISH MAZMUNI //Евразийский
журнал математической теории и компьютерных наук. – 2023. – Т. 3. – №. 5. – С. 87-
93.
2. Azizovich U. B. PRINCIPLES OF FORMING TEACHER COMPETENCE THROUGH
INNOVATIVE TECHNOLOGIES. Finland International Scientific Journal of Education
//Social Science & Humanities. – 2023. – Т. 11. – №. 5. – С. 823-828.
3. Azizovich U. B. PEDAGOGICAL-PSYCHOLOGICAL PRINCIPLES OF THE
FORMATION OF PROFESSIONAL COMPETENCE //Confrencea. – 2023. – Т. 6. – №. 6.
– С. 204-212.
4. Azizovich U. B., Zarifjon o’g’li X. N. BULUT TEXNOLOGIYALARINING
AFZALLIKLARI
VA
KAMCHILIKLARI
//TA’LIM,
TARBIYA
VA
INNOVATSIYALAR JURNALI. – 2024. – Т. 1. – №. 1. – С. 46-54.
5. Azizovich U. B., Rustamjon o‘g‘li R. Z. MA’LUMOTLARNI SHIRFLASH
TENALOGIYALARI VA XAVFSIZLIK STANDARTLARI //TA’LIM, TARBIYA VA
INNOVATSIYALAR JURNALI. – 2024. – Т. 1. – №. 1. – С. 105-108.
6. Azizovich U. B. Et al. OLAP TIZIMLARINING ASOSIY PRINSIPLARI //TA’LIM,
TARBIYA VA INNOVATSIYALAR JURNALI. – 2024. – Т. 1. – №. 1. – С. 81-86.
7. Azizovich U. B. THE DEVELOPMENT OF PROFESSIONAL COMPETENCY OF
TEACHERS IN EDUCATIONAL TECHNOLOGY BASED ON DIGITAL
TECHNOLOGIES //Eurasian Journal of Mathematical Theory and Computer Sciences. –
2024. – Т. 4. – №. 7. – С. 11-14.
8. Azizovich U. B. Et al. MASHINALI O ‘QITISHDA REGRESSIYA ENG KICHIK
KVADRATLAR USULINI QO ‘LLASH //INNOVATION IN THE MODERN
EDUCATION SYSTEM. – 2024. – Т. 5. – №. 46. – С. 266-270.