<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title>Ufuk YAYLA - Blog</title><description>Ufuk YAYLA&apos;nın Karalama Defteri, Bir nevi Blog</description><link>http://www.ufukyayla.com</link><lastBuildDate>Fri, 17 Aug 2006 16:59:33 +0200</lastBuildDate><pubDate>Fri, 17 Aug 2006 16:59:33 +0200</pubDate><language>tr</language><copyright>Copyright 2003-2010 Ufuk YAYLA</copyright><generator>UfukSZP.net - RSS Motoru</generator><image><title>Ufuk YAYLA - Blog</title><url>http://www.ufukyayla.com/xml/rss.gif</url><link>http://www.ufukyayla.com/defter/giris.aspx</link></image><item><title>Foruma üye girince oluşan hata</title><description><![CDATA[&#220;yeler foruma girip bir b&#246;l&#252;me tıkladıklarında aşağıda verilen hata oluşuyor.<br/><br/><font color='red'>Hata:</font><br/>ADODB.Recordset (0x800A0BB9)<br/>Yanlış t&#252;rdeki değişkenler kabul edilebilir aralık dışında veya bir başkasıyla &#231;akışan bağımsız değişkenler kullanılıyor.<br/>E:\SERVER\UFUKSZP31\FORUM\../forum/0forum.asp, line 34<br/><br/><font color='red'>&#199;&#246;z&#252;m&#252;:</font><br/><font style='font-weight: bold'>forum/soru.asp</font> dosyasında 10. satırda bulunan;<br/><br/>BolumYoneticisi=BolumunYoneticisiMi(BNo)<br/><br/>kodunu;<br/><br/>19. satıdaki VtBagla komutunun bir altına yeni bir satır a&#231;ın ve oraya taşıyın.]]></description><link>http://www.ufukyayla.com/defter/yorum.aspx?bno=7&amp;kno=144&amp;sk=1&amp;sy=1</link><pubDate>Fri, 17 Aug 2006 16:59:33 +0200</pubDate><author>ufukyayla</author><guid>http://www.ufukyayla.com/defter/yorum.aspx?bno=7&amp;kno=144</guid></item><item><title>Taşındık</title><description><![CDATA[Yeni yepyeni s&#252;per blog projemiz tamamlandı. Taşındık. Aşağıdaki adresten yayınlayacağız. Buraya artık yorum yazamazsınız. Yeni adrese l&#252;tfen.<br/><br/><a href='http://www.findikkabugu.net' target='_blank'>http://www.findikkabugu.net</a>]]></description><link>http://www.ufukyayla.com/defter/yorum.aspx?bno=6&amp;kno=143&amp;sk=1&amp;sy=1</link><pubDate>Thu, 01 Mar 2006 11:39:58 +0200</pubDate><author>ufukyayla</author><guid>http://www.ufukyayla.com/defter/yorum.aspx?bno=6&amp;kno=143</guid></item><item><title>SoulTips Gibi Birşey</title><description><![CDATA[Ferruh MAVİTUNA'nın sitesinde g&#246;r&#252;p imrendiğim soultips'e benzer bir script yazayım dedim. Olmuşken IE, FireFox, Opera vs. uyumlu olsun dedim. Oldu. &#214;rnek ve kaynak kodu i&#231;in aşağıdaki linke tıklayın;<br/><br/><a href='http://www.ufukyayla.com/sair/tip/index.htm' target='_blank'>http://www.ufukyayla.com/sair/tip/index.htm</a><br/><br/><br/>Teşekk&#252;rler Ferruh Hocam;<br/><a href='http://ferruh.mavituna.com/' target='_blank'>http://ferruh.mavituna.com/</a>]]></description><link>http://www.ufukyayla.com/defter/yorum.aspx?bno=2&amp;kno=142&amp;sk=1&amp;sy=1</link><pubDate>Thu, 15 Feb 2006 16:46:07 +0200</pubDate><author>ufukyayla</author><guid>http://www.ufukyayla.com/defter/yorum.aspx?bno=2&amp;kno=142</guid></item><item><title>Ya Nasip</title><description><![CDATA[Konyalı iki gen&#231; filmlere dublaj yapıyor. İyi iş &#231;ıkarmışlar. Sitelerinin adresi aşağıda. Dublajlarını buradan seyredebilirsiniz.<br/><br/><a href='http://www.aktuelnet.net/ana.html' target='_blank'>http://www.aktuelnet.net/ana.html</a><br/><br/>&#214;zellikle son yaptıkları dublaj olan <font style='font-weight: bold'>Ya Nasip</font> m&#252;thiş olmuş;<br/><br/>İnsan v&#252;cuduna şu &#252;&#231; şey sirayet ederse sıkıntı olur;<br/><br/>1. G&#246;z<br/>2. Gez<br/>3. Arpacık<br/><br/>Bunlardan sakınmak gerekir.]]></description><link>http://www.ufukyayla.com/defter/yorum.aspx?bno=1&amp;kno=141&amp;sk=1&amp;sy=1</link><pubDate>Tue, 23 Jan 2006 13:12:22 +0200</pubDate><author>ufukyayla</author><guid>http://www.ufukyayla.com/defter/yorum.aspx?bno=1&amp;kno=141</guid></item><item><title>Ulan Ubuntu</title><description><![CDATA[Uzun zamandır vir&#252;st&#252;, trojandı derken bilgisayar kullanmanın tadı iyice ka&#231;tığından MS olmayan işletim sistemlerine merak saldım. FreeBSD ile iyi tecr&#252;belerim oldu. Ancak Linuxu da bir se&#231;enek olarak değerlendirmek lazım diyerek, araştırmaya başlamıştım. Neticede Debiana karar verdim ama 7-8 CD'yi download etmek benim sınırlı ADSL'me ağır geleceğinden, yine Debian tabanlı ama tek CD olan Ubuntuya karar kıldım. Ubuntu g&#252;zel bi dağıtım. Basit ve kullanıştı. Ayrıca OpenOffice 2 ile beraber geliyor ve T&#252;rk&#231;e. <br/><br/>Fakat nedense benim faremi tanımamakta inat etti. Altı ucu optik, 2 tuşlu, ortasında kaydırma tekerli, PS/2 fare. B&#246;yle tarif edince siz bile tanıdız değil mi? Ama Ubuntu tanımadı. Virtual PC i&#231;ine kurunca tanıyor. Ama ger&#231;ek makinede tanımıyor. Zaten Ubuntunun ve Pardusun &#231;alışan CDleride tanımamıştı faremi. Fareyi mi değiştirsen yoksa Linux dağıtımını mı?]]></description><link>http://www.ufukyayla.com/defter/yorum.aspx?bno=1&amp;kno=139&amp;sk=1&amp;sy=1</link><pubDate>Mon, 22 Jan 2006 00:54:11 +0200</pubDate><author>ufukyayla</author><guid>http://www.ufukyayla.com/defter/yorum.aspx?bno=1&amp;kno=139</guid></item><item><title>El Yapımı Projeksiyon</title><description><![CDATA[Elektronikle uğraştığım zamanlar şu bildiğiniz saatlerden &#231;ıkan LCDlerin g&#246;r&#252;nt&#252;s&#252;n&#252; duvara aktarmaya uğraşmıştırm. Kuvvetli bir lamba ve bir mercekle pekala oluyordu. Ama bu d&#252;zeneği LCD bilgisayar monit&#246;r&#252;ne veya LCD televizyona uygulamak hi&#231; aklıma gelmemişti. Birilerinin aklına gelmiş ve &#231;ok g&#252;zel işler &#231;ıkarmışlar. Bi gezin derim.<br/><br/><a href='http://www.elyapimiprojeksiyon.com/' target='_blank'>http://www.elyapimiprojeksiyon.com/</a>]]></description><link>http://www.ufukyayla.com/defter/yorum.aspx?bno=2&amp;kno=138&amp;sk=1&amp;sy=1</link><pubDate>Mon, 22 Jan 2006 00:44:13 +0200</pubDate><author>ufukyayla</author><guid>http://www.ufukyayla.com/defter/yorum.aspx?bno=2&amp;kno=138</guid></item><item><title>Ne İstiyor Bu Üyeler</title><description><![CDATA[Bu siteye insanlar neden &#252;ye olur ki? &#220;ye olmadan da işbu Karalama defterimi okuyabilir, yorumlayabilir, dosyaları mı indirebilirler. &#220;ye olanlara sağlanan başka ne var ki? Sadece site i&#231;i iletiler ve foruma yazabilme hakkı. sanırım bu bir şartlanma meselesi, ş&#246;yle ki; İndir kısmında birşeyler almak isteyenler &#252;ye olmaları gerektiğini sanıyorlar.<br/><br/>Neticede; &#252;ye olmayın kardeşim, ne gerek var?]]></description><link>http://www.ufukyayla.com/defter/yorum.aspx?bno=1&amp;kno=131&amp;sk=1&amp;sy=1</link><pubDate>Sat, 09 Dec 2005 22:52:44 +0200</pubDate><author>ufukyayla</author><guid>http://www.ufukyayla.com/defter/yorum.aspx?bno=1&amp;kno=131</guid></item><item><title>Sınıflarda Kalıtım (Inheritance) Kavramı</title><description><![CDATA[<font color='blue'>ASP.net</font> <font color='green'>miras, taban sınıf, t&#252;remiş sınıf, inherit, inheritance, base class, derived class</font><br/><br/>.NET &#231;atısı altında OOP&#180;un asıl amacı kodun bir kez yazıldıktan sonra sınıf haline getirilerek bir aduzayı hiyerarşisi i&#231;inde tasnif edilmesi ve gerektiğinde nesne t&#252;retilerek tekrar tekrar kullanılabilmesini sağlamaktır. Ancak, mevcut sınıfın yordam ve &#246;zellikleri yetersiz ise bu sınıftan sadece nesne t&#252;retebiliyor olması yeterli olamaz. Eğer b&#252;t&#252;n sınıfların kodu a&#231;ık olsaydı kod &#252;zerinde istediğimiz değişiklikleri yapabilir ve sınıfları geliştirebilirdik. B&#246;yle bir imkan olmadığından, bu duruma iyi bir &#231;&#246;z&#252;m bulmak adına Inheritance yapısı geliştirilmiştir. Bu yapı ile bir sınıfın yordam ve &#246;zelliklerini miras alan, geliştiren ve/veya değiştiren yeni bir sınıf yazmak m&#252;mk&#252;nd&#252;r. <br/><br/>Eğer karmaşık matematik işlemleri yapan bir sınıf yazmak istiyorsanız temel matematik işlemleri i&#231;in gerekli kodları tekrar yazmak yerine zaten bu işleri yapan bir sınıftan yeni yazacağınız sınıfa gerekli yordam ve &#246;zellikleri miras yoluyla alabilirsiniz.<br/>Burada kaynak olan, kendisinin yordam ve &#246;zeliklerini alacağımız sınıfa taban sınıf (base class) denir. &#214;zellikleri edinen yeni sınıfa ise t&#252;remiş sınıf (derived class) denir. Aslında t&#252;remiş sınıf yerine mirascı sınıf denmesi -t&#252;retme- fiilinin nesne t&#252;retme i&#231;inde kullanılıyor olması sebebiyle karışıklık olmaması i&#231;in daha doğru olmaktadır. Taban sınıftan t&#252;remiş sınıfa miras olarak alınan bazı yordamları ve/veya &#246;zellikleri beğenmediğimizde bunların yerine yenilerini yazabiliriz. Buna ezmek (overriding) denir.<br/><br/>Frank DERFLER&#180;in 95&#180;lerde okuduğum ağlar (network) hakkındaki bir kitabının b&#246;l&#252;m aralarındaki teknik hikayeleri severdim. Bu hikayeler konunun anlaşılmasını kolaylaştırıyordu. Hikaye anlatacak değilim ama konuya en azından bir &#246;rnek verebilirim.<br/><br/>Marangoz (Mustafa Ustamı rahmetle anıyorum) ustasının &#231;ırağına neyi nasıl yapacağını &#246;ğretmesi en iyi mirasıdır. Yani usta-&#231;ırak ilişkisi ile &#246;ğrenmede miras yoluyla ge&#231;iş s&#246;zkonusudur. &#199;ırak ustasından yol-yordam (method), &#246;ğrenir, alet kullanama becerisini alır. Ancak temel bilgileri sabit kalarak, yeni aletler ve zamana g&#246;re zevklerin değişmesi ile &#231;ırak, ustasından &#246;ğrendiği bazı us&#252;llerin yerine yenilerini geliştirebilir. Burada miras yoluyla ge&#231;işe Inheritance, alınan bazı yordamların ihtiyaca g&#246;re değiştirilmesine Overriding denir.<br/><br/>Konuyu derinleştirmeden &#246;nce &#252;&#231; ayrı sınıf t&#252;r&#252;n&#252;n &#246;zelliklerine kısaca değinmek yerinde olacaktır.<br/><br/><font style='font-weight: bold'>Arabirim Sınıflar (Interface Class)</font><br/><font style='font-style: italic'>Miras alınabilir, taban sınıf olabilir, nesne t&#252;retilebilir</font><br/><br/>Bu sınıflardan hem nesne t&#252;retmek m&#252;mk&#252;nd&#252;r, hemde bu sınıflar başka sınıfların yazılmasında miras alınabilir, yani taban sınıf olabilirler. <br/><br/><font color='green'>Public Class TemelMatematik<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Function KareAl(piX As Integer) As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return piX * piX<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Function<br/>End Class</font><br/><br/>TemelMatematik sınıfını miras alma<br/><font color='green'>Public Class IleriMatematik<br/>&nbsp;&nbsp;&nbsp;&nbsp;Inherits TemelMatematik<br/>End Class</font><br/><br/>TemelMatematik sınıfından nesne t&#252;retme<br/><font color='green'>Public Class Matematik<br/>&nbsp;&nbsp;&nbsp;&nbsp;Dim T As New TemelMatematik()<br/>End Class</font><br/><br/><font style='font-weight: bold'>Somut Sınıflar (Concrete Class)</font><br/><font style='font-style: italic'>NotInheritable: Miras alınamaz, taban sınıf olamaz, sadece nesne t&#252;retilebilir</font><br/><br/>Bazı sınıflar sadece nesne t&#252;retilerek kullanılması amacıyla yazılırlar. Yazılırken bu sınıfın olgun olduğu ve miras alınarak geliştirilmesinin gerekmeyeceği d&#252;ş&#252;n&#252;l&#252;r. Bu sınıflar başka sınıflara taban sınıf olamaz. <font color='green'>NotInheritable</font> anahtar kelimesi ile tanımlanırlar.<br/><br/><font color='green'>Public Class IleriMatematik<br/>&nbsp;&nbsp;&nbsp;&nbsp;Inherits TemelMatematik<br/>End Class</font><br/><br/>Yukarıda <font style='font-weight: bold'>Arabirim Sınıflar</font>&#180;dan bahsederken kodunu yazdığımız arabirim sınıf t&#252;r&#252;ndeki <font color='green'>TemelMatematik</font> sınıfının yordamları ve &#246;zellikleri (ger&#231;i sadece bir tane var) <font color='green'>IleriMatematik</font> sınıfı tarafından miras alınmıştır. <br/><br/>Eğer <font color='green'>TemelMatematik</font> sınıfını aşağıdaki gibi <font color='green'>NotInheritable</font> anahtar kelimesi ile yazıp somut bir sınıf yapsaydık miras alınamazdı.<br/><br/>Bu sınıf miras alınamaz<br/><font color='green'>Public NotInheritable Class TemelMatematik<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Function KareAl(piX As Integer) As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return piX * piX<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Function<br/>End Class</font><br/><br/>Hemen &#252;stteki sınıf miras alınamaz. Aşağıdaki yazım yanlıştır.<br/><font color='green'>Inherits TemelMatematik</font><br/><br/>Ama bu sınıftan nesne t&#252;retilebilir. Aşağıdaki yazım doğrudur.<br/><font color='green'>Dim T As New TemelMatematik</font><br/><br/><font style='font-weight: bold'>Soyut Sınıflar (Abstract Class)</font><br/><font style='font-style: italic'>MustInherit: Mutlaka miras alınmalıdır, taban sınıf olur, nesne t&#252;retilemez</font><br/><br/>Bazı sınıflar en temel işlemleri barındırırlar ve kendi başlarına karmaşık işlemler yazmazlar. Bu sınıflar yazılırken mutlaka başka bir sınıf tarafından miras alınacakları ve daha gelişmiş yordamların yazılmasında yardımcı olacakları d&#252;ş&#252;n&#252;l&#252;r. Bu sınıflara <font style='font-weight: bold'>Soyut Sınıflar (Abstract Class)</font> denir. Yani bu sınıfın yegane amacı başka sınıflara taban sınıf olmaktır. Bu sınıfdan <font color='green'>New</font> kelimesi ile nesne t&#252;retilemez. <font color='green'>MustInherit</font> anahtar kelimesi ile tanımlanırlar.<br/><br/>Bu sınıf mutlaka miras alınmalıdır. Nesne t&#252;retilemez.<br/><font color='green'>Public MustInherit Class TemelMatematik<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Function KareAl(piX As Integer) As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return piX * piX<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Function<br/>End Class</font><br/><br/>Hemen &#252;stteki sınıf miras alınabilir. Aşağıdaki yazım doğrudur.<br/><font color='green'>Inherits TemelMatematik</font><br/><br/>Bu sınıftan nesne t&#252;retilemez. Aşağıdaki .<br/><font color='green'>Dim T As New TemelMatematik</font><br/><br/>----------------------------------------------------------------------<br/><br/>&#214;zetle;<br/><font style='font-weight: bold'>Arabirim (Interface) Sınıflar</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;Anahtar kelime kullanılmadan yazılan sınıflar<br/>&nbsp;&nbsp;&nbsp;&nbsp;Nesne t&#252;retilir, miras alınır.<br/><br/><font style='font-weight: bold'>Somut (Concrete) Sınıflar</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;NotInheritable anahtar kelimesi ile yazılan sınıflar<br/>&nbsp;&nbsp;&nbsp;&nbsp;Nesne t&#252;retilir, miras alınmaz.<br/><br/><font style='font-weight: bold'>Soyut (Abstract) Sınıflar</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;MustInherit anahtar kelimesi ile yazılan sınıflar<br/>&nbsp;&nbsp;&nbsp;&nbsp;Nesne t&#252;retilemez, miras alınır.<br/><br/>Bu durumda asıl konumuz olan <font style='font-weight: bold'>Sınıflarda Kalıtım (Inheritance)</font> i&#231;in ele alacağımız sınıflar <font style='font-weight: bold'>arabirim</font> ve <font style='font-weight: bold'>soyut</font> sınıflar olacaktır.<br/><br/>----------------------------------------------------------------------<br/><br/>Şimdi daha sonra yazacağımız sınıflarda miras alınmak &#252;zere bir arabirim sınıf yazalım.<br/><br/><font color='green'>Imports System<br/><br/>Namespace Matematik<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Class TabanSinif<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Function Topla(piS1 As Integer, piS2 As Integer) As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return piS1 + piS2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Function Cikar(piS1 As Integer, piS2 As Integer) As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return piS1 - piS2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Function Carp(piS1 As Integer, piS2 As Integer) As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return piS1 * piS2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Function Bol(piS1 As Integer, piS2 As Integer) As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return piS1 / piS2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Overridable Function Kare(piS1 As Integer) As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return piS1 * piS1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Class<br/>End NameSpace</font><br/><br/>Anlaşılacağı &#252;zere bu sınıfımız bazı temel matemetik işlemlerini yapıyor. Şimdi bu sınıfı taban sınıf olarak kullanan başka bir sınıf yazalım.<br/><br/><font color='green'>Imports System<br/><br/>Namespace Matematik<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Class MirasciSinif<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Imports TabanSinif<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Function Kup(piS1 As Integer) As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return piS1 ^ 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Overrides Function Kare(piS1 As Integer) As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return piS1 ^ 2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Function<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Class<br/>End NameSpace</font><br/><br/>Bu sınıf yukarıda kodunu yazdığım <font color='green'>TabanSinif</font>&#180;ı miras olarak alıyor. Şimdi bu sınıf <font color='green'>TabanSinif</font>&#180;ın b&#252;t&#252;n fonksiyonlarına sahiptir. Yani aşağıdaki yazım doğrudur;<br/><br/><font color='green'>Dim Nesne As New MirasciSinif()<br/>Nesne.Carp(3,2)</font><br/><br/>Burada <font color='green'>MirasciSinif Carp</font> fonksiyonunun kodunu taşımamaktadır ama <font color='green'>TabanSinif</font>&#180;tan miras olarak almıştır.<br/>Hatta <font color='green'>TabanSinif</font>&#180;tan miras olan fonksiyonları eksik g&#246;rd&#252;ğ&#252;m&#252;z i&#231;in birde <font color='green'>Kup</font> fonksiyonu eklenmiştir. Bu fonksiyon verilen sayının k&#252;p&#252;n&#252; alıyor.<br/><br/><br/><font color='green'>MirasciSinif</font>&#180;ın son fonksiyonu olan <font color='green'>Kare</font> ise daha ilgin&#231;tir. &#199;&#252;nk&#252; bu isimde bir fonksiyon zaten <font color='green'>TabanSinif</font>&#180;ta vardı ve miras olarak gelmişti. Ancak bu fonsiyon sayıyı kendi ile &#231;arparak <font color='green'>(piS1 * piS1)</font> karesini aldığında bunu beğenmedim ve yerine sayının 2 &#252;ss&#252;n&#252; doğrudan alan <font color='green'>(piS1 ^ 2)</font> yeni bir fonksiyon yazdım. İşte yeni yazdığımız fonksiyon miras gelenin &#252;st&#252;ne biner, buna <font color='blue'>ezmek (overriding)</font> denir. <font color='green'>TabanSinif</font>&#180;ın kodunda sondaki <font color='green'>Kare</font> fonksiyonunun yazılışına dikkat edin <font color='green'>Overridable (ezilebilir)</font> anahtar kelimesini g&#246;receksiniz. Bir yordamın ezilebilmesi i&#231;in <font color='green'>Overridable (ezilebilir)</font> anahtar kelimesi ile tanımlanması gerekir. Bu yordamı ezen yordamın ise <font color='green'>Overrides (ezici)</font> anahtar kelimesi ile tanımlanması gerekir. <br/><br/><font color='green'>MirasciSinif</font>&#180;ın i&#231;erisinde bir yerden fonskiyonun <font color='blue'>Overriding</font> edilmemiş aslına yani <font color='green'>TabanSinif</font>&#180;ın i&#231;indeki haline erişilmek istenirse <font color='green'>MyBase.Kare(sayi)</font> yazımı kullanılır.<br/><br/>----------------------------------------------------------------------<br/><br/>Fonksiyonların ve değişkenlerin <font color='green'>Public, Friend, Protected, Private</font> anahtar kelimeleri ile tanımlanabildiğini biliyoruz.<br/><br/><font style='font-weight: bold'>Taban sınıfta Public olarak tanımlanan &#246;ğeye;</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;Mirascı sınıftan erişilir.<br/>&nbsp;&nbsp;&nbsp;&nbsp;Mirascı sınıftan t&#252;retilen nesneden erişilir.<br/><br/><font style='font-weight: bold'>Taban sınıfta Friend olarak tanımlanan &#246;ğeye;</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;Mirascı sınıftan erişilir.<br/>&nbsp;&nbsp;&nbsp;&nbsp;Mirascı sınıftan t&#252;retilen nesneden erişilir.<br/><br/><font style='font-weight: bold'>Taban sınıfta Protected olarak tanımlanan &#246;ğeye;</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;Mirascı sınıftan erişilir.<br/>&nbsp;&nbsp;&nbsp;&nbsp;Mirascı sınıftan t&#252;retilen nesneden erişilmez.<br/><br/><font style='font-weight: bold'>Taban sınıfta Private olarak tanımlanan &#246;ğeye;</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;Mirascı sınıftan erişilmez.<br/>&nbsp;&nbsp;&nbsp;&nbsp;Mirascı sınıftan t&#252;retilen nesneden erişilmez.<br/><br/>Elbette <font style='font-weight: bold'>Inheritance</font> kavramı bu kadarla bitmiyor. Hem konuyu pekiştirmek hemde anlamak i&#231;in diğer makalelerimi okumanızı tavsiye ederim.<br/><br/>Bu yazı kaynak g&#246;stermek kaydıyla kısmen, tamamen veya değiştirilerek yayınlanabilir.<br/>En yeni makaleler <font style='font-weight: bold'><font color='green'>FındıkKurdu</font></font>'nda yayınlanır. <a href='http://www.findikkurdu.com' target='_blank'>http://www.findikkurdu.com</a><br/><br/>Kolay gelsin. Bir sonraki makaleye kadar esen kalın.]]></description><link>http://www.ufukyayla.com/defter/yorum.aspx?bno=5&amp;kno=130&amp;sk=1&amp;sy=1</link><pubDate>Tue, 24 Oct 2005 10:05:12 +0200</pubDate><author>ufukyayla</author><guid>http://www.ufukyayla.com/defter/yorum.aspx?bno=5&amp;kno=130</guid></item><item><title>Aduzayı Kavramı, Nesnelerin Yapılandırıcıları ve Nesnelerin Özellikleri</title><description><![CDATA[<font color='blue'>ASP.net</font> <font color='green'>aduzayı, nesne, yapılandırıcı, &#246;zellik, namespace, class, constructor, property</font><br/><br/>Bu makale Nesneye Y&#246;nelik Programlamanın temel taşları olan nesne (Class) lerin yapılandırıcılarını ve &#246;zelliklerini (properties) anlatır. Ayrıca aduzayı kavramına kısaca değinilmiştir.<br/><br/><font style='font-weight: bold'>Aduzayı (Namespace)</font><br/><br/>.NET &#231;atısı altında hazır olarak gelen binlerce sınıf vardır. Ayrıca biz de kendi sınıflarımızı yazabilmekteyiz. B&#252;t&#252;n bu sınıfların karışmaması i&#231;in iyi tasnif edilmeleri gereklidir. Aynı adı taşımakla beraber farklı işlere yarayan sınıflar vardır. &#214;rneğin <font color='green'>TextBox</font> sınıfı <font color='green'>System.Web.UI.WebControls</font> aduzayında hem de <font color='green'>System.Windows.Forms</font> aduzayında vardır. Bunlardan <font color='green'>System.Web.UI.WebControls.TextBox</font> ASP.NET'de web sayfalarında kullandığımız metin kutuları diğeri olan <font color='green'>System.Windows.Forms.TextBox</font> ise standart (.exe) uygulamalarda kullandığımız metin kutularıdır. Farklı aduzayı i&#231;inde oldukları i&#231;in birbirlerinden ayırt edilebilirler. Bu durumda bu sınıfların karışmaması i&#231;in aduzaylarının kullanılması bir zorunluluktur. <br/><br/>Bir nesneyi t&#252;retirken nesneyi t&#252;reteceğimiz sınıfın bir anlamda tam adresini vermek gerekir. <br/><br/><font color='green'>Dim Baslik As New System.Web.UI.WebControls.TextBox()</font><br/><br/>Bu kodda g&#246;r&#252;ld&#252;ğ&#252; gibi Baslik nesne <font color='green'>System.Web.UI.WebControls</font> aduzayı i&#231;indeki <font color='green'>TextBox</font> sınıfından t&#252;retilecektir. Sınıfı, bulunduğu aduzayı ile beraber yazmak pratik değildir. Bu durumda kullanacağımız aduzaylarını ASP.NET sayfamızın başında belirtiriz.<br/><br/><font color='green'>Imports System.Web.HTTPContext</font><br/>veya;<br/><font color='green'>&lt;%@ Import Namespace=&quot;System.Web.HTTPContext&quot; %&gt;</font><br/><br/>Bu belirtme yapıldıktan sonra nesneyi t&#252;retmek i&#231;in;<br/><font color='green'>Dim Baslik As New TextBox</font><br/>yazmak yeterli olacaktır.<br/><br/><font style='font-weight: bold'>Yapılandırıcı (Constructor)</font><br/><br/>Bir sınıftan yeni bir nesne t&#252;rettiğimizde nesnenin bazı varsayılan değerleri y&#252;klemesi, hazırlık işlemlerini yapması gerekebilir. Ya da biz bir nesnenin bazı &#246;zelliklerini daha t&#252;retme aşamasında iken belirlemek isteyebiliriz. İşte bu iş i&#231;in nesne t&#252;retildiğinde hemen &#231;alışan &#246;zel bir yordam yazılır. Bu yordam VB'de <font style='font-weight: bold'>New()</font> adını taşır; C#'da ise sınıfla aynı addadır, yani sınıfın adı <font color='green'>Temel</font> ise yapılandırıcısının adı da <font color='green'>Temel</font> olur.<br/><br/><font color='blue'>Sınıf, Nesne, Nesneye Y&#246;nelik Programlama</font> adlı makalemde kodunu verdiğim &#246;rnek sınıfın bir yapılandırıcısı vardı. Bu sınıftan bir nesne t&#252;retildiğinde ilk olarak bu (kodu aşağıda olan) yordam &#231;alışmakta ve bazı ayarlamalar yapmaktaydı. Yapılacak matematik işlemini toplama, ilk sayıyı 4 ve ikinci sayıyı 2 olarak belirleyip sonucu hesaplıyordu.<br/><br/><font color='green'>Public Sub New() <br/>&nbsp;&nbsp;&nbsp;&nbsp;csIslem = &quot;+&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;ciSayi1 = 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;ciSayi2 = 2<br/>&nbsp;&nbsp;&nbsp;&nbsp;Hesapla()<br/>End Sub</font><br/><br/>Bir nesne t&#252;retildiğinde veya nesne tanımlandıktan sonra kendisine <font color='green'>New</font> anahtar kelimesi ile yeni bir nesne referansı atandığında ilgili sınıfın yapılandırıcısı &#231;alışır.<br/><br/><font color='green'>Dim Hesap As New Matematik.Temel()</font><br/>veya;<br/><font color='green'>Dim Hesap As Matematik.Temel<br/>Hesap = New Matematik.Temel()</font><br/><br/>Her iki durumda da sınıfın kodu i&#231;inde bulunan <font color='green'>New()</font> yordamı &#231;alışacaktır. Bu yordam <font color='green'>Temel</font> adlı sınıfın yapılandırıcısıdır. B&#252;t&#252;n yapılandırıcılar VB'de New() adını taşır, C#'da ise sınıfla aynı addadır. Yapılandırıcı yordamı da adı &#252;st&#252;nde bir yordamdır ve diğer yordamlar gibi farklı overload halleri olabilir.<br/><br/><font color='blue'>Overload Yordamlar ve Overloading Kavramı</font> adlı makalemde overloading konusundan bahsetmiş ve &#246;rnek olarak <font color='green'>OleDBCommand</font> sınıfının yapınlandırıcısını (constructor) vermiştim. Ardından temel matematik işlemlerini yapan bir sınıfı &#246;rnek vererek overloding kavramını anlatmıştım. Overloding kavramını i&#231;in bu makaleyi tekrar okuyunuz.<br/>&#214;rneğin <font color='green'>OleDBCommand</font> nesnesinin yapılandırıcısının (yapılandırıcı, constructor) d&#246;rt farklı overload hali vardır.<br/><br/><font color='green'>OleDBCommand()<br/>OleDBCommand(cmdText)<br/>OleDBCommand(cmdText, Connection)<br/>OleDBCommand(cmdText, Connection, Transaction)</font><br/><br/>Bu yordamların hepsi aynı adı taşımakla beraber &#231;ağrılırken kullanılan parametre sayısına ve t&#252;r&#252;ne g&#246;re birbirlerinden ayırt edilirler.<br/><br/><font style='font-weight: bold'>&#214;zellikler (Propeties)</font><br/><br/>Nesnelerin &#246;zellikleri vardır. Tabiatta g&#246;rd&#252;ğ&#252;m&#252;z her cismin, her nesnenin renk, boy, en, ağırlık gibi &#246;zellikleri olduğu gibi .NET &#231;atısı altında programlamada kullandığımız nesnelerin de &#246;zellikleri vardır. &#214;zellikler nesnelerin kendilerine verilen işleri nasıl yapacaklarını ele aldıkları veriye g&#246;re nasıl davranacaklarını belirler.<br/>Yine <font color='blue'>Sınıf, Nesne, Nesneye Y&#246;nelik Programlama</font> adlı makalemde kodunu verdiğim Temel adlı sınıfın 4 adet &#246;zelliği vardı. Aşağıda bunlardan biri olan Islem adlı &#246;zelliğin kodunu g&#246;rmektesiniz.<br/><br/><font color='green'>Public Property Islem() As String<br/>&nbsp;&nbsp;&nbsp;&nbsp;Get<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return csIslem<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Get<br/>&nbsp;&nbsp;&nbsp;&nbsp;Set(Value As String)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csIslem = Value<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Set<br/>End Property</font><br/><br/>Bu &#246;zelliğe &quot;+&quot;, &quot;-&quot;, &quot;*&quot; veya &quot;/&quot; atanarak yapılacak işlem t&#252;r&#252; belirleniyordu. Burada <font color='green'>Islem</font> &#246;zelliği <font color='green'>Get</font> ve <font color='green'>Set</font> adlı iki kısımdan oluştuğundan hep yazılabilir hemde okunabilir durumdadır. Yani <font color='green'>Temel.Islem=&quot;+&quot;</font> yazarak yapılacak işlemi toplama olarak belirleyebilir ya da <font color='green'>If Temel.Islem=&quot;+&quot; Then ...</font> yazarak işlemin ne olduğunu okuyabiliriz. Ancak bazı durumlarda bir &#246;zelliğin sadece okunur (ReadOnly) olmasını, değiştirilememesini isteyebiliriz. <font color='green'>Temel</font> adlı sınıfın <font color='green'>Sonuc</font> &#246;zelliği b&#246;yle bir &#246;zelliktir. Sonucun dışarıdan atama yapılarak değiştirilmesi doğru olmaz. Sonuc sadece okunabilir olmalıdır.<br/><br/><font color='green'>Public ReadOnly Property Sonuc() As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;Get<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return ciSonuc<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Get<br/>End Property</font><br/><br/>G&#246;r&#252;ld&#252;ğ&#252; gibi sadece <font color='green'>Get</font> kısmı vardır. Ayrıca &#246;zellik tanımlanırken <font color='green'>ReadOnly</font> anahtar kelimesi kullanılmıştır. <br/><br/>Birde sadece atanabilen ve sonradan okunamayan (WriteOnly) &#246;zellikler vardır. &#214;rneğin yukarıda kodu g&#246;r&#252;len <font color='green'>Islem</font> &#246;zelliğini sadece yazılabilir bi&#231;imde yazalım.<br/><br/><font color='green'>Public WriteOnly Property Islem() As String<br/>&nbsp;&nbsp;&nbsp;&nbsp;Set(Value As String)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csIslem = Value<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Set<br/>End Property</font><br/><br/>Bu &#246;zellik sadece yazılabilir olduğundan <font color='green'>Get</font> kısmı yoktur.<br/><br/>&#214;zellikleri tanımlarken sınıfın i&#231;indeki komutlar yanında dışarıdanda erişilebilmesi i&#231;in <font color='green'>Public</font> anahtar kelimesi ile tanımlamak gereklidir. Ayrıca &#246;zelliğe bağlı olarak uygun veri t&#252;r&#252; tanımlanmalıdır. <font color='green'>Value As String</font> gibi.<br/><br/>Bu yazı kaynak g&#246;stermek kaydıyla kısmen, tamamen veya değiştirilerek yayınlanabilir.<br/>En yeni makaleler <font style='font-weight: bold'><font color='green'>FındıkKurdu</font></font>'nda yayınlanır. <a href='http://www.findikkurdu.com' target='_blank'>http://www.findikkurdu.com</a><br/><br/>Bir sonraki makalede g&#246;r&#252;şmek &#252;zere.]]></description><link>http://www.ufukyayla.com/defter/yorum.aspx?bno=5&amp;kno=129&amp;sk=1&amp;sy=1</link><pubDate>Sat, 02 Sep 2005 11:15:21 +0200</pubDate><author>ufukyayla</author><guid>http://www.ufukyayla.com/defter/yorum.aspx?bno=5&amp;kno=129</guid></item><item><title>AJAX (Asynchronous JavaScript and XML)</title><description><![CDATA[<font color='blue'>ASP.net</font> <font color='green'>ajax, javascript, XML</font><br/><br/>Bu makale AJAX'ın pratik olarak nasıl kullanılabileceğine dair bir yaklaşımı anlatır.<br/><br/>AJAX yani Asynchronous JavaScript And XML. Hen&#252;z adı bu olmadan &#246;nce kullandığımız ama bir ad konunca nedense daha &#231;ok ilgimizi &#231;eken şey.<br/><br/><font style='font-weight: bold'>Ne işe yarıyor?</font><br/><br/>Sayfada meydana gelen her tıklamada tarayıcının yeni bir istek yaparak b&#252;t&#252;n sayfayı g&#252;ncellemesi yerine sadece belli bir kısmı y&#252;klemesini sağlayarak ağ trafiğini azaltıyor ve kullanıcı dostu bir arabirim sağlıyor.<br/><br/><font style='font-weight: bold'>Nasıl &#231;alışıyor?</font><br/><br/>Tarayıcı &#252;zerinde &#231;alışan bir Javascript'in sayfa &#252;zerinde meydana gelen olaylara (event: tıklama vs.) g&#246;re sunucudan istekte bulunup gelen XML veriye g&#246;re sayfayı değiştirmesi. Bu durumda JS ve DOM'u destekleyen bir tarayıcıya ihtiyacımız var. Elbette XML destekli olmaları da gerekmektedir. IE, Firefox, Opera gibi tarayıcılar bazı farklılıklar olmakla beraber bu işi yapabilmektedir. <br/><br/>Şimdi kullanıcının sayfanızda bir linki tıkladığını d&#252;ş&#252;n&#252;n, tarayıcı hemen sunucuya yeni bir istekte bulunup b&#252;t&#252;n sayfayı yeniden y&#252;kleyecektir. Sayfanın &#252;st&#252;nde, altında, kenarlarında bulunan b&#252;t&#252;n sabit kısımlar ve bi&#231;imlendirme kodları gibi herşeyi. Oysa sadece bir &lt;div&gt; i&#231;indeki metni değiştirmek istemiş olabilirsiniz. İşte AJAX buna iyi bir &#231;&#246;z&#252;md&#252;r. Aşağıda &#246;rneğin tarayıcı tarafında &#231;alışan hali ve tarayıcı JavaScript kodu verilmiştir. (Bu kod basit olması i&#231;in sadece IE ye uygun yazılmıştır, en altta linkini bulacağınız başka bir &#246;rnek yaygın tarayıcıların hepsinde &#231;alışmaktadır.)<br/><br/><font style='font-weight: bold'>&#214;rnek sayfa (index.htm):</font><br/><br/><font color='green'>&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;title&gt;Ajax&lt;/title&gt;<br/>&lt;meta http-equiv='content-language' content='tr' /&gt;<br/>&lt;meta http-equiv='content-type' content='text/html; charset=windows-1254' /&gt;<br/>&lt;script&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var ajax_istek;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function ajax_getir(url){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ajax_istek){ajax_istek.abort()}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{ajax_istek=new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;)}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ajax_istek){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ajax_istek.onreadystatechange=ajax_takipet;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ajax_istek.open('get',url,true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ajax_istek.send(null);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function ajax_takipet(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var cevapXML;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var kimlik;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var deger;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ajax_istek.readyState==4){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ajax_istek.status==200){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cevapXML=ajax_istek.responseXML.documentElement;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kimlik=cevapXML.getElementsByTagName('kimlik')[0&#93;.firstChild.data;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deger=cevapXML.getElementsByTagName('deger')[0&#93;.firstChild.data;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(kimlik).innerHTML=deger;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&lt;/script&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/><br/>Aşağıdan sırasıyla 1, 2, 3 gibi tıklayın.&lt;br/&gt;&lt;br/&gt;<br/>&lt;a href=&quot;#&quot; onclick=&quot;ajax_getir('ajax.asp?istek=1')&quot;&gt;1&lt;/a&gt; - <br/>&lt;a href=&quot;#&quot; onclick=&quot;ajax_getir('ajax.asp?istek=2')&quot;&gt;2&lt;/a&gt; - <br/>&lt;a href=&quot;#&quot; onclick=&quot;ajax_getir('ajax.asp?istek=3')&quot;&gt;3&lt;/a&gt; - <br/>&lt;a href=&quot;#&quot; onclick=&quot;ajax_getir('ajax.asp?istek=4')&quot;&gt;4&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;<br/>&lt;a href=&quot;index.htm&quot; target=&quot;_blank&quot;&gt;Yeni Pencerede A&#231;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;<br/><br/>&lt;div id=&quot;kutu1&quot; name=&quot;kutu1&quot; style=&quot;width:100%;height:100px;background:ffff00&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;br/&gt;<br/>&lt;div id=&quot;kutu2&quot; name=&quot;kutu2&quot; style=&quot;width:100%;height:100px;background:ff00ff&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;br/&gt;<br/><br/>&lt;/body&gt;<br/>&lt;/html&gt;</font><br/><br/><font style='font-weight: bold'>ajax_getir</font> fonksiyonunda oluşturulan <font style='font-weight: bold'>XMLHttp</font> isteğinin olaylarını takip etmek &#252;zere <font style='font-weight: bold'>ajax_istek.onreadystatechange=ajax_takipet;</font> satırı ile <font style='font-weight: bold'>ajax_takipet</font> fonksiyonu atanmıştır. Yapılan istek bittiğinde <font style='font-weight: bold'>ajax_istek.readyState</font>'nin değeri <font style='font-weight: bold'>4</font> olacaktır. Eğer sunucu d&#252;zg&#252;n bir şekilde cevap verirse <font style='font-weight: bold'>ajax_istek.status</font>'un değeri <font style='font-weight: bold'>200</font> olur. Bu durumda gelen XML verisi parse edilmektedir. Gelen verinin i&#231;inden hangi <font style='font-weight: bold'>&lt;div&gt;</font>'in değiştirilmek istendiği ve i&#231;ine konulmak istenen veri &#231;ekilir.<br/><br/><font style='font-weight: bold'>Sunucu tarafında &#231;alışan kod (ajax.asp):</font><br/><br/><font color='green'>&lt;%<br/><br/>Session.Codepage=1254<br/>Session.LCID=1055<br/>Response.Expires=-1<br/><br/>Dim Istek<br/>Dim Kimlik<br/>Dim Deger<br/><br/>Istek=Request.QueryString(&quot;istek&quot;)<br/><br/>Select Case Istek<br/>&nbsp;&nbsp;&nbsp;&nbsp;Case &quot;1&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kimlik=&quot;kutu1&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Deger=&quot;&lt;b&gt;AJAX i&#231;in JavaScript kullanılır&lt;/b&gt;&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Case &quot;2&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kimlik=&quot;kutu1&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Deger=&quot;&lt;i&gt;Veri sunucudan XML formatında gelir&lt;/i&gt;&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Case &quot;3&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kimlik=&quot;kutu2&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Deger=&quot;&lt;u&gt;Tarayıcı tarafında XML verisi parse edilir&lt;/u&gt;&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Case &quot;4&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kimlik=&quot;kutu2&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Deger=&quot;&lt;select id='sec' name='sec'&gt;&quot; &amp; _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&lt;option value='0'&gt;Se&#231;enek 1&lt;/option&gt;&quot; &amp; _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&lt;option value='1'&gt;Se&#231;enek 2&lt;/option&gt;&quot; &amp; _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&lt;/select&gt;&quot;<br/>End Select<br/><br/>Response.ContentType=&quot;text/xml&quot;<br/>Response.Write &quot;&lt;?xml version=&quot;&quot;1.0&quot;&quot; encoding=&quot;&quot;windows-1254&quot;&quot; ?&gt;&quot;<br/>Response.Write &quot;&lt;ajax&gt;&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Response.Write &quot;&lt;nesne&gt;&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write &quot;&lt;kimlik&gt;&quot; &amp; Kimlik &amp; &quot;&lt;/kimlik&gt;&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write &quot;&lt;deger&gt;&quot; &amp; XMLMetni(Deger) &amp; &quot;&lt;/deger&gt;&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Response.Write &quot;&lt;/nesne&gt;&quot;<br/>Response.Write &quot;&lt;/ajax&gt;&quot;<br/><br/>Function XMLMetni(psMetin)<br/>&nbsp;&nbsp;&nbsp;&nbsp;Dim ysMetin<br/>&nbsp;&nbsp;&nbsp;&nbsp;ysMetin=psMetin<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;ysMetin=Replace(ysMetin,&quot;&amp;&quot;,&quot;&amp;amp;&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;ysMetin=Replace(ysMetin,&quot;&gt;&quot;,&quot;&amp;gt;&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;ysMetin=Replace(ysMetin,&quot;&lt;&quot;,&quot;&amp;lt;&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;ysMetin=Replace(ysMetin,&quot;'&quot;,&quot;&amp;apos;&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;ysMetin=Replace(ysMetin,&quot;&quot;&quot;&quot;,&quot;&amp;quot;&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;XMLMetni=ysMetin<br/>End Function<br/><br/>%&gt;</font><br/><br/>G&#246;r&#252;ld&#252;ğ&#252; gibi asp kodu gelen isteğe g&#246;re değiştirilecek i&#231;eriği nesnenin kimlik bilgisini ve i&#231;erik metnini ayarlamakta ve XML formatında istemciye yollamaktadır. <font style='font-weight: bold'><font color='red'>Eğer bir div i&#231;ine yolladğınız veri i&#231;inde başka html kontolleri varsa onlar da g&#246;r&#252;nt&#252;lecektir. 4. link buna bir &#246;rnektir.</font></font><br/><br/>Konu yeni olduğundan &#246;rnek kodu indirin, sunucunuzda bir dizine koyun ve index.htm dosyasını &#231;alıştırarak sırayla 1, 2, 3 ve 4 numaralı linklere tıklayın.<br/><br/><font style='font-weight: bold'>&#214;rneğe bak &gt;&gt;</font> <a href='http://www.ufukyayla.com/sair/fk/ajaxornek/index.htm' target='_blank'>http://www.ufukyayla.com/sair/fk/ajaxornek/index.htm</a><br/><br/>Daha &#231;aplı bir &#246;rnek ve kodu i&#231;in;<br/><a href='http://www.ufukyayla.com/sair/ajax/deneme.aspx' target='_blank'>http://www.ufukyayla.com/sair/ajax/deneme.aspx</a><br/><br/>Bu yazı kaynak g&#246;stermek kaydıyla kısmen, tamamen veya değiştirilerek yayınlanabilir.<br/>En yeni makaleler <font style='font-weight: bold'><font color='green'>FındıkKurdu</font></font>'nda yayınlanır. <a href='http://www.findikkurdu.com' target='_blank'>http://www.findikkurdu.com</a>]]></description><link>http://www.ufukyayla.com/defter/yorum.aspx?bno=5&amp;kno=128&amp;sk=1&amp;sy=1</link><pubDate>Mon, 07 Aug 2005 19:32:58 +0200</pubDate><author>ufukyayla</author><guid>http://www.ufukyayla.com/defter/yorum.aspx?bno=5&amp;kno=128</guid></item></channel></rss>