Chiziqli algebraik tenglamalarning tizimlarini oddiy iteratsiyalar usuli bilan yechish. Usulning hisoblash algoritmi, xatoligini baholash
Abstrakt metodlarni voris sinflarda qayta aniqlash
Download 414.51 Kb.
|
Azamat praktika (1)
- Bu sahifa navigatsiya:
- Natija: Moo Ota sinfda joylashgan abstrakt metoddan foydalanish avvalida override
Abstrakt metodlarni voris sinflarda qayta aniqlash.
Abstraktsiya tushunchasi asosan sinf va metodlar uchun foydalaniladi va abstract kalit so'zi yordamida quriladi. Abstrakt sinf- bu sodda qilib aytganda cheklangan sinf. Ya'ni undan obyekt olish taqiqlangan. Unga kirish uchun, undan voris sinf olish lozim. Abstrakt metod - bu tanasi mavjud bo'lmagan, hamda faqatgina abstrakt sinfda ishlovchi metod hisoblanadi. Uni tanasi esa, voris sinfda taqdim etiladi. Endi misollar bilan tanishib chiqamiz. Example 1 using System; // abstrakt class 'Hayvonlar' public abstract class Hayvolar { // abstrakt metod 'Ovoz()' public abstract void Ovoz(); } // class 'Hayvolar' dan olingan voris class 'Sigir' public class Sigir : Hayvolar { // Qayta ishlangan 'Ovoz()' metodi public override void Ovoz() { Console.WriteLine("Moo"); } } class Program { static void Main(string[] args) { // Sigir obyektini yaratish Sigir sigir_obj = new Sigir(); // abstrakt metodni chaqirish sigir_obj.Ovoz(); } } Natija: Moo Ota sinfda joylashgan abstrakt metoddan foydalanish avvalida override kalit so'zini yozib qo'yish talab etiladi. Sinfni abstrakt ko'rinishga keltirish, uning ichida faqatgina abstrakt metodlari bo'lishi kerakligini anglatmaydi. Sinfda oddiy metodlardan ham foydalanish mumkin. Example 2 using System; abstract class AbstractClass { // Abstrakt bo'lmagan metod public int AddTwoNumbers(int num1, int num2) { return num1 + num2; } public abstract int MultiplyTwoNumbers(int num1, int num2); } class VorisClass : AbstractClass { public override int MultiplyTwoNumbers(int num1, int num2) { return num1 * num2; } } class Program { static void Main(string[] args) { VorisClass d = new VorisClass(); Console.WriteLine($"Yig'indi: {d.AddTwoNumbers(4, 6)}, Ko'paytma: {d.MultiplyTwoNumbers(6, 4)}"); } } Natija: Yig'indi: 10, Ko'paytma: 24 XulosaAbstraktsiya - bu umumiy tushunchadir, uni real dunyoda ham, OOP ga asoslangan dasturlash tillarida ham topishingiz mumkin. Haqiqiy dunyodagi har qanday narsalar, masalan, aytib o'tilgan bankomat aparati yoki hozirgi dasturiy ta'minot loyihangizdagi sinflar va ichki qismni berkituvchi omillar abstraktsiyani ta'minlaydi. Ushbu abstraktsiyalar, murakkablikni kichikroq qismlarga ajratish orqali ishni ancha osonlashtiradi. Eng asosiysi, siz ularni qanday qilib funksionallikni ta'minlayotganini tushunmasdan turib, foydalanishingiz mumkin bo'ladi. Vorislik (inheritance) Obyektga Yonaltirilgan Dasturlash(OYD)ning muhim tamoyillaridan biridir. Voris orqali bir sinf boshqa sinfning funksionalligini o’zlashtirishi mumkin, ya’ni voris sinflar umumiy xususiyatlarni vorislik bilan olgan holda, ayrim xususiyatlarni qayta aniqlash orqali yoki yangi xususiyat kiritish orqali tayanch sinfga o’zgartirish mumkin. Shu sababli hosilaviy sinflarni aniqlash sezilarli ravishda kamayadi, chunki unga tayanch sinfdan farqli elementlar qo’shiladi. Aytaylik, bizda alohida shaxsni tavsiflovchi quyidagi Person sinfi mavjud: class Person { private string _name; public string Name { get { return _name; } set { _name = value; } } public void Display() { Console.WriteLine(Name); } } Ammo korxona ishchisini tavsiflovchi sinf kerak bo’lib qoldi deylik - bu Employee sinfi. Ushbu sinf Person sinfi bilan bir xil funktsiyani amalga oshirishi sababli, xodim ham o'z navbatida shaxs bo'lganligi sababli, Employee sinfini Person sinfining vorisi (yoki sinf osti) ga aylantirish mantiqan to'g'ri bo'ladi. Bu sinf o’z navbatida ajdod (yoki superklass) tayanch sinf deb nomlanadi: class Employee : Person { }
static void Main(string[] args) { Person p = new Person { Name = "Tom" }; p.Display(); p = new Employee { Name = "Sam" }; p.Display(); Console.Read(); } Employee sinfining obyekti o’z navbatida Person sinfining ham obyekti bo’lganligi sababli, o'zgaruvchini quyidagicha aniqlay olamiz : Person p = new Employee(); Kelishuv bo’yicha, Vorislik oshkor ravishda ko’rsatilmasa ham, barcha sinflar Object tayanch sinfining vorisi hisoblanadi. Shuning uchun ham, yuqorida keltirilgan Person hamda Employee sinflari o'zlarining metodlaridan tashqari, Ob'ekt sinfining quyidagi metodlariga ham ega: ToString(), Equals(), GetHashCode() va GetType(). Kelishuv bo'yicha barcha sinflar voris qilib olinishi mumkin. Biroq, bu yerda bir qator cheklovlar mavjud: Person va Employee To’plamli vorislik qo'llanilmaydi, sinf faqat bitta sinfdan voris olishi mumkin. Hosilaviy sinfni yaratishda tayanch sinfning kirish kaliti ham hisobga olinilishi zarur, yani hosilaviy sinfning kirish kaliti tayanch sinfniki bilan bir xil bo’lishi yoki undanda cheklovliroq bo'lishi talab etiladi. Ya'ni, agar tayanch sinf internal kirish kalitiga ega bo'lsa, hosilaviy sinf (voris sinf) ham internal yoki private kirish kalitiga ega bo’lishi mumkin, lekin public kirish kalitiga ega bo’lishi bo’la olmaydi. Shuni hisobga olish kerakki, agar tayanch va hosilaviy sinflar har xil loyihalarda bo'lsa, unda hosilaviy sinf faqat public modifikatorga ega bo'lgan sinfdan voris olinishi mumkin. Agar sinf sealed modifikator bilan e'lon qilingan bo'lsa, u holda ushbu sinfdan voris olib bo’lmaydi. Masalan, quyidagi sinfdan voris olib bo'lmaydi: sealed class Admin { } Download 414.51 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling