- Katılım
- 26 Ara 2012
- Konular
- 936
- Mesajlar
- 15,646
- Çözüm
- 8
- Online süresi
- 3mo 29d
- Reaksiyon Skoru
- 2,664
- Altın Konu
- 295
- Başarım Puanı
- 327
- MmoLira
- 664
- DevLira
- 0
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Yazılım süreçlerinde OOP, yani nesne yönelimli programlama, hem yazılımda esnekliğin sağlanması hem daha kaliteli kodların yazılması hem de verimli bir yazılım sisteminin oluşturulması için geliştiricilerin mutlaka öğrenmesi ve uygulaması gereken bir disiplindir.
OOP’nin kendi içerisinde çeşitli temel kavramları da bulunmaktadır. OOP temelli yazılım geliştirme süreçlerinde Interface de yine önemli konuların başında gelir. Bu yazımızda nesne yönelimli programlama dillerinden biri olan C# programlama dilinde Interface örneklerine ve Interface’nin genel özelliklerine değineceğiz.
Interface, Türkçe anlamı arayüz olan, yapısından kaynaklı olarak diğer sınıflar için yol gösterici rolü üstlenen, kendisinden implement edilen sınıf için doldurulması zorunlu alanları aktaran bir kavram olarak açıklanabilir.
Interface yapısı özellikle büyük projelerde tekrarlı kodlar yazmanın önüne geçmek, kodları daha stabil halde yazmak ve esnekliği, kodların tekrardan kullanılabilirliğini sağlamak adına kullanılması gereken yapıların başında gelmektedir.
Interface Özellikleri
Nesne yönelimli programlamlama dillerinde web tabanlı, mobil tabanlı veya otomasyon sistemi yazılması fark etmeksizin Interface yapılarından yararlanılmalıdır. Interface özellikleri genel olarak aşağıdaki gibi sıralanabilir:- Alt sınıflar üst sınıflardan implement edilerek üst sınıfların özellikleri alt sınıflara aktarılır.
- Interfaceler içerisinde metotlar ve propertyler haricinde kod blokları olmaz.
- Interface içerisinde tanımlanan tüm metot ya da propertyler public olarak kabul edilmektedir.
- Herhangi bir Interface özelliğindeki sınıf başka bir Interface sınıfından türetilebilir.
- Interface sınıfını implement eden alt sınıflar, Interface sınıfındaki tüm özellikleri implement etmek zorundadır.
- Interface sınıfında oluşturulan metotların hepsi gövdesizdir, sadece tanımlamak yeterlidir.
- Interface yapıları kullanarak nesneler oluşturulamaz.
C# Interface Nasıl Kullanılır
C#’ta Interface olarak tanımlanması gereken bir sınıfta yapıların başına interface anahtar kelimesinin konulması gerekir.C# programlama dilinde interface tanımlaması aşağıdaki gibidir:
Kod:
public interface IExampleInterface
{
//Code..
}
Bu bir şart olmamakla birlikte yazılım geliştiricileri tarafından sınıf yapılarının daha iyi anlaşılması için tespit edilmiş ortak bir davranıştır.
C# Interface Örnekleri
C# programlama dilinde Interface örnekleri olarak aşağıdaki örnekleri verebiliriz:Örnek 1:
İlk örneğimizde IDepartman adında bir arayüz oluşturarak içerisine property ve metot tanımlayalım.
Kod:
public interface IDepartman
{
public string departmanIsmi { get; set; }
public string departmanKontenjan { get; set; }
public Task<object> departmanBilgisiGetir(string departmanIsmi, string departmanKontenjan);
}
Kod:
IDepartman içerisine departmanIsmi ve departmanKontenjan olmak üzere iki adet property ile birlikte bu bilgileri
geri döndüren departmanBilgisiGetir adında bir metot tanımladık.
Ardından bu sınıfı implement edecek olan YazilimDepartman adından bir sınıf oluşturarak IDepartman Interface’si
içerisindeki tüm property ve metotları implement ettik.
Kod:
public class YazilimDepartmani : IDepartman
{
public string departmanIsmi { get; set; }
public string departmanKontenjan { get; set; }
public async Task<object> departmanBilgisiGetir(string departmanIsmi, string departmanKontenjan)
{
var result = $"Yazılım departman ismi : {departmanIsmi} - Kontenjan : {departmanKontenjan}";
return result;
}
}
YazilimDepartmani sınıfından nesne üreterek ekrana aşağıdaki bilgileri yazdırabiliriz:
Kod:
YazilimDepartmani departman = new YazilimDepartmani();
departman.departmanIsmi = "Kod10";
departman.departmanKontenjan = "1000";
await departman.departmanBilgisiGetir(departman.departmanIsmi, departman.departmanKontenjan);
Kod:
Ekran çıktısı : Yazılım departman ismi : Kod10 – Kontenjan : 1000
Örnek 2:
Bu örneğimizde öncelikle Dersler adından bir model oluşturalım.
Kod:
public class Dersler
{
public string dersAdi { get; set; }
public string dersKredi { get; set; }
}
Kod:
Sonrasında ISinav adından bir Interface oluşturalım ve içerisine çeşitli propertyler ve metotlar tanımlayalım:
Kod:
public interface ISinav
{
public string sinavAdi { get; set; }
public List<Dersler> ders { get; set; }
public decimal sinavPuani { get; set; }
void dersBilgisi(List<Dersler> ders, string sinavAdi, Decimal puan)
}
Kod:
Propertylerden biri Dersler modelini List halinde alındığına dikkat edelim. Bu sebeple metotta parametreye de bu şekilde
gönderilmesi gerekiyor.
Örneği bu şekilde yaparak Interfaceler içerisinde istenildiği kadar List, dizi tanımlamaları, döngülerin
de eklenebileceğini göstermek istedik.
YazilimDersleri adında bir class oluşturarak ISinav Interfacesini implement edelim.
Kod:
public class YazılımDersleri : ISinav
{
public string sinavAdi { get; set; }
public List<Dersler> ders { get; set; }
public decimal sinavPuani { get; set; }
public void dersBilgisi(List<Dersler> ders, string sinavAdi, decimal puan)
{
foreach (var item in ders)
{
Console.WriteLine($"{item.dersAdi} -- {item.dersKredi} -- {sinavAdi} -- {puan}");
}
}
}
Sınıftan nesne üreterek metoda bilgileri yollayalım ve ekran çıktsını alalım:
Kod:
YazılımDersleri yazılımDersleri = new YazılımDersleri();
yazılımDersleri.sinavAdi = "Yazılım Sınavları";
yazılımDersleri.ders = new List<Dersler>()
{
new Dersler() {dersAdi = "C#", dersKredi = "4"},
new Dersler() {dersAdi = "PHP", dersKredi = "6"}
};
yazılımDersleri.sinavPuani = 95;
yazılımDersleri.dersBilgisi(yazılımDersleri.ders, yazılımDersleri.sinavAdi, yazılımDersleri.sinavPuani);
değerleri atadık.
Ekran çıktısı ise aşağıdaki gibidir:
C# — 4 — Yazilim Sinavlari — 95
PHP — 6 — Yazilim Sinavlari — 95
Örnek 3:
Bu örneğimizde bir sınıfın birden fazla Interface’i implement ettiğini ve implement ettiği Interface’de tanımlanan
propertylere ulaştığını göreceğiz. Bunun için ilk olarak iki adet Interface sınıfı tanımlayalım:
İlk sınıfımız kişi bilgilerini tutan IKisi adında bir Interface olsun:
Kod:
public interface IKisi
{
public string kisiAdi { get; set; }
public string kisiSoyadi { get; set; }
}
Kod:
public interface ICalisan
{
public string departman { get; set; }
public decimal maas { get; set; }
}
Kod:
Bir tane de yazilimci adında bir sınıf oluşturarak hem IKisi hem de ICalisan interface sınıflarından implement
alsın.
Kod:
public class Yazilimci : IKisi, ICalisan
{
public string kisiAdi { get; set; }
public string kisiSoyadi { get; set; }
public string departman { get; set; }
public decimal maas { get; set; }
}
Program.cs dosyasında Yazilimci sınıfından nesne üreterek bilgilere erişim sağlayabiliriz.
Kod:
Yazilimci yazilimci = new Yazilimci();
yazilimci.kisiAdi = "Kod";
yazilimci.kisiSoyadi = "10";
yazilimci.departman = "Yazılım";
yazilimci.maas = 10000;
Console.WriteLine($"{yazilimci.kisiAdi} {yazilimci.kisiSoyadi} {yazilimci.departman} {yazilimci.maas}");
Interface konusunu 3 örnek ile anlatmaya çalıştık. Örnekler daha da arttırılarak C# başta olmak üzere nesne yönelimli programlama dilleri olan PHP, Java, Python gibi dillerde de örnekler yazılabilir.
Nesne yönelimli programlamada önemli bir yere sahip olan Interface yapısı ile kodların daha düzenli, tek kalemden
yürütülmesini sağlayacak şekilde dizayna sahip ve tekrar kullanılmasını sağlayacak seviyeye getirilmesi mümkündür.
Günümüzde yazılım geliştiren gerek bireysel yazılım geliştiricileri gerekse de şirket olarak bu işi kurumsal yapan yerler yapılarında böyle esnek yapılara yer vererek projelerinin daha sürdürülebilir olması yönünde çalışmalar yapmaktadır. Sizler de yazılım geliştiricisi olarak OOP’nin temel kriterlerinden biri olan Interface yapısını projelerinize entegre edebilirsiniz.
- Katılım
- 29 Mar 2009
- Konular
- 2,176
- Mesajlar
- 9,577
- Çözüm
- 49
- Online süresi
- 1y 4mo
- Reaksiyon Skoru
- 5,109
- Altın Konu
- 497
- Başarım Puanı
- 449
- MmoLira
- 137,024
- DevLira
- 27
Paylaşım İçin Teşekkürler.
- Katılım
- 26 Ara 2012
- Konular
- 936
- Mesajlar
- 15,646
- Çözüm
- 8
- Online süresi
- 3mo 29d
- Reaksiyon Skoru
- 2,664
- Altın Konu
- 295
- Başarım Puanı
- 327
- MmoLira
- 664
- DevLira
- 0
Rica ederimPaylaşım İçin Teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 1
- Görüntüleme
- 52
- Cevaplar
- 4
- Görüntüleme
- 82
- Cevaplar
- 1
- Görüntüleme
- 25





