Kategoriler


SON YORUMLAR
Tatar Ramazan
Üniversitelerin Bilgisayar, Elektrik-Elektronik veya Matematik Mühendisliği veya ilgili bölümlerinden mezun, •Katılım bankacılığı alanında çalışmaya istekli, •.NET(ASP.NET, C#) platformunda uygulama geliştirme konusunda 1-3 yıllık deneyime sahip, •SQL Server veri tabanı ve T-SQL konularında bilgi sahibi, •Tercihen kurumsal web tabanlı uygulamalarda tecrübeli, •Dokümantasyon yeteneğine sahip, yaptığı işi yazılı hale getirmeyi seven, •Analitik düşünebilen, sonuç odaklı ve yeniliklere açık, •Ekip çalışmasına yatkın, •İyi derecede İngilizce bilen, •Askerlik görevi ile ilişiği olmayan veya 3 yıl tecilli (Erkek adaylar için) Yukardaki iş ilanına 3000 cıvarında başvuru gitmiş. Kariyer.Netten baktım. Görüşmeye bile çağırmazlar. Dediğim gibi ilanda çok nitelik istenmiyorsa çok başvuru gidiyor. Tübitak da bir iş ilanı vermişti. 3 seviyesinde bilgili adam arıyorlarsa mülakata 8 seviyesinde bilgili benle beraber 3 kişi çağırdılar. Bu durum bilgisayar mühendislerinin ne kadar zorda olduğunu gösteriyor. Basit bir iş için bile çok kaliteli adaylarla yarışmak zorunda kalıyorsunuz. Vasatsanız işe bile giremezsiniz. 4000-5000 kazanmanız için bile bayağı iyi olmanız lazım. Devlet de olmasa 6 mühendis kadar bilgimle aç kalacaktım. 6 ayda bir yeni trend çıkıyor. Yeni mezunlar hangisini öğrenecek? Ben mezun olurken Entity Framework-LINQ yeni çıkıyordu. Sonra MVC çıktı. Yetişemiyoruz. Hemen eskiyoruz. Bölüm başkanı C#, ASP.NET, T-SQL iyi derecede bilirseniz 4000 TL den aşağı başlamazsınız demişti 3. sınıfta 2007 yılında. Halbuki şimdi sadece onları bileni işe bile almıyorlar. Ben de bölüm başkanının lafına bakıp özelde iyi para kazanacaz diye KPSS tercihleri yapmadım. Açıkta kaldım bir kaç yıl. Mesleğimize düşman olduk. Hep suçu kendimde aradım. Aman şunu da öğreneyim. Şu eksiğimi de kapatayım dedim. Sonra anladım ki ne yapsan boş. Bilişim sektörü sıkıntılı. Yaranamazsın firmalara. Benim suçum yokmuş.
Tatar Ramazan
Dünyanın en iyi, en popüler mesleği bilgisayar mühendisliğidir. Beğenmeyenin safra kesesini alırım.
Moloz
Moloz

Ödev yapın, Ödev yaptırın Proje yaptırın Para kazanın İnternetten para kazan Ödev yapın nakit kazanın, ödev yaptırın nakit kazanın https://ogrenciyegelir.com
Tatar Ramazan
Aşağıda başkasının yazdığı yorum: "Arkadaşlar, işssiz mühendis sayısı almış başını gitmiş malum kariyer sitesinde başvuru sayısı 86 özgeçmiş görüntüleme 9 mülakat daveti 6. olumlu cevap 1,5 aydır yok tecrübe 3,5 yıl :) buna rağmen bilg. müh. müh grupları içerisinde yine de en şanslı kesim, fakat yinede talep az arz çok, buda işverenlerin ağızlarını sulandırmaya yetiyor. maalesef ağır ve çok fazla emek isteyen bu meslek maaşları yerlerde mesai ücreti olmadan mesailer havada uçuyor. 3 kişilik iş 1 kişiye yıkılıyor. bu da yetmezmiş gibi bir insan diploması olmadan avukatlık,doktorluk,vs yapamıyor fakat maalesef bilgisayarcıyım diyebilyor. işin kalitesinden çok maliyetini düşünen girişimci ve müşteri ucuz çözüme yöneliyor, sonuç patlayan projeler ve yine uğraşan bilgisayarcılar. harcadığım emek ve maddi manevi kazanım göz önüne aldığımda keşke bu bölümü okumasaydım diyorum, durum maalesef daha da kötüye gidiyor ve üstelik anlam veremediğim şekilde bilişimci eksiğimiz var deniyor, işsiz insanlar bedava bilişim kurslarına gönderiliyor. kimse eleman yetştirme taraftarı değil herkes tecrübeli olsun ucuz olsun insan üstü bir eforla çalışsın derdinde, geleceği iyi görmüyorum, ve kurulan bilg. müh. odasının hiçbir çabasını göremiyorum."
Tatar Ramazan
Herkes özelden devlete geçmeye çalışıyor. Uzak durun. Kim zengin olmuş yazılımdan. Eniştem ticaret meslek lisesi mezunu. Sigortacılık ve muhasebeden ayda 10-20 bin para kırıyor. Biz sürünüp duruyoruz. Siz gurbetlerde ilim irfan peşinde uğraşırken millet kızları götürür. Siz de internetin başında uçkurunuzu ovuşturursunuz. Ben okuduğuma pişmanım. Yaş 32. 6 mühendis kadar bilgim var ama karı yok, araba yok, ev yok, sosyal hayat yok. Annemle tarla kazıyoruz. Millet eşiyle, sevgilisiyle parkta dolaşıyor. Saat 6:00 da kalkıyorum 1,5 saat yol gidiyorum. Dönüşte de 1 saatlik servis yolculuğundan sonra uykusuz bitkin halde 20 dk yol yürüyoruz. Evlenecek kız yok ki. Hepsi onun bunun kucağında. Bu yüzden iş yerine yakın bir yere taşınamıyorum. Kancık orospular. Düzgün, çalışkan adam istemezler. İlle zıpır olacak, serseri maço olacak. Ondan sonra ağla,zırla. Kadına şiddet ve cinayet gibi olaylarda içimin yağları eriyor. Hiç acımıyorum. Siz seçtiniz o adamları. Biz bıcırığız, pısırığız ya. Bulduğunuz delikanlı adamlardan da şikayet etmeyin. Zırlamayın. 2 tesettürlü dangalak kız kardeş 2 zıpırla evlenmişti. Kocalarını jigololuk yaparken yakalamışlar. Boşanmak istiyorlar. Oh oluyo size! Belanızı buluyonuz. Al sana yakışıklı?! Gördün mü ebenin hörekesini? ÖSS den yüksek puan yapın iyi gelecek sizin olsun diye kandırıldık. Vaadettiğiniz hayat bu muydu göt çukurları?!?! 13 yıldır yüzüm gülmedi.
Gsli
FAA
Crn
Asp net c# android masaüstü access projeleri yapılır
cv
Elinize saglik
Tatar Ramazan
"Eğer siz bölüme girdikten sonra okurken derslerinizde başarılı olmak için bir çaba göstermiyorsanız, özellikle ikinci sene ikinci dönemden itibaren staj için kapı kapı dolaşmıyorsanız, sosyal tecrübelerinizi sadece bilgisayar başında temellendiriyorsanız, okulu henüz bitirmeden belli başlı projelerde adınız yoksa veya herhangi bir çalışmanız yoksa, üzgünüm. Şu çağda elle tutulur yüksek kalibreli herhangi bir iş yapabilmeniz pek mümkün değil." Gördüğünüz gibi işiniz zor gidin harita mühendisi olun. Nedense hep biz kıçımızı yırtacaz. Ben Belediyede 1 yıl çalıştım. Harita mühendisleri yeteneksiz, bilgisiz oldukları halde benden fazla maaş alıyordu. ben taşerondum. Adamlar kendilerini 2 gr geliştirmezdi. Ben her hafta yeni şeyler öğrenirdim. Bütün gün yatan adam benim kalitemi sorgulardı, kendi hatalarını üstüme atarlardı. Kaç kere mors etmiştim onları. Her yerde eziliyoruz. En zor işi bize yaptırıyorlar. Yaşım 32 olmuş çok nitelikli olduğum halde meslekten yüzüm gülmüş değil. Tipim düzgün olmasına rağmen kız bile bulamadık. Biz ilim irfan peşinde koşarken hiç bir özelliği olmayanlar güzel kızları götürüyor. Belediyeye bile girmemiz için özelde deneyim istiyorlar ama harita mühendisi mezun olur olmaz işe başlayabiliyor. Özel sektör kollarını açsaydı, iyi imkanlar sunsaydı belediyeye muhtaç olmazdım zaten. Bir memur bilg. müh. vardı istifa edip özele geçti iyi yazılımcıydı üstelik. 6 Ay sonra pişman olup geri döndü memurluğa. anlatsin.com diye site var insanlar meslekleri tanıtıyor. Orda bile hep kendinizi geliştirirseniz falan filan, kem küm yapılıyor. Belirsiz, muğlak ifadeler...Bilgisayar bilgim: C#, Java, ASP.NET, Silverlight, WPF, LINQ, XML, XSL, HTML, Javascript, CSS, JQuery, Ajax, Web Servisleri, ADO.NET, T-SQL, PL/SQL, Reporting Services. gibi teknolojileri % 80 seviyesi bilmiyorsam en adi şerefsizim. Buna rağmen piyasaya çıkayım ciddi söylüyorum beni yetersiz görürler. Bu kadar nankör bir meslektir. 2010 yılında 5 ay çalışıp İngilizce 3000 kelime öğrenip KPDS sınavından 89 almış adamım. Tabi canım ben de tembelim, patlağım. İTÜ yü, ODTÜyü derece ile bitirmiş adamı örnek verip sanki bütün bilg. mühendisleri çok iyi yerdeymiş gibi anlatıp çoluk çocuğu kandırmayın.
İşveren
Şuan çalışan mühendislerimiz bu sayfada yazılı şişirme rakamlar ile bize gelselerdi ve talep etselerdi, kuvvetle muhtemel hiçbiri çalışmıyor olurdu. Düşük ücret talep etmek işi kaybettirmez. Karşı tarafa sizi tanıyacak fırsat vermelisiniz. İşverene yukarıdan uçar da işine gelirse tavrına bürünürseniz çok iş ararsınız. Etiketin havasına çok kapılmayın. Mütevazı olun. Yazıyı yazanın sahadan haberi yok. Masa maşında bilgisizce yazılmış bir yazı. Mülakatlarda egonuzu kabartırsanız, bir işveren olarak söylüyorum ki daha büyük bir egoya toslarsınız. Ağırdan ve temkinli gitmek iyidir. Başarılar.
computer
Fırata gelin işsiz kalmazsınız
ferit
Elazığ Fırat üniversitesinin de yer alması gerekmez mi sizce de
https://ogrenciyegelir.com
Ödev yapın, Ödev yaptırın Proje yaptırın Para kazanın İnternetten ödev yaparak para kazan Parayla ödev yaptırma sitesi https://ogrenciyegelir.com

Bilgisayar Mühendisleri
Here is the website inspired me to use 
it as a guide when I tried to define 
myself as an engineer candidate a few 
years ago. It really helped me to work
 and study feeling in confidence with 
being on the right way. I suggest this 
website to whom it may direct her/his 
to find the right career path. It 
includes many articles varies from 
real life experiences to detailed 
software engineering issues. But the 
most dignified parts for me are the 
articles in general and career titles.
Son okunan makaleler:
Online Java Dersleri - Polimorfizm
Kim neyi niye seçer? Java mı c# mı? Oracle vs SqlServer?
Bilgisayar Mühendisleri Kaç Para Alır?
Bilgisayar Mühendisleri Kaç Para Alır?
NHibernate ile ORM'e Giriş
Java Nedir
Bir bilgisayar mühendisinin bilmesi gereken en temel teknolojiler
Bir bilgisayar mühendisinin bilmesi gereken en temel teknolojiler
Bir bilgisayar mühendisinin bilmesi gereken en temel teknolojiler
Bir bilgisayar mühendisinin bilmesi gereken en temel teknolojiler
Kulak asmayın.
Çok okunan blog yazmanın 10 sırrı
Bir bilgisayar mühendisinin bilmesi gereken en temel teknolojiler
Çok okunan blog yazmanın 10 sırrı
Çok okunan blog yazmanın 10 sırrı
Bilgisayar Mühendisleri Kaç Para Alır?
Yazılım Mühendisliği ve Bilgisayar Mühendisliği arasındaki farklar
Yazılım Mühendisliği ve Bilgisayar Mühendisliği arasındaki farklar
ORACLE - Lutz Hartmann 14-15 Mayısda Istanbul’da
Yazılım Mühendisliği ve Bilgisayar Mühendisliği arasındaki farklar

Bilgisayar Mühendisleri Portalı

Online Java Dersleri - Polimorfizm

 
BÖLÜM 6
 
Altuğ B. Altıntaş
© 2004
Polimorfizm
Polimorfizm, nesneye yönelik programlamanın önemli kavramlarından biridir ve sözlük anlamı olarak "bir çok şekil" anlamına gelmektedir. Polimorfizm ile kalıtım konusu iç içedir. Kalıtım konusunu geçen bölüm incelenmişti; kalıtım konusunda iki taraf bulunmaktadır, ana sınıf ve bu sınıftan türeyen alt sınıf/sınıflar. )
6.1. Detaylar
Alt sınıf, türetildiği ana sınıfa ait tüm özellikleri alır; yani, ana sınıf ne yapıyorsa türetilen alt sınıfta bu işlemlerin aynısını yapabilir ama türetilen alt sınıfların kendilerine ait bir çok yeni özelliği de olabilir. Ayrıca türetilen alt sınıfa ait nesnenin, ana sınıf tipindeki referansa bağlamanın yukarı doğru (upcasting) işlemi olduğu geçen bölüm incelenmişti. Burada anlatılanları bir örnek üzerinde açıklarsak; ()
Örnek:PolimorfizmOrnekBir.java ()
 
class Asker {
 public void selamVer() {
      System.out.println("Asker Selam verdi");
 }
} 
 
class Er extends Asker {
 public void selamVer() {
      System.out.println("Er Selam verdi");
 }
}
 
class Yuzbasi extends Asker {
 public void selamVer() {
      System.out.println("Yuzbasi Selam verdi");
 }
}
 
public class PolimorfizmOrnekBir {
 public static void hazirOl(Asker a) {
      a.selamVer(); // ! Dikkat !
 }
 
 public static void main(String args[]) {
      Asker a = new Asker();
      Er e = new Er();
      Yuzbasi y = new Yuzbasi();
      hazirOl(a); // yukarı cevirim ! yok !
      hazirOl(e); // yukarı cevirim (upcasting) 
     hazirOl(y); // yukarı cevirim (upcasting)
 }
}
 
Yukarıdaki örnekte üç  kavram mevcuttur, bunlardan biri yukarı çevirim (upcasting) diğeri polimorfizm ve son olarak da geç bağlama (late binding). Şimdi yukarı çevirim ve polimorfizm kavramlarını açıklayalım. Bu örneğimizde ana sınıf Asker sınıfıdır; bu sınıfdan türeyen sınıflar ise Er ve Yuzbasi sınıflarıdır. Bu ilişki "bir" ilişkisidir ; ()
·       Er bir Askerdir, veya 
·       Yüzbası bir Askerdir, diyebiliriz. 
Yani Askersınıfının yaptığı her işi Er sınıfı veya Yuzbasi sınıfı da yapabilir artı türetilen bu iki sınıf kendisine has özellikler taşıyabilir, Asker sınıfı ile Er ve Yuzbasi sınıflarının arasında kalıtımsal bir ilişki bulunmasından dolayı, Asker tipinde parametre kabul eden hazirOl()yordamına Er ve Yuzbasi tipindeki referansları paslayabildik, bu özelliğinde yukarı çevirim (upcasting) olduğunu geçen bölüm incelenmişti. ()
Polimorfizm ise hazirOl()yordamının içerisinde gizlidir. Bu yordamın (method) içerisinde Asker tipinde olan a referansı kendisine gelen 2 değişik nesneye (Er ve Yuzbasi) bağlanabildi; bunlardan biri Er diğeri ise Yuzbasi’dır. Peki bu yordamın içerisinde neler olmaktadır? Sırası ile açıklarsak; ilk önce Asker nesnesine bağlı Asker tipindeki referansı, hazirOl()yordamına parametre olarak gönderiyoruz, burada herhangi bir terslik yoktur çünkü hazirOl()yordamı zaten Asker tipinde parametre kabul etmektedir. ()
Burada dikkat edilmesi gereken husus, hazirOl() yordamının içerisinde Asker tipindeki yerel a değişkenimizin, kendi tipinden başka nesnelere de (Er ve Yuzbasi) bağlanabilmesidir; yani, Asker tipindeki yerel a değişkeni bir çok şekle girmiş bulunmaktadır. Aşağıdaki ifadelerin hepsi doğrudur: ()
·       Asker a = new Asker() ;
·       Asker a = new Er();
·       Asker a = new Yuzbasi();
Yukarıdaki ifadelere, Asker tipindeki adeğişkenin açısından bakarsak, bu değişkenin bir çok nesneye bağlanabildiğini görürüz, bu özellik polimorfizm 'dir -ki bu özelliğin temelinde kalıtım (inheritance) yatar. Şimdi sıra geç bağlama (late binding) özelliğinin açıklanmasında.... ()
6.2.Geç Bağlama (Late Binding)
Polimorfizm olmadan, geç bağlamadan bahsedilemez bile, polimorfizm ve geç bağlama (late binding) bir elmanın iki yarısı gibidir. Şimdi kaldığımız yerden devam ediyoruz, Er nesnesine bağlı  Er tipindeki referansımızı (e) hazirOl() yordamına parametre olarak gönderiyoruz. ()
Gösterim-6.1:
hazirOl(e); // yukari dogru cevirim (upcasting)
Bu size ilk başta hata olarak gelebilir, ama arada kalıtım ilişkisinden dolayı (Er bir Askerdir) nesneye yönelik programlama çerçevesinde  bu olay doğrudur. En önemli kısım geliyor; şimdi, hangi nesnesin selamVer() yordamı çağrılacaktır? Asker nesnesinin mi? Yoksa Er nesnesinin mi ? Cevap: Er nesnesinin selamVer() yordamı çağrılacaktır. Çünkü Asker tipindeki yerel değişken (a) Er nesnesine bağlanmıştır. Eğer Er nesnesinin selamVer() yordamı olmasaydı o zaman Asker nesnesine ait olan selamVer()yordamı çağrılacaktı fakat Er sınıfının içerisinde, ana sınıfa ait olan (Asker sınıfı)selamVer() yordamı iptal edildiğinden (override) dolayı, Java,  Er nesnesinin selamVer()yordamını çağırılacaktır. Peki hangi nesnesininselamVer()yordamının çağrılacağı ne zaman belli olur? Derleme anında mı  (compile-time)? Yoksa çalışma anında mı (run-time)? Cevap; çalışma anında (run-time). Bunun sebebi, derleme anında hazirOl()yordamına  hangi tür nesneye ait referansın gönderileceğinin belli olmamasıdır. ()
Son olarak,  Yuzbasi nesnesine bağlı  Yuzbasi tipindeki referansımızı hazirOl() yordamına parametre olarak gönderiyoruz. Artık bu bize şaşırtıcı gelmiyor... devam ediyoruz. Peki şimdi hangi nesneye ait selamVer() yordamı çağrılır? Asker nesnesinin mi? Yoksa Yuzbasi nesnesinin mi? Cevap Yuzbasi nesnesine ait olan selamVer() yordamının çağrılacağıdır çünkü Asker tipindeki yerel değişkenimiz heap alanındaki Yuzbasi nesnesine bağlıdır ve selamVer() yordamı Yuzbasi sınıfının içerisinde iptal edilmiştir (override). Eğer selamVer() yordamı Yuzbasi sınıfının içerisinde iptal edilmeseydi o zaman Asker sınıfına ait (ana sınıf)selamVer() yordamı çağrılacaktı. Aynı şekilde Java hangi nesnenin selamVer() yordamının çağrılacağına çalışma-anında (run-time) da karar verecektir yani geç bağlama özelliği devreye girmiş olacaktır. Eğer bir yordamın hangi nesneye ait olduğu çalışma anında belli oluyorsa bu olaya geç bağlama (late-binding) denir. Bu olayın tam tersi ise erken bağlamadır (early binding); yani, hangi nesnenin hangi yordamının çağrılacağı derleme anında bilinmesi. Bu örneğimiz çok fazla basit olduğu için, "Niye !  derleme anında hangi sınıf tipindeki referansın hazirOl()yordamına paslandığını bilemeyelim ki, çok kolay, önce Asker sınıfına ait bir referans sonra Er sınıfına ait bir referans ve en son olarak da Yuzbasi sınıfına ait bir referans bu yordama parametre olarak gönderiliyor işte..." diyebilirsiniz ama aşağıdaki örneğimiz için aynı şeyi söylemeniz bu kadar kolay olmayacaktır ()
 
