<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nurullah DEMİR - The day will come just wait.. &#187; abstract sınıflar</title>
	<atom:link href="http://www.ndemir.com/tag/abstract-siniflar/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ndemir.com</link>
	<description>The day will come just wait..</description>
	<lastBuildDate>Sat, 04 Feb 2012 02:10:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>C# : Abstract (özet) Sınıflar ve Metodlar</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-abstract-ozet-siniflar-ve-metodlar</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-abstract-ozet-siniflar-ve-metodlar#comments</comments>
		<pubDate>Thu, 04 Feb 2010 13:11:34 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[abstract metod nedir]]></category>
		<category><![CDATA[abstract metod ve sınıflar nedir]]></category>
		<category><![CDATA[abstract metod ve sınıflar nerede nasil kullanilir]]></category>
		<category><![CDATA[abstract metodlar]]></category>
		<category><![CDATA[abstract sınıf nedir]]></category>
		<category><![CDATA[abstract sınıflar]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[özet metod ve sınıflar]]></category>
		<category><![CDATA[soyut metod ve sınıflar]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2010</guid>
		<description><![CDATA[Merhaba arkadaşlar, uzun zamandır doğru düzgün birşeyler yazamadım, sınav,iş derken.. Abstract metod ve sınıflar nedir, nerede nasil, neden kullanilir? Bu soruların yanıtlarını yazmaya çalışacağım inş. Abstract sınıf/metodlara, özet yada soyut sınıf/metod da denilmektedir. Bazen hiyerarşinin en tepesindeki sınıfın bizim için pek anlamı olmayabilir. En tepede bulunan sınıfın kendisinden türetilecek sınıfların neye benzeyeceğini belirtmesini isteyebiliriz. (Ben [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.ndemir.com/wp-content/uploads/c-sharp-150x150.png" alt="c sharp 150x150 C# : Abstract (özet) Sınıflar ve Metodlar dot net c sharp " width="150" height="150" title="c sharp 150x150 C# : Abstract (özet) Sınıflar ve Metodlar dot net c sharp " />Merhaba arkadaşlar, uzun zamandır doğru düzgün birşeyler yazamadım, sınav,iş derken..<br />
<span style="color: #3366ff;">Abstract </span>metod ve sınıflar nedir, nerede nasil, neden kullanilir? Bu soruların yanıtlarını yazmaya çalışacağım inş.</p>
<p><span style="color: #3366ff;">Abstract </span>sınıf/metodlara, özet yada soyut sınıf/metod da denilmektedir. Bazen hiyerarşinin en tepesindeki sınıfın bizim için pek anlamı olmayabilir. En tepede bulunan sınıfın kendisinden türetilecek sınıfların neye benzeyeceğini belirtmesini isteyebiliriz. <em>(Ben takip edenlerin daha kolay anlaması açısından Ev-Kiralikev,Satilikev düzeninden devam edeceğim) En tepede Ev sınıfımızda bulunan evGoster metodu satilik/kiralik evlerin özelliğini gösteriyor. </em>Biz Ev sınıfında tanımladığımız evGoster() metodunu çağırdığımızda ne iş yapacağını (hangi evi göstereceğini) bilemez. Eğer burada değil de türeyen sınıflarda belirtelim derseniz, o zaman türeyen sınıfların çok biçimliliği desteklediği söylenemez.</p>
<p>O zaman şöyle yapalım ; evGoster() metodunu bildirelim ancak hiçbir işlem yapmasın, yani iskeleti olsun ama gövdesi olmasın. Türeyen sınıflarda bu metod özelleştirilsin. Burada <span style="color: #3366ff;">abstract </span>araya girmektedir.</p>
<h3>Abstract Metodlar;</h3>
<p><span style="color: #3366ff;">abstract </span>anahtar kelimesi ile bildirilir ve bildirilen bu metod içsel olarak zaten sanal olduğu için ayrıca <span style="color: #3366ff;"><span style="color: #3366ff;">virtual </span><span style="color: #000000;">anahtar kelimesini kullanmaya gerek yoktur.</span></span><br />
<span id="more-2010"></span><br />
<strong>Önemli not :</strong> <span style="text-decoration: underline;">abstract metodlar sadece abstract sınıflarda bildirilebilir.</span></p>
<pre class="brush: cpp; title: ; notranslate">
        abstract public void evGoster();
</pre>
<p>Eğer biz bunu abstract değilde normal şekilde tanımlasaydık, Ev sınıfındaki evGoster() metodu çağrılabilirdi ki bu da gereksiz birşeydir, neden çağrılamadığını sınıflarda göreceğiz.</p>
<p>Gördüğünüz gibi gövdesi yok, aşağıdaki şekil tanımlarsak derleyici kabul etmeyecektir.</p>
<pre class="brush: cpp; title: ; notranslate">
        abstract public void evGoster()
        {}
</pre>
<h3>Abstract Sınıflar ;</h3>
<p>Sınıf tanımlerken sadece başına <span style="color: #3366ff;">abstract </span>anahtar kelimesini belirtmeliyiz.<br />
Abstract sınıflar tanımlanamaz, sadece kendisinden türeyen sınıflar için bir arayüz görevi görmektedir, işte bu yüzden yukarıda gereksiz diye bahsettiğim olay gerçekleşmemektedir.</p>
<pre class="brush: cpp; title: ; notranslate">
    abstract class Ev
    {
    }
</pre>
<p>Aşağıdaki kodu inceleyeyip biraz daha bilgi sahibi olabilirsiniz. Abstract sınıfın içerisinde bulunan abstract metodun nasıl kullanıldığı da gösterdim.</p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace _Abstract
{
    abstract class Ev
    {
        public string adres;
        public int alan;

        public Ev(string adres, int alan)
        {
            this.adres = adres;
            this.alan = alan;
        }
        abstract public void evGoster();
    }

    class KiralikEv : Ev
    {
        public int kira;

        public KiralikEv(string adres, int alan, int kira)
            : base(adres, alan)
        {
            this.kira = kira;
        }

        override public void evGoster()
        {
            Console.WriteLine(&quot;Evin Adresiı: {0}\nEvin Alanı: {1}\nEvin Kirası:&quot;, adres, alan, kira);
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            KiralikEv kev = new KiralikEv(&quot;Yeni mah. Eski cad. No:5&quot;, 120, 200);
            kev.evGoster();

            Console.ReadLine();
        }
    }
}
</pre>
<p><strong>Önemli Notlar:</strong></ br></p>
<li>Temel sınıfta belirttiğimiz tüm abstract metodları türeyen sınıfta devre dışı bırakmak (override anahtar kelimesini kullanıp) zorundayız, aksi takdirde derleme hatası alırız.</li>
<li>Abstract metodlar public olarak tanımlamak zorundayız, eğer tanımlamazsak private olduğu için türeyen sınıfta devre dışı bırakamayız, bu da yukarıda bahsettiğim hatayı almamıza sebep olacaktır.</li>
<li>Statik metotlar özet olarak bildirilemez.</li>
<li>Sadece metot ve sınıf değil, özellikleri de abstract olarak tanımlayabiliriz;
<pre class="brush: cpp; title: ; notranslate">
        abstract public int Ozellik
        {
            get;
            set;
        }
</pre>
<p>Aşağıda da override ediyoruz;</p>
<pre class="brush: cpp; title: ; notranslate">
  public override int Ozellik
        {
            get
            {
                //kodlarımız
            }
            set
            {
                //kodlarımız
            }
        }
</pre>
</li>
<p>Hatırlatma : türeyen sınıfta override yazdıktan sonra özelleştirebileceğimiz tüm elemanları derleyici bize gösteriyor, buradan hızlıca kurabilirsiniz, burada Equals(), ToString() gibi metodlar nereden geliyor derseniz ; en temel sınıf olan object sınıfından geliyor.</p>
<p>Birdahaki dökümanda görüşmek üzere <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Abstract (özet) Sınıflar ve Metodlar dot net c sharp " class='wp-smiley' title="icon smile C# : Abstract (özet) Sınıflar ve Metodlar dot net c sharp " /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-abstract-ozet-siniflar-ve-metodlar/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

