Metotlar Nedir ve Kullanımı Nasıldır

0
51

Metotlar Nedir ve Kullanımı Nasıldır

Önceden açıklandığı gibi, örnek değişkenler ve metotlar sınıfları oluşturan iki ana
bileşendir.şimdiye kadar, Building sınıfı veri içeriyor ama hiç metot içermiyordu. Sadece
veri içeren sınıflar da tamamen geçerli olmasına rağmen, sınıfların birçoğu metot içerecektir.
Metotlar, sınıf tarafından tanımlanan verileri manipüle eden ve bir çok durumda söz konusu
verilere erişim sağlayan alt rutinlerdir. Özellikle, programınızın diğer bölümleri sınıfla, sınıfın
metotları yoluyla etkileşeceklerdir.
Bir metot, bir veya daha fazla ifade içerir. iyi yazılmış bir C# kodunda her metot yalnızca
tek bir görev görür. Her metodun bir ismi vardır ve metodu çağırmak için bu isim kullanılır.
Genel olarak, bir metoda istediğiniz ismi verebilirsiniz. Ancak, Main() isminin programınızı
çalışmaya başlatan metoda ayrılmışolduğunu unutmayın. Ayrıca, C# anahtar kelimelerini
metot isimleri olarak kullanmayın.
Metotları metin içinde belirtirken elinizdeki kitapta, C# hakkında yazarken ortak hale
gelmiş bir konvansiyon kullanılmaktadır ve kullanılmaya devam edilecektir. Metot isminden
sonra parantezler yer alacaktır. Örneğin, bir metodun ismi getval ise, bu metodun ismi bir
cümle içinde kullanılırken getval() olarak yazılacaktır. Bu notasyon, elinizdeki kitaptaki
değişken isimlerini metot isimlerinden ayırt etmenize yardımcı olacaktır.
Metodun genel biçimi şu şekildedir:
erişim dönüş-tipi isim (parametre-listesi) {
// metodun gövdesi
}
Burada erişim, programın diğer bölümlerinin bu metodu nasıl çağıracağını belirleyen bir
erişim niteleyicisidir. Önceden açıklandığı gibi, erişim niteleyicisi isteğe bağlıdır. Eğer erişim
niteleyicisi mevcut değilse metot, tanımlı olduğu sınıfa özeldir ( private ). şimdilik, tüm
metotları public olarak deklare edeceğiz, böylece bu metotlar programın içindeki diğer kodlar
tarafından da çağrılabilecekler. dönüş-tipi, metodun döndürdüğü veri tipini belirtir. Bu, kendi
oluşturduğunuz sınıf tipleri de dahil olmak üzere herhangi geçerli tipte olabilir. Eğer metot bir
değer döndürmüyorsa, dönüş değeri void olmalıdır. Metodun ismi, isim ile belirtilir. Bu, mev-
cut kapsam içinde diğer öğeler tarafından zaten kullanılmakta olanlardan başka, geçerli her-
hangi bir tanımlayıcı olabilir. parametre-listesi, virgül ile ayrılmıştip ve tanımlayıcı çiftlerin-
den oluşan bir listedir. Parametreler, esas olarak, metot çağrıldığında metoda aktarılan
argümanların değerini alan değişkenlerdir. Metodun hiç parametresi yoksa parametre listesi de
boş olacaktır.
Building Sınıfına Bir Metot Eklemek
Az önce açıklandığı gibi, bir sınıfın metotları tipik olarak bu sınıfın verilerini manipüle
eder ve bu verilere erişim sağlarlar. Bunu hatırda tutarak, önceki örneklerde Main() ‟in toplam
alanı oturanların sayısına bölerek kişi başına düşen alanı hesapladığını hatırlayın. Bu teknik
olarak doğru olsa da, bu hesaplamayı gerçekleştirmek için en iyi yöntem değildir. Kişi başına
düşen alan hesabı en iyi Building sınıfının kendisi tarafından gerçekleştirilebilir. Bu sonuca
götüren neden kolaylıkla anlaşılabilir: Bir binada kişi başına düşen alan, Building sınıfı
tarafından paketlenmiş area ve occupants alanlarının değerlerine bağlıdır. Böylece,
Building sınıfının bu hesaplamayı kendi başına gerçekleştirmesi mümkündür. Üstelik, bu
hesaplamayı Building ‟in içine ekleyerek, Building ‟i kullanan programların her birinin bu
hesabı yapmak zorunda olmalarını da önlemiş olursunuz. Bu, kodun gereksiz yere
kopyalanmasına da engel olur. Son olarak, Building ‟in içine kişi başına düşen alanı
hesaplayan bir metot eklemek suretiyle, bir bina ile doğrudan ilişkili nicelikleri Building
içine zapt ederek Building sınıfının nesne yönelimli yapısını da geliştirmiş oluyorsunuz.
Building ‟e bir metot eklemek için söz konusu metodu Building ‟in deklarasyonu içinde
belirtin. Örneğin, Building ‟in aşaşıdaki versiyonu, bir binada kişi başına düşen alanı gösteren
areaPerPerson() isimli bir metot içermektedir;

// Building'e bir metot ekle.
using System;
class Building {
public int floors;
// kat sayisi
public int area;
// toplam bina alani,
public int occupants; // oturanlarin sayisi
fit kare olarak
// Kisi basina dusen alani goster.
public void areaPerPerson() {
Console.WriteLine("" + area / occupants +
" area per person");
}
}
// areaPerPerson() metodunu kullan.
class BuildingDemo {
public static void Main() {
Building house = new Building();
Building office = new Building();
// house icindeki alanlara deger ata
house.occupants = 4;
house.area = 2500;
house.floors = 2;
// office icindeki alanlara deger ata
office.occupants = 25;
office,area = 4200;
office.floors = 3;
Console.WriteLine("house has:\n " +
house.floors + " floors\n" +
house.occupants + " occupants\n " +
house.area + "total area");
house.areaPerPerson();
Console.WriteLine();
Console.WriteLine("office has:\n" +
office.floors + "Floors\n "+
office.occupants + " occupants\n" +
office.area + "total area");
office.areaPerPerson();// Building'e bir metot ekle.
using System;
class Building {
public int floors;
// kat sayisi
public int area;
// toplam bina alani,
public int occupants; // oturanlarin sayisi
fit kare olarak
// Kisi basina dusen alani goster.
public void areaPerPerson() {
Console.WriteLine(" "+ area / occupants +
"area per person");
}
}
// areaPerPerson() metodunu kullan.
class BuildingDemo {
public static void Main() {
Building house = new Building();
Building office = new Building();
// house icindeki alanlara deger ata
house.occupants = 4;
house.area = 2500;
house.floors = 2;
// office icindeki alanlara deger ata
office.occupants = 25;
office,area = 4200;
office.floors = 3;
Console.WriteLine("house has:\n " +
house.floors + "floors\n" +
house.occupants + "occupants\n " +
house.area + "total area");
house.areaPerPerson();
Console.WriteLine();
Console.WriteLine("office has:\n "+
office.floors + " floors\n"+
office.occupants + " occupants\n" +
office.area + " total area");
office.areaPerPerson();}
}

Bu program, önceki ile aynı olan aşağıdaki çıktıyı üretir:
house has:
2 floors
4 occupants
2500 total area
625 area per person
office has:
3 floors
25 occupants
4200 total area
168 area per person

Gelin, şimdi areaPerPerson() metodundan başlayarak bu programın temel öğelerine
göz atalım. areaPerPerson() ‟un ilk satırı şudur:
public void areaPerPerson()
{
Bu satır, areaPerPerson() adında, parametresiz bir metot deklare etmektedir. Bu metot
public olarak belirtilmiştir; böylece, programın diğer bölümlerinin tümü tarafından
kullanılabilir. Bu metodun dönüş tipi void ‟dir. Bu sayede, areaPerPerson() kendisini
çağıran program parçasına bir değer döndürmez. Satır, metodun açılış küme parantezi ile sona
ermektedir.
areaPerPerson() ‟un gövdesi sadece şu ifadeden oluşmaktadır:
Console.WriteLine(” ” + area / occupants + ” area per person”);
Bu ifade, alanı oturanların sayısına bölerek bir binada kişi başına düşen alanı göstermekte-
dir. Building tipindeki her nesne area ve occupants ‟ın kendi kopyalarına sahip oldukları
için, areaPerPerson() çağrıldığı zaman, hesaplarda metodu çağıran nesneye ait değişken
kopyaları kullanılmaktadır.
areaPerPerson() metodu, kapanış küme parantezine rastlayınca sona erer. Bu, program
kontrolünün tekrar metodu çağıran koda geri dönmesine neden olur.
şimdi, Main() ‟in içindeki şu kod satırına yakından bir bakın:
house.areaPerPerson();
Bu ifade, house üzerindeki areaPerPerson() metodunu çağırır. Yani, nesnenin
isminin ardından nokta operatörünü kullanarak areaPerPerson() ‟u house nesnesine bağlı
olarak çağırmaktadır. Bir metot çağrıldığı zaman, program kontrolü metoda aktarılır. Metot
sona erdiğinde ise, kontrol tekrar metodu çağıran koda geri döner ve program, çağrıyı takip
eden kod satırı ile devam eder.

CEVAP VER