C# Kalıtım (Inheritance) | Miras Alma

29 August, 2019

undefined

Merhaba arkadaşlar Sizler nesne yönelimli programlamada kullandığımız bir gramer yönteminden bahsedeceğiz. Öncelikle miras alma nedir ondan bahsedelim.

Miras Alma :

nesne yönelimli programlamada bu metotlara genellikle belirli sınıflarda tanımlamış olduğumuz özellikleri defalarca kullanılmasının önüne geçmek için kullanılan bir yöntem diyebiliriz. Örneğin bir hayvanlar alemini inceleyelim. Hayvanların her birinin  elleri , ayakları vs. ortak özellikleri vardır. İşte bu ortak özellikleri tek bir sınıfta tutup bunları tekrar tekrar yazmak yerine o sınıfımızdan kalıtım yaparak işlemlerimizi kod tekrarına düşürmeden uygulayacağız.

Örnek:

class TemelTip
    {
        public int id;
        public string isim;
        public string soyisim;
    }

TemelTip adında bir sınıf oluşturduk. O sınıfımızdan kalıtım yaparak tekrardan id , isim ve soyisim değerlerini tanımlamadan kalıtım yolu ile elde edeceğiz.

class Ogrenci:TemelTip
    {
        public int Notu;
        public string Basarisi;
    }

 Birde öğretmen sınıfını oluşturalım. Ve onuda TemelTip sınıfından kalıtalım. Unutmayın sadece tek bir sınıftan kalıtım yapabilirsiniz.

class Ogretmen:TemelTip
    {
        public string Brans;
        public string AkademiKariyeri; 
    }

Main():

static void Main(string[] args)
        {
            Ogrenci ogrenci = new Ogrenci();
            ogrenci.isim = "Ertan";
            ogrenci.soyisim = "AYYILDIZ";
            ogrenci.Basarisi = "Zayıf";
        }

 

 

C# Nested Class (iç içe sınıf)

26 August, 2019

undefined

Merhaba arkadaşlar,

Bugün sizlere Nested Class(iç içe sınıf) yani bir sınıf veya yapının iç içe geçmiş türlerini inceleyeceğiz. Örneğin;

class Istanbul
{
    class GOP
    {
        GOP() { }
    }
}
class MainClass
{
    public static void Main()
    {
        Istanbul.GOP gaziOsmanPasa= new Istanbul.GOP();
    }

}

Örn2;

namespace MatT
{
    class Toplam
    {
        public Toplam()
        { }

    }
    namespace MatC
    {
        class Carpim
        {
            public Carpim()
            { }
        }

    }

}
class MainClass
{
    public static void Main()
    {
        MatT.Toplam toplam = new Mat.Toplam();
        MatT.MatC.Carpim carpim = new MatT.MatC.Carpim();
    }

}

 

 

C# Static Nedir?

25 August, 2019

undefined

Merhaba arkadaşlar,

Öncelikle statik anahtar kelimesi nedir ? ne işe yarar ? bu soruları cevaplayalım...

Static :

Static anahtar kelimesinden kısaca bahsetmek gerekirse , Herhangi bir nesnenin belleğe 1 kereliğine çıkarak kullanmamızı sağlar. Size bir örnek ile göstereyim .

 

-Öncelikle Bir rastgele bir sınıf nesnesi oluşturalım. Ve içerisini dolduralım

class Ogrenci
    {
        public static string Isim { get; set; }
        public string Soyisim { get; set; }
        public string EmailAdres { get; set; }

        public void Test1()
        {
            Console.WriteLine("Nesne örneği alındıktan sonra çalışna metot");
        }
        public static void Test2()
        {
            Console.WriteLine("Nesne örneği alınmadan kullanılabilir.");
        }
    }

-Yukarıdaki kodlarımızı incelediğimizde 2 yerde static anahtar kelimesini tanımladık.

  • public static string Isim { get; set; }
  • public static void Test2()
            {
                Console.WriteLine("Nesne örneği alınmadan kullanılabilir.");
            }

