Object – global supersinf
С# da Object sinfi mavjud. U hama sinflar uchun supersinf hisoblanadi, ya’ni har
bir sinf Object sinfini kengaytiradi. Lekin class Ishchi : Object deb yozish kerak
emas.Agar sinf uchun suersinf ko’rsatilmagan b’lsa Object sinfi uning supersinfi
63
hisoblanadi.Object sinfi o’zgarubchisini ixtiyoriy ob’ektga ko’rsatkich sifatida
ishlatish mumkin:
Object o = new Talaba("Sultonov M.U.", “2-I","Informatika");
Keyinchalik esa keltirish mumkin: Talaba t = (Talaba)o;
Object tipidagi ko’rsatkich asosan har xil tipli elementlarga ega bo’lgan berilganlar
shajrasini tuzish uchun ishlatiladi.
Equals metodi
equals: agar ikki ko’rsatkich ayni bir xotirani egallab turgan bo’lsa true natija
qaytaradi.
A.equals(B);
Bu yerda A va B ko’rsatkich tipga tegi
C# spetsifikatsiyasidagi equals:
1. Refleksivlik. Ixtiyoriy null bo’lmagan х ko’rsatkich uchun x. equals(x) chaqiruv
true natija beradi
2. Simmetriklik.Ixtiyoriy х va у ko’rsatkichlar uchun х.equals(у) chaqiruv true
natija beradi faqat va faqat shu holdaki qachon у.equals(x) chaqiruv true natija
bersa.
3. Tranzitivlik. Ixtiyoriy х va у ko’rsatkichlar uchun х.equals(у) va у.equals(z)
chaqiruv true natija bersa х.equals(z) chaqiruv ham true natija beradi.
4. Qaramaqarshiliksizlik. Agar x va y ro’rsatkichlar ko’rsatadigar ob’ektlar
o’garmasa qayta х.equals(у) chaqiruv natijasi oldingi chaqiruv natijasi bilan bir xil
bo’ladi.
5. Ixtiyoriy null bo’lmagan ko’rsatkich х uchun х.equals(null) chaqiruv false natija
beradi.[6]
Sinf osti uchun oldin supersinf equals metodi chaqiriladi va agar u true natija bersa
keyin maydonlar tekshiriladi
toString metodi
toString: ob’ekt qiymatini satr ifatida qaytaradi. Bu metod qariyb hamma sinflarda
qayta aniqlanadi va ob’ektning joriy qiymatini pechatga chiqarish uchun
mo’ljallangan.
64
Nuqta sinfining toString metodi quyidagi satrni chiqaradi: "nuqtaning koordinatasi:
("+x+", "+y+")"
Ko’pincha sinflar toString metodi ni shunday realizatsiya qiladilarki, unda sinf
nomi va maydonlarning qiymatlari kvadrat qavs ichida chiqariladi
Object sinfida bu metod sinf nomini va undan keyin uning xotiradagi adresini
chiqaradi
Console
.WriteLine (System.out);
Quyidagi satrni chiqaradi: C#.io.PrintStream@2f668 4
Bu metod dasturni sozlashda ishlatilishi ham mumkin.
Abstrakt sinfga doir misol:
using System;
using System.Text;
namespace sinflar
{
public abstract class figura {
public int a;
public figura(int x) { a = x; }
abstract public double yuzi();
// public virtual double perimetr() { }
}
public class aylana : figura {
public aylana(int x) : base(x) { }
public override double yuzi()
{ return a * a*Math.Pi; }
}
public class turtburchak : figura
{
public int b;
public turtburchak(int x, int y) : base(x) { b =y; }
65
public override double yuzi()
{ return a*b; }
}
class Program
{
static void Main(string[] args)
{
figura F;
aylana A = new aylana(5);
turtburchak T = new turtburchak(3,4);
F = T;
Console.Write("Figura yuzasi =" + F.yuzi());
Console.ReadKey();
}
}
}
|