OOP’nin temellerinden biri olan ve kod tekrarını önleyen metotlarla ilgili kodlarımız.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NetFrameWork.S7.D1.Metotlar { class Program { static void Main(string[] args) { Selamla(); Cikis(); } private static void Cikis() { Console.Write("\nÇıkmak için entera basınız..."); Console.ReadLine(); } static void Selamla() { //void geriye değer döndürmeyen metodlardır. Console.WriteLine("Merhaba"); } } }
class Program { static void Main(string[] args) { Ogrenci ogr = new Ogrenci(); ogr.SelamlaOgrenci(); Cikis(); } private static void Cikis() { Console.Write("\nÇıkmak için entera basınız..."); Console.ReadLine(); } } public class Ogrenci { public void SelamlaOgrenci() { Console.WriteLine("Merhaba Öğrenci"); } }
class Program { static void Main(string[] args) { Ogrenci ogr = new Ogrenci(); ogr.OgrenciMetot1("Tutku","ÇAKIR"); Cikis(); } private static void Cikis() { Console.Write("\nÇıkmak için entera basınız..."); Console.ReadLine(); } } public class Ogrenci { /* * Erişim Belirleyicileri * public : her yerden erişilebilir * private : sadece class içinden erişebilir * protected : class katıldığında kullanabilir * internal : ilgili kütüphane içerisinde metoda erişilebilir * internal protected : ilgili kütüphane içerisinde veya kalıtıldıysa metoda erişilebilir */ public void OgrenciMetot1(string ogrenciAdi,string ogrenciSoyadi) { Console.WriteLine("Öğrenci Bilgileri: {0} {1}", ogrenciAdi, ogrenciSoyadi); } }
Private methot oluşturalım ve public metot üzerinden başka classta ekrana veri yazdıralım
class Program { static void Main(string[] args) { Ogrenci ogr = new Ogrenci(); ogr.OgrenciMetot2(); Cikis(); } private static void Cikis() { Console.Write("\nÇıkmak için entera basınız..."); Console.ReadLine(); } } public class Ogrenci { private void OgrenciMetot1(string ogrenciAdi,string ogrenciSoyadi) { Console.WriteLine("Öğrenci Bilgileri: {0} {1}", ogrenciAdi, ogrenciSoyadi); } public void OgrenciMetot2() { OgrenciMetot1("Tutku", "ÇAKIR"); } }
class Program { static void Main(string[] args) { Matematik mat = new Matematik(); YenidenIslemYap: //goto için label mat.MenuHazirla(); int kullaniciSecim = int.Parse(Console.ReadLine()); Console.WriteLine("Lütfen 1. sayıyı giriniz:"); decimal kullaniciSayi1= decimal.Parse(Console.ReadLine()); Console.WriteLine("Lütfen 2. sayıyı giriniz:"); decimal kullaniciSayi2 = decimal.Parse(Console.ReadLine()); switch (kullaniciSecim) { case 1: Console.WriteLine("Toplama İşleminin Sonucu: {0}", mat.ToplamaIslemi(kullaniciSayi1, kullaniciSayi2)); break; case 2: Console.WriteLine("Çıkartma İşleminin Sonucu: {0}", mat.CikartmaIslemi(kullaniciSayi1, kullaniciSayi2)); break; case 3: Console.WriteLine("Çarpma İşleminin Sonucu: {0}", mat.CarpmaIslemi(kullaniciSayi1, kullaniciSayi2)); break; case 4: Console.WriteLine("Bolme İşleminin Sonucu: {0}", mat.BolmeIslemi(kullaniciSayi1, kullaniciSayi2)); break; default: Console.WriteLine("Girilen değere karşılık işlem bulunamadı..."); Console.WriteLine("Lütfen yeniden deneyiniz..."); System.Threading.Thread.Sleep(2000); goto YenidenIslemYap; } Console.WriteLine("\n\n\nÇıkmak için entera basınız..."); Console.ReadLine(); } } public class Matematik { public decimal ToplamaIslemi(decimal sayi1, decimal sayi2) { return sayi1 + sayi2; } public decimal CikartmaIslemi(decimal sayi1, decimal sayi2) { return sayi1 - sayi2; } public decimal BolmeIslemi(decimal sayi1, decimal sayi2) { return sayi1 / sayi2; } public decimal CarpmaIslemi(decimal sayi1, decimal sayi2) { return sayi1 * sayi2; } public void MenuHazirla() { Console.Clear(); Console.WriteLine("***Menu***"); Console.WriteLine("1-TOPLAMA"); Console.WriteLine("2-ÇIKARTMA"); Console.WriteLine("3-ÇARPMA"); Console.WriteLine("4-BOLME"); Console.WriteLine("Lütfen değer seçiniz : "); } }
Bir metoda bazı durumlarda gelen parametre için varsayılan değer belirtebiliriz:
public decimal CarpmaIslemi(decimal sayi1, decimal sayi2=15)
Varsayılan değer atamalarını parametrelerin sonuna almalıyız.
Ref ve Out kullanımı
class Program { static void Main(string[] args) { /* *ref ve out önceki .net framework versiyonlarında 1 fark vardı * framework versiyonu 7.0 olanlar bu farktan etkilenmeyecek */ int sayi1 = 0; degerAta(ref sayi1); Console.WriteLine(sayi1); Console.ReadLine(); } static void degerAta(ref int gelenDeger) { gelenDeger = 10; } } //sayi1 ekrana 10 değerini basar... class Program { static void Main(string[] args) { /* *ref ve out önceki .net framework versiyonlarında 1 fark vardı // out kullanırken eski versiyonda değişkene bir sayı bildirmek gerekirdi * framework versiyonu 7.0 olanlar bu farktan etkilenmeyecek */ int sayi1; // eski versiyonda int sayi1=0; belirtilmeliydi. degerAta(out sayi1); Console.WriteLine(sayi1); Console.ReadLine(); } static void degerAta(out int gelenDeger) { gelenDeger = 10; } }
Params kullanımı
class Program { static void Main(string[] args) { Topla(5, 9, 20, 45, 22, 12, 11, 56); // alınan int değerleri parametredeki diziye atanır Console.ReadLine(); } static void Topla(params int[] sayilar) { int toplam = 0; for(int i =0; i < sayilar.Length; i++) { toplam += sayilar[i]; } Console.WriteLine("Toplam: {0}", toplam); } }
Metotlara aşırı yüklenme
class Program { static void Main(string[] args) { //metotlar aynı isimde ve aynı parametre miktarı istiyorsa int, decimal, string ile farklı kullanımları varsa bunları kullanarak metotlara aşırı yüklenebiliriz. //decimal toplam = topla(12M, 45M); //EkrandaGoster(toplam); EkrandaGoster(topla(12, 33)); } static void EkrandaGoster(object o) { Console.WriteLine(o.ToString()); } static int topla(int sayi1, int sayi2) { int toplam = sayi1 + sayi2; return toplam; } static decimal topla(decimal sayi1, decimal sayi2) { decimal toplam = sayi1 + sayi2; return toplam; } static string topla(string metin1, string metin2) { return metin1 + " " + metin2; } }
LocalFunctions
class Program { static void Main(string[] args) { LocalFunctionKullanimi(12, 22); } //bu özellik .net 7.0 ile gelmiştir. Öncekilerde bu özellik yoktur. static void LocalFunctionKullanimi(int sayi1, int sayi2) { //int topla metoduna dikkat! sadece metodun içinden erişilebilir. int topla(int gelensayi1, int gelensayi2) { return gelensayi1 + gelensayi2; } int toplamDeger = topla(sayi1, sayi2); Console.WriteLine(toplamDeger); } }
Bir cevap yazın