INTERFACE ( ARAYÜZLER) VE SINIFLAR
Interface orduya emir veren komutan gibidir.emri verir ama emrin nasıl yapılacağını belirtmez.
Interface (Arayüz) Üyeleri:
1-Özellikler (Properties)
2-Methodlar (Methods)
3-Olaylar (Events)
4-İndexleyiciler (İndexers)
**Arayüzün tüm üyeleri public olarak kabul edilir.
**Arayüz elemanlarını static olarak tanımlayamayız.
**Arayüzlerin uygulandığı sınıflar,arayüzde tanımlanan bütün üyeleri kullanmak zorundadır.
Interface (Arayüz) de Kullanılmayan Üyeler :
1-Yapıcılar (Constructors)
2-Yok Ediciler (Destructors)
3- Alanlar (Fields)
Interface emir
{
void kos();
}
class Class1 : emir
{
public void kos()
{
System.Console.WriteLine(“komutanım emirlerinizi en iyi şekilde yerine getireceğim.emir eliniz ben olacağım.”);
}
}
class Class2 : emir
{
public void kos()
{
System.Console.WriteLine(“komutanım beni görevlendirdiğiniz için teşekkür ederim.Class1 den daha iyi bir emir el olurum.“);
}
}
static void Main(string[] args)//herşey ortaya çıkar:))
{
Class1 x=new Class1();
Class2 y=new Class2();
x.kos();
y.kos();
}
!!Yukarıdaki tanımlamamızda polymorphism kavramı karşımıza çıkıyor.Yani aynı isimdeki 2 metodumuz farklı biçimlerde işleniyor.
PUBLİC VE PRİVATE ERİŞİMİ UYGULAMAK
1- Bir sınıfın yalnızca bu sınıf içerisinde kullanılan üyeleri private olmalıdır.
2- Belirli bir değer aralığında olması gereken veriler private olmalıdır.
3- Bir üye üzerinde yapılan değişiklik,başka üyeleri de etkiliyorsa private olmalıdır.
4- Yanlış kullanıldıklarında bir nesneye zarar verebilen üyeler private olmalıdır.
5- Private verilerin değerlerini alan ve ayarlayan metodlar public olmalıdır.
class Stack
{
//bunlar private üyelerdir.
char [] stck; //yığının temelini oluşturan depolamayı sağlar.
int tos; //yığının en üst tepesinin indexini tutar.
//büyüklüğü bilinen boş bir stack oluşturduk.
public Stack(int size)
{
stck = new char[size]; //yığın için bellek alanı ayrıldı.
tos = 0;
}
public void push(char ch)
{
if(tos ==stck.Length)
{
Console.WriteLine("---Stack is full.");
return;
}
stck[tos] = ch;
tos++;
}
public char pop()
{
if (tos == 0)
{
Console.WriteLine("---Stack is empty.");
return (char) 0;
}
tos--;
return stck[tos];
}
public bool full()
{
return tos ==stck.Length;
}
public bool empty()
{
return tos ==0;
}
public int capacity()
{
return stck.Length;
}
public int getNum()
{
return tos;
}
class StackDemo
{
public static void Main()
{
Stack stk1 = new Stack(10);
Stack stk2 = new Stack(10);
Stack stk3 = new Stack(10);
char ch;
int i;
//stk1 içine birkaç karakter yerleştir.
Console.WriteLine("Push A through Z onto stk1.");
for(i=0;!stk1.full();i++)
stk1.push((char)('A'+i));
if (stk1.full()) Console.WriteLine("stk1 is full.");
//stk1'in içeriğini göster.
Console.WriteLine("Contents of stk1:");
while(!stk1.empty())
{
ch = stk1.pop();
Console.Write(ch);
}
Console.WriteLine();
if(stk1.empty()) Console.WriteLine("stk1 is empty.\n");
//stk1e biraz daha karakter yerleştir.
Console.WriteLine("Again push A through Z onto stk1.");
for(i=0;!stk1.full();i++);
//şimdi stk1den eleman al ve elemanı stk2ye koy.
Console.WriteLine("Now,pop chars from stk1 and push " +
"them onto stk2.");
while(!stk1.empty())
{
ch = stk1.pop();
stk2.push(ch);
}
Console.WriteLine("\n");
//yığına 5 karakter birleştir.
Console.WriteLine("Put 5 characters on stk3.");
for(i=0;i<5;i++)
stk3.push((char) ('A'+i));
Console.WriteLine("Capacity of stk3 :"+stk3.capacity());
Console.WriteLine("Number of objects in stk3:"+
stk3.getNum());
}
}
PROGRAMDA KULLANILAN METODLAR :
push ( ) : yığına eleman yerleştirir.
pop ( ) : yığından eleman çıkartır.
full ( ) : yığın doluyken true, aksi halde false döndürür.
empty ( ) : yığın boşken true , aksi halde false döndürür.
capacity ( ) : yığının toplam kapasitesini gösterir.
get Num ( ) : yığının şu anki eleman sayısını gösterir.
DİĞER METHODLAR :
swap( ) : bu metod 2 argümanı değiş tokuş yapar.
ref : bu parametre referans olarak çağrı oluşturur.
sqr ( ) : bulunduğu yere argümanın karesini döndürür.
out : bu parametre bir metottan dışarıya değer aktarmak için kullanılır.
evet arkadaşlar.size interface tanımını anlatmaya çalıştım umarım yardımcı olabilmişimdir.sorularınız mail adresime gönderebilirsiniz iyi çalışmalar....
0 yorum: