Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Aytaç Özay
Aytaç Özay
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
4 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Aytaç Özay
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 16.7.2003
Okunma Sayısı : 66230
Yorum Sayısı : 4     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 26.12.2024
Turhal Temizer
Mac OS/X Removing CUDA 26.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 26.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 26.12.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
C#’ta Inheritance(Miras) Kavramı
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bu yazıda inheritance’ın programlamada ne anlama geldiğinden bahsedeceğim. Inheritance aslında Oject Oriented Programming!in (Nesne Yönelimli Programlama) üç prensibinden bir tanesidir. Diğer iki prensip ise encapsulation ve polymorphism’dir. Tabii ki diğer iki prensibe bu yazıda değinmeyeceğim. En sade şekliyle: inheritance sayesinde bir sınıfın metodlarını kullanan başka sınıflar türetilebilmesine yarar diyebiliriz. Ancak ayrıntılarına birazdan ineceğim. Eğer daha önce nesne tabanlı bir programlama dili kullandıysanız, (Java ve C++ gibi) C#’ta inheritance’a çok çabuk adapte olursunuz. Aslında şu ana kadar bahsettiklerim genel kültürden ibaretti ve eminim çoğunuz da bunları biliyordunuz. (Nesne Tabanlı Programlama geçmişi olmayanları da düşünerek böyle bir giriş yaptım.)

Evet şimdi ana kısma yani programın nasıl yazılacağına geliyoruz. Bunun için basit bir örnek vereceğim. Düşünün ki student adında bir sınıfımız(class) olsun. Ayrıca bir de teacher adında bir sınıfıımız olsun. Bunların ortak özellikleri nedir? Tabii ki insan olmaları diyeceksiniz ve ana sınıfımıza yani person sınıfına ulaşmış olacaksınız. Şimdi basitçe özetlersek person sınıf’ından teacher ve student adında iki sınıf türetmiş olduk. Sırada bunun kodunu nasıl yazacağımız var. Alışkanlıklara devam edip adım adım kodu yazalım. (Bunu program yazarken de ilke edinirseniz faydalı olacağına inanıyorum. Önce ne yapacağınızı adım adım belirleyin sonra belirlediklerinizi adım adım uygulamaya geçirin.)

I.            İlk önce person sınıfını yazalım.

 
using System;

using System.Windows.Forms;

namespace Miras

{

     public abstract class Person

     //sınıfın sadece türetileceğini
     //belirtmek için sınıfı abstaract keyword’ünü kullanarak soyutladık
     //Ancak burada abstaract keyword’ünün kullanılmasındaki temel

     //faktör bu sınıfın abstract metod içermesidir.

     {

    //Türetilen sınıflarda kullanılmak üzere 3 tane değişken tanımladık.

        protected string Name;

        protected int Age;

        protected string Gender;

        //Türetilen sınıflarda metodun içi doldurulması için

        //abstract olarak makeAction metodu tanımladık

        public abstract void makeAction();

                 

        public Person()

        {

        }

     }
}

 

       

II.            Şimdi de Student sınıfını yazalım.



using System;

using System.Windows.Forms;

namespace Miras

{

    //Student class'ı Person class'ından miras aldığını belirtiyoruz.

    public class Student:Person

    {

        //Person sınıfında tanımlanan abstract metodu override ederek

        //metodun içini istediğimiz gibi doldurduk.

        public override void makeAction()

        {

            MessageBox.Show("Ben bir öğrenciyim");

        }

        public Student(string name,int age,string gender)

        {

            this.Name=name;

            this.Age = age;

            this.Gender=gender;

        }

    }

}





III.            Sıra Teacher sınıfını yazmaya geldi.

 



using System;

using System.Windows.Forms;

namespace Miras

{

    public class Teacher:Person //Teacher class'ı Person class'ından

    // miras alıyor

    {

        private string Unvan; //Teacher sınıfında kullanılmak üzere

        //Unvan adında bir değişken tanımladık.

        //Person sınıfında tanımlanan abstract metodu override ederek

        //metodun içini istediğimiz gibi doldurduk.

 

        public override void makeAction()

        {

            MessageBox.Show("Ben bir öğretmenim");

        }

 

        public Teacher(string name,int age,string gender,string unvan)

        {

            this.Name=name;

            this.Age = age;

            this.Gender=gender;

            this.Unvan=unvan;

        }

    }// teacher sınıfının sonu

 

}// Miras isim uzayının sonu




Şimdi dikkat edilmesi gereken noktaları sıralayalım:

         I.            Abstaract (soyut) sınıftan yeni bir sınıf türetilemez. Örneğimizde person sınıfı abstract sınıftır ve new anahtar sözcüğü kullanılarak yeni nesne oluşturulmaz.

        II.         Abstract metodların mutlaka içleri boş olarak yaratılır ve türetildikleri sınıflarda (en az bir sınıf türetilmek zorunda) mutlaka içleri override anahtar sözcüğü kullanılarak    doldurulur.

      III.            Bir sınıftan miras yolu ile başka bir sınıf türetileceği zaman temel sınıf(base class) illa ki abstract anahtar sözcüğü ile tanımlanmak zorunda değildir. (Eğer abstract metod     içermiyorsa.)

Not: Yukarıda kodlarını yazdığım sınıfların basit bir kullanımını içeren Miras adındaki projeyi indirmek için buraya tıklayabilirsiniz. Bu sayede kafalarda hiçbir soru işareti kalmasın istiyorum. Projeyi çalıştırdığınız zaman bir windows form’u gelecek. Bu formun üzerinde iki tane buton var.

Student Action butonunu tıklarsanız Student sınıfının içindeki makeAction metodu çalışır. Daha sonra da windows formu yaratıldıktan hemen sonra yaratılan student nesnesinin Name, Age, Gender değişkenleri bir mesaj kutusu aracılığıyla görüntülenir.

Teacher Action butonunu tıklarsanız Teacher sınıfının içindeki makeAction metodu çalışır. Daha sonra da windows formu yaratıldıktan hemen sonra yaratılan teacher nesnesinin Unvan, Name, Age, Gender değişkenleri bir mesaj kutusu aracılığıyla görüntülenir.

Kafanıza takılan sorular için mail adresim [email protected]  

Aytaç ÖZAY

Ege Üniversitesi

Bilgisayar Mühendisliği

Makale:
C#’ta Inheritance(Miras) Kavramı C#, Visual C# ve .NET Aytaç Özay
  • Yazılan Yorumlar
  • Yorum Yaz
AĞU
24
2005
Yeni bir nesne oluşturmaktan zaten bahsedilmiyor makalede, ki abstract sınıfta böyle bir şey mümkün değildir. Türetilen sınıf yerine üst sınıf terimini kullansaydım sanırım daha doğru bir tanım olacaktı.
TEM
19
2005
Abstaract (soyut) sınıftan yeni bir sınıf türetilemez yanlis bilmiyorsam zaten ornegin amaci yeni sınıf turetildigini gostermek. nesne olusturulamaz. sinif != nesne && turetmek != sınıfın_ornegini_olusturmak.
ARA
19
2003
güzel bir açıklama.
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor