﻿
{"id":264,"date":"2012-03-21T00:25:48","date_gmt":"2012-03-21T00:25:48","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=264"},"modified":"2012-05-28T13:00:10","modified_gmt":"2012-05-28T13:00:10","slug":"cta-abstract-class","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/cta-abstract-class\/","title":{"rendered":"C# Abstract Class"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bu yaz\u0131mda C#&#8217;ta Abstract s\u0131n\u0131f\u0131ndan bahsedece\u011fim.OOP \u00f6nemli kavramlar\u0131ndan birini te\u015fkil etmektedir.\u015eimdi gelin bu yap\u0131y\u0131 inceleyelim.<br \/>\n<!--more--><br \/>\n\u00d6ncelikle abstract kavram\u0131n\u0131n ve abstract s\u0131n\u0131flar\u0131n temel \u00f6zelliklerinden bahsetmek istiyorum.<\/p>\n<ul>\n<li>Bir Base Classta var olan metod ya da propertynin i\u015fleyi\u015fi,kal\u0131t\u0131m alan s\u0131n\u0131flarda ihtiyaca g\u00f6re de\u011fi\u015ftirilmesi gereken durumlarda kullan\u0131l\u0131r.<\/li>\n<li>abstract : Bu s\u0131n\u0131f i\u00e7inde abstract ile i\u015faretlenen metodlar ve propertyler bu s\u0131n\u0131ftan kal\u0131t\u0131m alan her s\u0131n\u0131fta yaz\u0131lmak ve implement(uygulanmak) zorundad\u0131rlar.<\/li>\n<li>abstract metod ya da propertylerin g\u00f6vdeleri tan\u0131mland\u0131klar\u0131 class i\u00e7inde yaz\u0131lmazlar.Sadece imza dedi\u011fimiz geri d\u00f6n\u00fc\u015f tipleri,isimleri ve eri\u015fim belirleyicileri tan\u0131mlanabilir.G\u00f6vdeleri kal\u0131t\u0131m alan s\u0131n\u0131fta override edilerek yaz\u0131l\u0131r.<\/li>\n<li>abstract elemanlar private OLAMAZLAR.<\/li>\n<li>\u0130\u00e7imde herhangi bir abstract yap\u0131 olan class\u0131n kendisi de abstract olmak zorundad\u0131r.<\/li>\n<li>abstract olan bir class\u0131n i\u00e7inde abstract olmayan yap\u0131lar da bulunabilir.<\/li>\n<li>abstract classlardan nesne yarat\u0131lamaz.<\/li>\n<\/ul>\n<p>\u015eimdi \u00f6rnek bir,&#8221;Calisma1&#8243; ad\u0131nda, abstract s\u0131n\u0131f olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Calisma1.cs---\r\n    abstract class Calisma1\r\n    {\r\n    }\r\n<\/pre>\n<p>\u015eimdide abstract s\u0131n\u0131fta ne t\u00fcr metodlar ve propertyler yaz\u0131labiliyormu\u015f g\u00f6relim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Calisma1.cs---\r\n    abstract class Calisma1\r\n    {\r\n        public void Deneme()\r\n        { }\r\n\/\/abstract olmayan metodlar yaz\u0131labilir.\r\n        public abstract void Deneme2();\r\n\/*abstract olan metodlar yaz\u0131labilir.Ancak dikkat edilmesi gereken bir nokta,\r\nabstract metodlar\u0131n scopelar\u0131 bu s\u0131n\u0131fta yaz\u0131lmamas\u0131 gerekiyor.Kal\u0131t\u0131m alaca\u011f\u0131\r\ns\u0131n\u0131fta override edilerek bu g\u00f6vdeleri olu\u015fturulacakt\u0131r.*\/\r\n        public string Deneme3 { get; set; }\r\n\/\/abstract olmayan propertyler yaz\u0131labilir.\r\n        public abstract int Deneme4 { get; set; }\r\n\/\/abstract propertyler yaz\u0131labilir.\r\n    }\r\n<\/pre>\n<p>\u015eimdi yukar\u0131da olu\u015fturdu\u011fumuz &#8220;Calisma1&#8221; s\u0131n\u0131f\u0131ndan iki kal\u0131t\u0131m alan s\u0131n\u0131f yapal\u0131m.Bunlar\u0131n adlar\u0131 &#8220;Calisma2&#8221; ve &#8220;Calisma3&#8221; olsun.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Calisma2.cs---\r\n    class Calisma2 : Calisma1\r\n    {\r\n\r\n    }\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Calisma3.cs---\r\n    class Calisma3 : Calisma1\r\n    {\r\n\r\n    }\r\n<\/pre>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz &#8220;Calisma2&#8221; ve &#8220;Calisma3&#8221; s\u0131n\u0131flar\u0131 &#8220;Calisma1&#8221; s\u0131n\u0131f\u0131ndan kal\u0131t\u0131m al\u0131yorlar.E\u011fer bu halde program\u0131 derlersek hata alaca\u011f\u0131z.Yukar\u0131daki kurallar\u0131 hat\u0131rlarsan\u0131z,abstract olarak tan\u0131ml\u0131 olan s\u0131n\u0131fta abstract ifadeler varsa e\u011fer, o s\u0131n\u0131ftan kal\u0131t\u0131m alan classlarda yaz\u0131lmak ve implement(uygulanmak) zorundad\u0131rlar.\u015eimdi \u00f6ncelikle &#8220;Calisma2&#8221; s\u0131n\u0131f\u0131nda,Base Classtaki abstract ifadeli metod ya da propertyleri implement edelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Calisma2.cs---\r\n    class Calisma2 : Calisma1\r\n    {\r\n        public override void Deneme2()\r\n        {\r\n            MessageBox.Show(&quot;Test&quot;);\r\n        }\r\n        int deger;\r\n        public override int Deneme4\r\n        {\r\n            get\r\n            {\r\n                return deger;\r\n            }\r\n            set\r\n            {\r\n                deger = value;\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi override yaparak Base Classtaki abstract ifadeli metod ve propertyleri bu s\u0131n\u0131fta tan\u0131mlad\u0131m.Bu \u015fekilde program\u0131 derledi\u011fimiz zaman,&#8221;Calisma3&#8243; s\u0131n\u0131f\u0131nda da bu \u015fekilde abstract ifadeleri implement etmedi\u011fimizden alaca\u011f\u0131z.Yani vurgulamak istedi\u011fim nokta, abstract s\u0131n\u0131f\u0131ndaki abstract ifadeler, o s\u0131n\u0131ftan kal\u0131t\u0131m alan b\u00fct\u00fcn s\u0131n\u0131flarda implement etmek zorunday\u0131z.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Calisma3.cs---\r\n    class Calisma3 : Calisma1\r\n    {\r\n        public override void Deneme2()\r\n        {\r\n            MessageBox.Show(&quot;Test&quot;);\r\n        }\r\n        int deger;\r\n        public override int Deneme4\r\n        {\r\n            get\r\n            {\r\n                return deger;\r\n            }\r\n            set\r\n            {\r\n                deger = value;\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<p>Art\u0131k &#8220;Calisma3&#8221; s\u0131n\u0131f\u0131nda da Base Class\u0131ndaki abstract ifadeler implement edildi.Bu \u015fekilde program\u0131m\u0131z\u0131 derlersek hi\u00e7 bir hatayla kar\u015f\u0131la\u015fmayaca\u011f\u0131z.<\/p>\n<hr \/>\n<p>Dikkat !!! abstract s\u0131n\u0131flardan nesne \u00fcretemiyoruz.Ama o s\u0131n\u0131ftan referans noktas\u0131 olu\u015fturabiliyoruz.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda C#&#8217;ta Abstract s\u0131n\u0131f\u0131ndan bahsedece\u011fim.OOP \u00f6nemli kavramlar\u0131ndan birini te\u015fkil etmektedir.\u015eimdi gelin bu yap\u0131y\u0131 inceleyelim.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[158],"class_list":["post-264","post","type-post","status-publish","format-standard","hentry","category-c-sharp-c","tag-abstract"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/264","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=264"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/264\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=264"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=264"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}