Umirov Rahimjonning o’quv-amaliyoti davomida tayyorlagan. Hisobotlari Amaliyot rahbari: O. Primqulov Bajardi: R. Umirov 1-kun
Download 484.63 Kb.
|
Rahimjon Hisobot
10-kun
28-mavzu:Umumlashgan sinflar yaratish va ishlatish. 29-mavzu:Amaliyot bo‘yicha taqdimotlar tayyorlash 30-mavzu:Yozma hisobot tayyorlash va himoya qiliniadi Mavzu: Umumlashgan sinflar yaratish va ishlatish. Amaliyot bo’yicha taqdimotlar tayyorlash. Yozma hisobot tayyorlash va himoya qilish. C# tilida inkapsulyatsiya printsipi sinf deb atalauvchi nostandart tiplarni (foydalanuvchi tiplarini) hosil qilish himoya qilinadi. To’g’ri aniqlangan sinf obyektni butun dasturiy modul sifatida ishlatish mumkin. Haqiqiy sinfning barcha ichki ishlari yashirin bo’lishi lozim. To’g’ri aniqlangan sinfning foydalanuvchilari uning qanday ishlashini bilishi shart emas , ular sinf qanday vazifani bajarilishi bilsalar yetarlidir. C# tili obyektga mo’ljallangan dasturlash printsiplarini qo’llab- quvvatlaydi. Bu printsipi quyidagilar: inkapsulyatsiya, meroslik, polimorfizm. Inkapsulyatsiya. Agarda muqandis ishlab chiqarish jarayonida rezistorni qo’llasa, u buni yangidan ixtiro qilmaydi, omborga borib mos parametrlarga muvofiq kerakli detalni tanlaydi. Bu holda muqandis joriy resistor qanday tuzilganligiga e’tiborini qaratmaydi, resistor faqatgina zavod xarakteristikalariga muvofiq ishlasa yetarlidir. Aynan shu tashqi konstruksiyada qo’llaniladigan yashirinlik yoki obyektni yashirinligi yoki avtonomligi xossasini inkapsulyatsiya deyiladi. Inkapsulyatsiya yordamida berilganlarni yashirish ta’minlanadi. Bu juda yaxshi xarakteristika bo’lib foydalanuvchi o’zi ishlatayotgan obyektning ichki sihlari haqida umuman o’ylamaydi. Haqiqatdan ham, muzlatkichni ishlatilishda refrijektorni ishlash printsipini bilish shart emas. Yaxshi ishlab chiqilgan dastur obyektini qo’llashda uning ichki o’zgaruvchilarining o’zaro munosabatini haqida qayg’urish zarur emas. Yana bir marta takrorlash joizki, rezistorni samarali qo’llash uchun ishlash printsipi va ichki qurilmalari haqida ma’lumotlarni bilish umuman shart emas. Rezistorning barcha xususiyatlarini inkapsulyatsiya qilingan, ya’ni yashirilgan.Rezistor faqatgina o’z funktsiyasini bajarilishi yetarlidir. Sinf e’lon qilish. Sinfni e’lon qilish uchun class kalitli so’zi, undan so’ng ochiluvchi figurali qavs, so’ng xossalar va metodlari ro’yxati ishlatilidi. Sinfni e’lon yopiluvchi figurali qavs va nuqtali vergul orqali yakunlanadi. Masalan, Mushuk sinfini quyidagicha e’lon qilish mumkin. Class Mushuk { unsigned int its Yosh; unsigned int its Og’irlik; void Miyovlash() } Mushuk sinfini e’lon qilishda xotira zararlanmaydi. E’lon qilish, kompilyatorga Mushuk sinfini mavjudligini, hamda unda qanday qiymatlar saqlanishi mumkinligini (its Yosh, its Og’irlik) va u qanday amallarni bajarilishi mumkinligini (Miyovlash() metodi) haqida xabar beradi. Bundan tashqari, bu e’lon qilish orqali kompilyatorga Mushuk Sinfining o’lchami, ya;ni har qanday ma’lumot beradi. Masalan, joriy misolda butun qiymat uchun to’rt bayt talab talab qilinsa, Mushuk sinfi obyekti o’lchovi sakkiz bayt bo’ladi.(its Yosh o’zgaruvchisi uchun to’rt bayt, its Og’irlik o’zgaruvchisi uchun to’rt bayt).Miyovlash() metodi xotiradan joy ajratishni talab qilmaydi. Topshiriq 1.using System; namespace ConsoleApp24 { public abstract class Progressiya { public double Yigindi; public virtual double yigindi() { return Yigindi; } public abstract double n_xad(int x); } public class Arifmetik : Progressiya { public int bir_xad; public int xad_ayirmasi; public int n_xad_soni; public double yigindi() { Yigindi=(((2*bir_xad+xad_ayirmasi*(n_xad_soni-1))*n_xad_soni)/2); return Yigindi; } public override double n_xad(int x) { return (bir_xad +xad_ayirmasi*(n_xad_soni-1)); } } public class Geometrik:Progressiya { public int bir_xad; public int xad_maxraj; public int xad_soni; public double yigindi() { Yigindi =( bir_xad*(Math.Pow(xad_maxraj,xad_soni-1))/(xad_maxraj-1)); return Yigindi; } public override double n_xad(int x) { return (bir_xad*(Math.Pow(xad_maxraj,xad_soni-1))); } } class Program { static void Main(string[] args) { int n,m; Arifmetik p = new Arifmetik(); Console.Write("Arifmetik progressiyaning birinchi xadi:\t"); p.bir_xad = Convert.ToInt32(Console.ReadLine()); Console.Write("Arifmetik progressiyaning xadlari soni:\t\t"); p.n_xad_soni = Convert.ToInt32(Console.ReadLine()); Console.Write("Arifmetik progressiyaning xadlari ayirmasi:\t"); p.xad_ayirmasi = Convert.ToInt32(Console.ReadLine()); Console.Write("Arifmetik progressiyaning xadlari yigindisi:\t"); Console.WriteLine(p.yigindi()); Console.Write("Arifmetik progrssiyaning qaysi xadini kormoqchisiz:\t"); n = Convert.ToInt32(Console.ReadLine()); Console.Write("Arifmetik progressiyaning n-xadi:\t"+p.n_xad(n)); Geometrik g = new Geometrik(); Console.Write("\nGeometrik progressiyaning birinchi xadi:\t"); g.bir_xad = Convert.ToInt32(Console.ReadLine()); Console.Write("Geometrik progressiyaning xadlari maxraji:\t"); g.xad_maxraj = Convert.ToInt32(Console.ReadLine()); Console.Write("Geometrik progressiyaning xadlari soni:\t"); g.xad_soni = Convert.ToInt32(Console.ReadLine()); Console.Write("Geometrik progressiyaning yigindisi:\t"+p.yigindi()); Console.Write("\nGeometrik progressiyaning nechinchi xadini kormoqchisiz:\t"); m = Convert.ToInt32(Console.ReadLine()); Console.Write("Geometrik progressiyaning n-xadi:\t"); Console.Write(g.n_xad(m)); } } } KOMPYUTER using System; namespace ConsoleApp3 { class Kompyuter { public int P_chast; public int y_soni; public int O_xotira; public int Q_disk; public double narx; public virtual double Narx() { return narx=((P_chast*y_soni/100)+(O_xotira/80)+(Q_disk/20)); } public virtual bool Yaroqlilik() { if (P_chast >= 2000 && y_soni >= 2 && O_xotira >= 2048 && Q_disk >= 320) { return true; } else return false; } public void Print() { Console.WriteLine("\nProtsessor chastotasi:\t" + P_chast + "\nYadro soni:\t" + y_soni + "\nOperativ xotira:\t" + O_xotira + "\nQattiq disk hajmi:\t" + Q_disk + "\nNarxi:\t" + Narx() + "Ehtiyojga yaroqli?\t" + Yaroqlilik()+"\n"); } } class Noutbook : Kompyuter { public int bat_umri; public override double Narx() { return narx = ((P_chast * y_soni / 100) + (O_xotira / 80) + (Q_disk / 20)+bat_umri*10); } public override bool Yaroqlilik() { if (P_chast >= 2000 && y_soni >= 2 && O_xotira >= 2048 && Q_disk >= 320 && bat_umri >= 240) { return true; } else return false; } public void Print() { Console.WriteLine("\nProtsessor chastotasi:\t" + P_chast + "\nYadro soni:\t" + y_soni + "\nOperativ xotira:\t" + O_xotira + "\nQattiq disk hajmi:\t" + Q_disk + "\nNarxi:\t" + Narx() + "Ehtiyojga yaroqli?\t" + Yaroqlilik() + "\n"); } } class Program { static void Main() { Kompyuter k = new Kompyuter(); Console.Write("Protsessor chastotasi:\t"); k.P_chast = Convert.ToInt32(Console.ReadLine()); Console.Write("Yadro soni:\t"); k.y_soni = Convert.ToInt32(Console.ReadLine()); Console.Write("Operativ xotirasi:\t"); k.O_xotira = Convert.ToInt32(Console.ReadLine()); Console.Write("Qattiq diski:\t"); k.Q_disk = Convert.ToInt32(Console.ReadLine()); k.Print(); Console.WriteLine("Endi noutbook haqida malumot kkiriting\n"); Noutbook n = new Noutbook(); Console.Write("Protsessor chastotasi:\t"); n.P_chast = Convert.ToInt32(Console.ReadLine()); Console.Write("Yadro soni:\t"); n.y_soni = Convert.ToInt32(Console.ReadLine()); Console.Write("Operativ xotirasi:\t"); n.O_xotira = Convert.ToInt32(Console.ReadLine()); Console.Write("Qattiq diski:\t"); n.Q_disk = Convert.ToInt32(Console.ReadLine()); n.Print(); } } } Download 484.63 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling