C# System İsim Alanı,Temel Tür Yapıları,Kalıtım

C# System İsim Alanı,Temel Tür Yapıları,Kalıtım

System İsim Alanı

  • .NET sınıf kütüphanesinde yer alan System isim alanı içersinde oldukça kullanışlı bazı sınıflar bulunmaktadır.
  • Bunlardan System.Array, System.Random, System.Convert ve System.GC ’den daha önce bahsedilmişti.
  • Diğer önemli sınıflar şunlardır:
  • System.Math, .NET sınıf kitaplığında bazı temel matematiksel işlemleri yapmak için static metotlar ve bazı özellikler içeren sınıftır.
  • Static tanımlı metotlar içerdiğinden nesne tanımlamaya gerek kalmadan Math.MetotAdı(parametreler) şeklinde erişilip kullanılabilir.
     
  • System isim alanı içersinde yer alan temel veri tiplerinin sahip olduğu bazı metotlar da zaman zaman kullanılmaktadır.
  • Tip.Parse(); : string biçimindeki verileri tip türüne çevirir.
  • Nesne.CompareTo(object o); : metodu çağrılan nesne ile o nesnesini karşılaştırır. D e ğerler eşit ise 0, nesne değeri küçük ise negatif, büyük ise pozitif değer döndürür.  Nesne.Equals(object o); : metodu çağrılan nesne ile o nesnesini karşılaştırır. Eşit ise true aksi halde false döndürür.
  • Nesne.ToString(); : nesne değerini string şeklinde geri döndürür.
  • Double ve float değerler için bir önceki anlatılan metotlara ek olarak aşağıdaki metotlar da bulunur. Bu metotlar true/false yani boolean geri dönüş değerine sahiptir:
  • IsInfinity: Sayının sonsuzu temsil edip etmediğini kontrol eder.
  • IsNaN: Anlamlı bir sayı olup olmadığını kontrol eder.
  • IsPositiveInfinitiy, IsNegativeInfinity: Sayının + ya da - sonsuz olup olmadığını kontrol eder.

Temel Tür Yapıları​

Tamsayı Tipindeki Yapılar

  • using System;
  • class class1 {
  • public static void Main() {
  • string a="25";
  • int b=Int32.Parse(a);
  • Console.WriteLine(UInt64.MaxValue);
  • Console.WriteLine(UInt64.MinValue);
  • Console.WriteLine(b)
  • }
  • }

​Boolean Tipinde Yapılar

Boolean veri yapısında iki tane özellik vardır. Bunlar FalseString ve TrueString’dir. Bu özelliklerde String türündendir, false ve true yazılarını içerirler. CompereTo(), Equals(), Parse() ve ToString() boolean yapısında bulunan diğer metotlardır. Kendisine has bir metodu yoktur.

 

DateTime ve TimeSpan

  • C# dilinde tarih ve saat işlemleri System isim alanında bulunan DateTime ve TimeSpan yapıları ile gerçekleştirilir.
  • DateTime yıl, ay, gün, saat, dakika, saniye gibi bilgileri tutan bir yapıdır.
  • TimeSpan ise iki zaman bilgisi arasındaki farkı temsil etmek için kullanılır.

DateTime​

  • using System;
  • class zaman {
  • public static void Main() {
  • DateTime tarihsaat=new DateTime();
  •  tarihsaat=DateTime.Now;
  • Console.WriteLine(tarihsaat);
  • DateTime tarih=new DateTime();
  • tarih=DateTime.Today;
  • Console.WriteLine(tarih); }
  • }

DateTime ve TimeSpan

  • TimeSpan ve DateTime yapıları ile tanımlanmış bazı operatörler bulunur.
  •  İki tarih arasındaki farkı bulmak için çıkarma(‐), ileriki bir tarihi hesaplamak için toplama(+), iki tarih arasında büyüklük küçüklük karşılaştırması yapmak için de “” operatörleri aşırı yüklenmiştir.

System.BitConverter

  • Alt seviye programlama da veriler byte dizisi şeklinde yani bitsel olarak işlenir.
  • .NET içersinde de bite çevirmek amacıyla BitConverter sınıfı bulunur.
  • Bu sınıfın IsLittleEndian isimli bir özelliği bulunur. Bu özellik işlemci mimarisine göre verileri bellekte depolarken hangi sıralamada yerleştirildiğini kontrol eder.
  •  En önemli metodu da GetBytes’tır. Amacı da farklı sayı türlerini byte dizisine çevirmektir.
  • ​Mimarinizi öğrenmek için;
  • using System;
  • class bitconverter
  • { public static void Main()
  •  {
  • if(BitConverter.IsLittleEndian)
  • Console.WriteLine("sisteminiz düşük mimariyi destekliyor en anlamlı bit sonda");
  •  else
  • Console.WriteLine("sisteminiz yüksek mimariyi destekliyor en anlamlı bit başta");
  •    }
  •  }

Nesne Yönelimli Programlama

  • ​​Modern dillerin bir çoğunda nesneye yönelimli programlama tekniği desteklenmektedir. Bu teknik yazılım geliştirmeyi kısaltan ve sistematik hale getiren bir yapıdır
  • C# dili de bu tekniği tamamıyla desteklemektedir. Nesne yönelim tekniği, gerçek hayatı programlar için simule edecek yöntemlerin birleşimidir.
  • Bu teknikte geliştirilmek istenen sistem parçalara ayrılır ve bu parçalar arasında ilişkiler kurulur. Parçalar hiyerarşik ya da bağımsız olabilir.
  • Bağımsız bileşenler birbirleriyle haberleşerek etkileşimde bulunurlar.
  • Nesne yönelimli programlama kavramlarından bazıları şunlardır:
  • Nesne yönelimli programlama tekniğinin en temel bileşeni nesnelerdir. Nesneler içeriklerinde veriler barındırırlar. Veriler arası ilişkiler sağlayan fonksiyonlara da sahiptirler. Nesnelerin veri ve fonksiyon gibi bileşenleri içermesine sarmalama (encapsulation) denilir.
  • Nesne içindeki veriler ve fonksiyonlar nesnenin dışarıya nasıl hizmet verdiğini belirler. Fakat bu hizmeti nasıl verdiği belli değildir. Nesnenin hizmetlerinden faydalanmak için nesnenin dış dünyadan erişilen ara yüzünün bilinmesi yeterlidir. Buna bilgi saklama (information hiding) adı verilir.
  • Nesnelerin birbirlerinden bağımsız olmasına rağmen aralarında haberleşebilirler. Hangi nesnenin hangi nesneye mesaj göndereceği, hangi nesnelerin fonksiyonlarının kullanılacağı derleme aşamasında belli olmayabilir. Bu durumda geç bağlama (late binding) mekanizmasından faydalanılır.
  • Tüm nesneler birer sınıf örneğidir. Sınıflar nesnelerin özelliklerini belirlerler. Nesneler derleme ya da çalışma anında oluşturulabilir.
  • Kalıtım ile nesneler birbirinden türetilebilir. Türeyen sınıf diğer sınıfın tüm özelliklerini ve kendine has özellikleri içerebilir. Kalıtım yolu ile türetilmiş sınıflar ile hiyerarşik sınıf organizasyonu gerçekleştirilebilir.
  • Nesneye yönelimli programlama tekniğinde nesneler çok biçimli olabilir. Çok biçimlilik (polymorphism) kavramı türeme ile alakalıdır ve anlamı bir nesnenin farklı şekillerde davranabilmesidir.