-Şimdi ana gövdemizde(Main) belleğe Ogrenci sınıfını çıkarmadan static ile tanımladığımız değerleri çağırdığımızda program hata vermeden değere ulaşıp bizim için getirecektir. Normalde belleğe cıkarmadığımız için Ogrenci sınıfın içerisindekilere ulaşamazdık , fakat static sayesinde dışarıdan kolayca erişebildik

static void Main(string[] args)
        {
            Ogrenci.Isim="Ertan";   
Ogrenci.Test2(); }

-Peki şimde belleğe çıkaralım kodlarımızı ve belleğe çıkardığımızda bizlere gelen değerlere atama işlemini yapalım.

static void Main(string[] args)
        {
            Ogrenci ogrenci = new Ogrenci();
            ogrenci.Soyisim = "AYYILDIZ";
            ogrenci.EmailAdres = "ertanayyildiz@outlook.com";
            ogrenci.Test1();
        } 

 

 

C# ile Sınıf Yapıları | C# ile Sınıf Oluşturmak | C# ile Class

25 August, 2019

undefined

Merhabalar,

Önce sizlere sınıf ve nesne kavramlarından biraz bahsedeyim.

Sınıflar(Classes) yapıları Nesne Yönelimli Programlamada(Object Oriented Programming) kullanılır.

Sınıf ve Nesne nedir ? diye sorduğumuzda öyle ezbere bir cevap vermeye gerek yok.

Şöyle düşünün;

SINIF

OOP türü yazdığımız programlarda sadece nesneler vardır. Bu nesneler, mesaj alışverişi yaparak, birbirleriyle haberleşirler.
Nesneler OOP de sınıf olarak ifade edilen şablonlardan yaratılır. Her sınıf içinde, o sınıftan üretilecek nesnelerin özelikleri, davranışları tespit edilir. Örneğin Araba isminde bir sınıf yaratabiliriz. Bu sınıftan üretilecek nesnelerin ortak yani, bir motor, 4 teker, direksiyon gibi parçalar olacaktır.

NESNE

Nesne, içinde veri ve bu veriler üzerinde işlem yapacak olan metotları(fonksiyon) bulunduran yazılım bileşenidir. Nesne bu tanıma uygun olarak, kendi işlevselliğini de içinde taşır. Nesneler her uygulamada tekrar tekrar kullanılabilir. Veri ve metotlar, birlikte nesnenin üyeleri (members) adını alır. Bir nesne yapısı, bir sınıf (class) içinde tanımlanır. Sınıf içinde nesneyi oluşturan üye değişkenler ve metotlar açıkça tanımlanır.

Metod nedir?

Metodlar bir nesnenin dis dünyaya açılan kapılarıdır. Bir nesnenin içinde ne oldugu, nesnenin nasıl çalıştığı dışarıdan görünmez. Nesnenin sahip olduğu bir iç dünyası vardır. Eğer nesne île interaksiyon (etkileşim) a girmek istiyorsak, dışa açılan kapılarından (metodlardan) birini kullanmamız gerekir. Nesnelere, sınıf içinde tanımlanmış ve her nesnenin sahip olduğu metotlar aracılığıyla mesaj gönderebiliriz. Eğer bir nesneden bir şey yapmasını bekliyorsak, metodunu kullanarak, ona bir mesaj göndeririz. Nesne bu mesajı alarak, gerekli işlemi yapar.
Metodlar nesnelerin dış dünyaya karşı davranışlarını tanımlar. Metotları, diğer programlama dillerinde kullanılan fonksiyonlar olarak düşünebiliriz. Nesneler ile sadece bu metotları kullanarak, interaksiyona girebiliriz.

Olaylar (Events) Nedir?

Olaylar, nesne yönelimli programlama ortamlarında devamlı olarak kullanılırlar. Burada en çok bilinen örnek, Button (düğme) sınıfına ait olan bir nesne için Click (tıklama) isimli eventdir. Click eventinde fareyle button nesnesinin üzerine tıklandığında ortama bir olay fırlatılır.

undefined

Şimdi artık yazdığımız kodlara geçebiliriz.

Önce projemize 1 adet sınıf ekliyoruz ve adını arabaSinifi.cs olarak değiştiriyoruz. Ardından arabaSinifi.cs sınıfımızın içine aşağıdaki kodları yazıyoruz.

using System;
using System.Collections.Generic;
using System.Text;
 
namespace sinifYapilari
{
    class arabaSinifi
    {
        private string marka;
        private string renk;
        private int yili = 0;
 
        public arabaSinifi(string m, string r, int y)
        {
            this.marka = m;
            this.renk = r;
            this.yili = y;
        }
        public void arabaBilgisiKaydet(string m, string r, int y)
        {
            this.marka = m;
            this.renk = r;
            this.yili = y;
        }
 
        public string arabaBilgisiGoster()
        {
            return  "Arabanın markası t: " + this.marka + "n" +
                    "Rengi tt: " + this.renk + "n" +
                    "Yılı tt: " + this.yili;
        }
 
    }
}
 private string marka;
 private string renk;
 private int yili = 0;


Burada sınıfımızda kullanacağımız değişkenlerimizi tanımladık. private deyimiyle bu değişkene erişimin özel yani bu sınıfın içindeki fonksiyonlar yardımıyla olacağını belirttik. Eğer bu değişkeni şu şekilde tanımlamış olsaydık:

 public string isim;

burada arabaSifi adlı sınıftan yeni bir nesne türettiğinizde varsayılan olarak bu arabanın model, renk ve yıl bilgileri yer alıyor. Şöyle :
arabaSinifi arabam = new arabaSinifi("Audi A5","Siyah",2013);
Bu sınıftan bir araba türetiyorsanız bu 3 bilgiyi girmek zorundasınız. Peki her sınıfta yapıcı(constructor) bulunmak zorunda mı? Bence hayır. Ama biz koyduk. Eğer sınıfınızda böyle bir zorunluluk istemiyorsanız bunu kullanmanıza gerek yok. Eğer bunu kullanmazsak ana formda bu sınıftan bir nesne türetmek istersek şu şekilde tanımlama yapacağız:
arabaSinifi arabam = new arabaSinifi();

 public void arabaBilgisiKaydet(string m, string r, int y)
        {
            this.marka = m;
            this.renk = r;
            this.yili = y;
        }

Bu fonksiyonda ise, parametre olarak göndermiş olduğumuz değerleri az önce tanımlamış olduğumuz değişkenlere atama işlemi yapılıyor.

public string arabaBilgisiGoster()
        {
            return  "Arabanın markası t: " + this.marka + "n" +
                    "Rengi tt: " + this.renk + "n" +
                    "Yılı tt: " + this.yili;
        }

Burada ise araba bilgileri gösteriliyor. return ile değişkenlerin içindeki değerleri gönderiyoruz.

 

Tags : OOP Nedir , C# ile sınıf yapıları , C# ile sınıf oluşturmak , C# ile Class , Nesne nedir , Constructor , OOP Mantığı , Metod , Olaylar(Events nedir ?

C# 7.0 Local Function

23 August, 2019

undefined

Merhaba arkadaşlar bugün sizlere local function kullanımına değineceğiz kısaca bahsetmek gerekirse .net framework 7.0 ile beraber bize sunulmaya ve kullanılmaya başlamıştır. Fonksiyon içerisinde tanımlanan ve yalnızca bulundu fonksiyona bağlı olan ve kullanılan metotlardır.

using System;

namespace LocalFunctions
{
    class Program
    {
        static void Main(string[] args)
        {
            localFunctionKullanimi(29, 61);
        }
        static void localFunctionKullanimi(int sayi1,int sayi2)
        {
            int topla(int gelenSayi, int gelenSayi2)
            {
                return gelenSayi + gelenSayi2;
            }

            int toplamDeger = topla(sayi1 + sayi2);

            Console.WriteLine(toplamDeger);
        }
    }
}

Home ← Older posts