Örnek: PolimorfizmOrnekIki.java ()
 
class Hayvan {
 public void avYakala() {
      System.out.println("Hayvan avYakala");
 }
}
 
class Kartal extends Hayvan {
 public void avYakala() {
      System.out.println("Kartal avYakala");
 }
}
 
class Timsah extends Hayvan{
 public void avYakala() {
      System.out.println("Timsah avYakala");
 }
}
 
public class PolimorfizmOrnekIki {
  public static Hayvan rasgeleSec() {
      int sec = ( (int) (Math.random() *3) ) ;
      Hayvan h = null ;
      if (sec == 0) h = new Hayvan();
      if (sec == 1) h = new Kartal();
      if (sec == 2) h = new Timsah();
      return h;
 }
  public static void main(String args[]) {
      Hayvan[] h = new Hayvan[3];
      // diziyi doldur
      for (int i = 0 ; i < 3 ; i++) {
       h[i] = rasgeleSec(); //upcasting
      }
      // dizi elemanlarini ekrana bas
      for (int j = 0 ; j < 3 ; j++) {
       h[j].avYakala(); // !Dikkat!
      }
 } 
}
 
 Yukarıdaki örnekte bulunan kalıtım (inheritance) ilişkisini, UML diyagramında gösterirsek:
Şekil-6.1. Kalıtım, Polimorfizm ve Geç Bağlama
PolimorfizmOrnekIki.java örneğimizde rasgeleSec()yordamı, rasgele Hayvan nesneleri oluşturup geri döndürmektedir. Geri döndürülen bu Hayvan nesneleri, Hayvan tipindeki dizi içerisine atılmaktadır. Hayvan dizisine atılan Kartal ve Timsah nesnelerine Java’nın kızmamasındaki sebep kalıtımdır. Kartal bir Hayvan'dır diyebiliyoruz aynı şekilde Timsah bir Hayvandır diyebiliyoruz; olaylara bu açıdan bakarsak Hayvan tipindeki dizi içerisine eleman atarken yukarı çevirim (upcasting) olduğunu fark edilir. ()
Geç bağlama ise, Hayvan dizisinin içerisindeki elemanlara ait avYakala() yordamını çağırırken karşımıza çıkar. Buradaki ilginç nokta hangi nesnenin avYakala() yordamının çağrılacağının derleme anında (compile-time) bilinemiyor olmasıdır. Nasıl yani diyenler için konuyu biraz daha açalım. rasgeleSec() yordamını incelersek, Math.random() yordamının her seferinde 0 ile 2 arasında rasgele sayılar ürettiği görülür. Bu üretilen sayılar doğrultusunda Hayvan nesnesi Kartal nesnesi veya Timsah nesnesi döndürülebilir; bu sebepten dolayı uygulamamızı her çalıştırdığımızda Hayvan tipindeki dizinin içerisine değişik tipteki nesnelerin, değişik sırada olabilecekleri görülür. Örneğin PolimorfizmIki uygulamamızı üç kere üst üste çalıştırıp çıkan sonuçları inceleyelim; Uygulamamızı  çalıştırıyorum. ()        
 
