(Project → Add Class) qo‘shamiz. Keyin natijalanuvchi dialog oynasida Class belgisini tanlash zarur. Bu esa 5.1 rasmda ko‘rsatilgan va Add qo‘shish tugmasiga bosamiz.
C# da sinfni aniqlash class yordamchi kalit so‘z yordamida amalga oshiriladi. Oddiy mavjud sinflarni e’lon qilish keyingi ko‘rinishda bo‘ladi:
classCar
{
}
Sinfni turini aniqlab bo‘lgach o‘zgaruvchan xadlar to‘plamini aniqlash lozim. Bu aniqlanganlar uni xatoligini tasdiqlash uchun ishglatiladi.
Masalan siz Car ob’ektlari int turidagi berilganlar maydoniga ega bo‘lishi kerak deb echishingiz mumkin. Ular xozirgi tezlikni tasvirlaydi va string tipidagi berilganlar maydoni do‘stona avtomobil ismini tasvirlash uchun ishlatiladi. Boshlang‘ich proektiv xolatini xisobga olgan xolda Car sinfi keyingi ko‘rinishda bo‘ladi.
classCar
{
// The 'state' of the Car.
publicstring petName;
publicint currSpeed;
}
1-rasm. C# sinfiga yangi tipni qo‘shish.
Bu o‘zgaruvchan xadlar public mavjudlik modifikatorini ishlatish bilan e’lon qilingan. Ochiq (public) sinfni xadlari mavjuddir. Sizlarga ma’lum bo‘lishi kerakki “ob’ekt” termini berilgan sinf tipini nusxasini tasvirlash uchun xizmat qiladi, u new kalit so‘z yordamida yaratilgan.
O‘zgaruvchan xadlar to‘plamini aniqlagandan so‘ng, loyihalashtirishdagi keyingi qadam sifatida xadlarini yaratish xisoblanadi, ular uning xolatini modellashtiradi. Bunga misol sifatida Car sinfi SpeedUp() ismi bo‘yicha bitta usulni aniqlaydi va yana bittasi ismi bo‘yicha PrintState() sinf kodini keyingi ko‘rinishda modifikatsiyalaydi
classCar
{
// The 'state' of the Car.
publicstring petName;
publicint currSpeed;
// The functionality of the Car.
publicvoid PrintState()
{
Console.WriteLine("{0} is going {1} MPH.", petName, currSpeed);
}
publicvoid SpeedUp(int delta)
{
currSpeed += delta;
}
}
PrintState() metodi bu qaysidir o‘rinda tashxisli funksiya, u oddiygina Car ob’ektini hozirgi xolatini chiqaradi va u guruxli qatorga chiqadi. SpeedUp() metodi Carni tezligini oshiradi uni kattalikka oshirgan xolda endi Main() metodidagi kodni yangilang u quyida ko‘rsatilgan:
staticvoid Main(string[] args)
{
Console.WriteLine("***** Fun with Class Types *****\n");
// Allocate and configure a Car object.
Car myCar = new Car();
myCar.petName = "Henry";
myCar.currSpeed = 10;
// Speed up the car a few times and print out the
// new state.
for (int i = 0; i <= 10; i++)
{
myCar.SpeedUp(5);
myCar.PrintState();
}
Console.ReadLine();
}
Dasturni ishga tushirib, siz ko‘rishingiz mumkin Car o‘zgaruvchi (myCar) o‘zining xozirgi xolatini butun xayoti davomida ushlab qoladi, u keyingi xulosada ko‘rsatilgan.
***** Fun with Class Types *****
Henry is going 15 MPH.
Henry is going 20 MPH.
Henry is going 25 MPH.
Henry is going 30 MPH.
Henry is going 35 MPH.
Henry is going 40 MPH.
Henry is going 45 MPH.
Henry is going 50 MPH.
Henry is going 55 MPH.
Henry is going 60 MPH.
Henry is going 65 MPH.
new kalit so‘zi yordamida ob’ektlarni joylashtirish
Kodni oldingi misolda ko‘rsatilgandek, ob’ektlar xotiraga new kalit so‘zini ishlatish bilan joylashtirishlari kerak. Agar new kalit so‘zi ko‘rsatilmasa va sinfni o‘zgaruvchisidan foydalanishga u xolda kompilyasiya xatoligi kelib chiqadi.
staticvoid Main(string[] args)
{
Console.WriteLine("***** Fun with Class Types *****\n");
// Error! Forgot to use 'new' to create object!
Car myCar;
myCar.petName = "Fred";
}
Masalan, Main() keyingi metodi kompilyasiyalanmaydi. New kaliti so‘zini qo‘llash orqali ob’ektni korrekt yaratish uchun, xotirasida Car ob’ektini joylashtirish va aniqlash mumkin kodni bitta qatorida.
staticvoid Main(string[] args)
{
Console.WriteLine("***** Fun with Class Types *****\n");
Car myCar = new Car();
myCar.petName = "Fred";
}
Sinfni xotirasini xotirasida alternative sifatida joylashtirish kodni xar hil qatorlarida quyidagicha amalga oshirish mumkin.
staticvoid Main(string[] args)
{
Console.WriteLine("***** Fun with Class Types *****\n");
Car myCar;
myCar = new Car();
myCar.petName = "Fred";
}
Bu yerda kodni birinchi operatori xali yaratilmagan Car tilidagi ob’ektga jo‘natmani e’lon qiladi. Jo‘natmani oshkor o‘zlashtirishi bo‘lgandan so‘ng xotiradagi ob’ektga ko‘rsatadi. Hohlagan xolatda bu haqida biz oddiy sinf tipiga ega bo‘ldik, u bir nechta berilganlar elementlarini aniqlaydi va ba’zi bir bazali operatsiyalarni xozirgi Car sinfini funksionallarini kengaytirish uchun konstruktorlar ahamiyatini o‘rganish lozim.
C# dasturlash tilida sinf tushunchasiga dastlabki dastur tuzilgandayoq duch kelinadi. Odatda bu Program nomi bilan avtomatik tarzda hosil bo’ladi. Demak, biz shu paytgacha biror sinf ichida dasturlar tuzib keldik. Endi esa biz sinfning asosiy xarakterlarini o’rganishni boshlaymiz.
Sinf biror ob’yekt formasini aniqlaydigan qolip(shablon) hisoblanadi. Sinf turli amallar bajariladigan berilganlar va boshqa turli kodlardan tashkil topadi. Berilganlar deganda maydonlar tushunilsa, kodlar deganda metodlar, konstruktorlar, destruktorlar, indeksatorlar, hodisalar, operatorlar va xossalar tushuniladi. Berilganlar va kodlar umumiy nom bilan sinf a’zolari deb yuritiladi. C# dasturlash tilida sinf va uning barcha a’zolari ruxsat modifikatorlariga ega. Ruxsat modifikatorlar dasturchiga sinf va uning a’zolaridan foydalanishga yoki foydalanishni ta’qiqlashga imkon beradi.
Do'stlaringiz bilan baham: |