Kalıtım (Inheritance)​

  • Kalıtım nesne yönelimli programlama tekniğinin en önemli özelliğidir. Kalıtım yolu ile sınıflar birbirinden türetilir.
  • Türeyen sınıflar türedikleri sınıfın özelliklerini kalıtım yoluyla devralırlar ve kendisi de yeni özellikler tanımlayabilir.
  • Türetme ile sınıflar arasında hiyerarşik bir yapı kurulabilir.
  • Örnek vermek gerekirse dünya üzerinde yaşayan canlıları sınıflandırmak mümkün. Bu sınıflardan bir tanesi de hayvanlar olabilir. Kedi, Köpek, Kuş, Balık gibi bir çok hayvan türünden bahsedilebilir. Her türün kendine ait değişik özellikleri olabilir. Dolayısıyla her biri için değişik sınıfların tasarlanması gerekebilir.
  • Fakat ortak bir takım özelliklerinin olması da kaçınılmazdır ve her biri için bağımsız sınıflar tasarlandığında bu benzerlikler her birisi için tekrarlanmak durumunda kalacaktır . Bu yüzden önce tüm hayvanlar için bir sınıf oluşturulup diğer kedi, köpek gibi sınıflar bu sınıfın devamı gibi tasarlanabilir. İşte temelde bir sınıf tanımlanıp diğer sınıfları bu sınıftan türeterek özelleştirmeye kalıtım yoluyla türetme adı verilir.
  • Tip güvenliği olan dillerde farklı türdeki nesnelerin birbirine atanması istisna durumlar dışında yasaktır.
  • Bu istisna durumlardan biri de türemiş sınıfın referansının temel sınıfa ilişkin bir referansa atanabilmesidir.
  • Bu durumda temel sınıf türeyen sınıfın tüm özelliklerine erişemeyecek olmasına rağmen atama işlemi yapılabilmektedir.
  • Örneğin:
  • Bir Hayvan sınıfı oluşturulsun; her hayvanın boy, ağırlık gibi fiziksel özellikleri olsun. Ardından bu sınıftan bir Kedi sınıfı tanımlayalım. Hayvan sınıfında boy ve ağırlığı gösteren OzellikGoster() isimli bir metot olsun. Kedi sınıfında da hayvanın kedi olduğunu gösteren string tipinde özel bir değişken tanımlı olsun.
  • Kalıtım yolu ile public ve protected elemanlar aktarılır. Diğer sınıfların kullanımına kapalı ancak türetme ile türemiş sınıfa geçebilen özellikler protected anahtar sözcüğü kullanılır.
  • Eğer türetme söz konusu değilse protected olarak bilinen elemanlarla private olanlar arasında bir fark olmayacaktır.
  • private özelliklere türetilen sınıflardan erişilemez.  protected özellikler ise türeyen sınıfa private olarak geçer.
  • C#'ta yapıcı metotların türetimiyle ilgili şu kurallar geçerlidir:
  • C#'ta yapıcı metotlar fiziksel olarak türetilmez.
  • Türemiş sınıf türünden bir nesne yaratıldığında önce ana sınıfın parametre almayan yapıcı metodu, ardından türemiş sınıftaki imzaya uyan yapıcı metot çalıştırılır.
  • Türemiş sınıf türünden nesne yaratımında daima türemiş sınıfın imzaya uyan bir yapıcı metodu olması gerekir
  • Türemiş sınıf türünden nesne yaratımlarında, ana sınıfın parametre almayan yapıcı metodu yavru sınıfın üye elemanlarıyla işlem yapar
  • Türemiş sınıf türünden nesne yaratımında, Türemiş sınıftaki ilgili yapıcı metoda base takısı eklenmişse ana sınıfın parametre almayan yapıcı metodu çalıştırılmaz.

  • ​base anahtar sözcüğü
  • Yapıcı metotlar aşırı yüklenmişse türemiş sınıfın yapıcı metotları çağrılırken belli değerlerle temel sınıfında yapıcı metodunun çağrılması mümkündür ve bu işlem base anahtar sözcüğü ile yapılır.
  • base anahtar sözcüğü yalnızca yapıcı metotlarla kullanılabilir. Yani base anahtar sözcüğünü yalnızca türemiş sınıftaki yapıcı metoda ekleyebiliriz ve base anahtar sözcüğünün ana sınıfta var olan bir yapıcı metodu belirtmesi gerekir.
  • Public T(string s, int x, int z): base (int x, int z)

Çoklu kalıtım (türetme)

  • Sınıflar, ard arda türetilebilir. Yani örneğin B sınıfı A sınıfında türetilip C sınıfı da B sınıfından türetilebilir.
  • Bu durumda C sınıfı türünden bir nesne yarattığımızda eğer C sınıfının ilgili yapıcı metoduna base takısını eklememişsek önce A, sonra B, sonra da C sınıfının yapıcı metotları çalıştırılır. Yani gidişat temel sınıftan türemiş sınıfa doğrudur.
  • C sınıfı hem A'nın hem de B'nin bütün üye elemanlarına sahip olur. Örnek:
  •  using System;
  • class A {
  • public A()
  • { Console.WriteLine("A sınıfı"); } }
  • class B:A {
  • public B() { Console.WriteLine("B sınıfı"); } }
  • class C:B public C() { Console.WriteLine("C sınıfı"); }
  • static void Main() }
  • C nesne=new C(); } }

İsim Saklama (Name Hiding)

  • Türemiş sınıfta bazen temel sınıftaki üye elemanla aynı isimli bir eleman tanımlanmış olabilir. Bu durumda temel sınıftaki elemana normal yollarda erişmek mümkün değildir çünkü türeyen sınıftaki eleman temel sınıftaki elemanı gizlemiştir. Temel sınıftaki elemana erişmek için yine base anahtar sözcüğünden faydalanılır. Base ile hem özelliklere hem de metotlara erişilebilir.
  • base anahtar sözcüğünün bu şekildeki gibi kullanımı this referansına benzemektedir.
  • this referansı kendisini çağıran sınıfı temsil ederken base anahtar sözcüğü türetmenin yapıldığı temel sınıfı temsil eder.

Henüz Yorum Yapılmamış, İlk Yorumu Siz Yapın

Yorum Yollayın