Gösterim-6.2:
java  PolimorfizmIki 
Uygulamanın çıktısı aşağıdaki gibidir;
 
Kartal avYakala
Hayvan avYakala
Kartal avYakala
Aynı uygulamamızı tekrardan çalıştırıyorum;
Timsah avYakala
Timsah avYakala
Hayvan avYakala
Tekrar çalıştırıyorum;
Timsah avYakala
Hayvan avYakala
Kartal avYakala
 
Görüldüğü üzere dizi içerisindeki elemanlar her sefersinde farklı  olabilmektedir, dizi içerisindeki elemanlar ancak çalışma anında (runtime) belli oluyorlar. h[j].avYakala()derken, derleme anında (compile-time) hangi nesnenin avYakala() yordamının çağrılacağını Java tarafından bilinemez, bu olay ancak çalışma anında (run-time) bilinebilir. Geç bağlama özelliği bu noktada karşımıza çıkar. Geç bağlamanın (late-binding) diğer isimleri, dinamik bağlama (dynamic-binding) veya çalışma anında bağlamadır. (runtime-binding). ()
6.3. Final ve Geç Bağlama
5. bölümde, finalözelliğinin kullanılmasının iki sebebi olabileceğini belirtmiştik. Bunlardan bir tanesi tasarım diğeri ise verimliliktir. Verimlilik konusu geç bağlama (late binding) özelliği ile aydınlamış bulunmaktadır, şöyle ki, eğer biz bir sınıfı final yaparsak, bu sınıfa ait tüm yordamları final yapmış oluruz veya eğer istersek tek başına bir yordamı da final yapabiliriz. Bir yordamı final yaparak şunu demiş oluruz, bu yordam, türetilmiş olan alt sınıfların içerisindeki diğer yordamlar tarafından iptal edilemesin (override) Eğer bir yordam iptal edilemezse o zaman geç bağlama (late binding) özelliği de ortadan kalkar. ()
Uygulama içerisinde herhangi bir nesneye ait  normal bir yordam  (final olmayan) çağrıldığında, Java, acaba doğru nesnenin uygun yordam mu çağrılıyor diye bir kontrol yapar, daha doğrusu geç bağlamaya (late-binding) ihtiyaç var mı kontrolü yapılır. Örneğin Kedi sınıfını göz önüne alalım. Kedi sınıfı final olmadığından dolayı bu sınıftan türetilme yapabiliriz. ()
 Örnek: KediKaplan.java  ()
 
class Kedi {
      
    public void yakalaAv() {
       System.out.println("Kedi sinifi Av yakaladi");
    }
      
}
 
class Kaplan extends Kedi {
 
 public static void goster(Kedi k) {
      k.yakalaAv(); 
  }
 
 public void yakalaAv() {
       System.out.println("Kaplan sinifi Av yakaladi");
 }
 
 public static void main(String args[] ) {
       Kedi k = new Kedi() ;
       Kaplan kp = new Kaplan();
       goster(k); 
        goster(kp); // yukari dogru cevirim (upcasting)       
 } 
}
 
Kaplan sınıfına ait statik bir yordam olan goster()  yordamının içerisinde Kedi tipindeki kyerel değişkene bağlı olan nesnenin, yakalaAv() yordamı çağrılmaktadır ama hangi nesnenin yakalaAv() yordamı? Kedi nesnesine ait olan mı? Yoksa Kaplan nesne
Bu makaleyi beğendin mi? Yorumunu Yaz!







Sizden Gelen Yorumlar:

Yorum Yazın

smtha(31.05.2010 08:02:16)
Çok güzell teşekkürler
%64 %20 %16
Katılıyorum Çekimserim Katılmıyorum



cücü :)(05.01.2010 20:54:26)
çok begendimm abiiii eywallahh gurban olurumm senaaa beynnn :)) heheee
%62 %10 %28
Katılıyorum Çekimserim Katılmıyorum





Yazılan yorumlar tek sayfaya sığmadı. Daha fazlasını okumak için aşağıda sayfa numarasına tıklayın:
1   > 2 

Copyright© 2001-2017. Bilgisayar Mühendisleri Portalı | Bütün hakları saklıdır.