1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
13/11/2009 devam Dokümantasyon & Aç klamalar Üç türlü yöntem vard r: // Bu i aret sat r sonuna kadar olan tüm ifadeyi aç klama olarak belirler. /* ve */ aretleri aras nda kalan tüm ifadeler sat r sonu gözetmeksizin aç klama olrak kabul edilir. /** * Bu sentaks biçimi Javadoc aç klamalar için kullan r, * HTML biçimlendirme özelliklerini sunar. */ 31
Bilginizi s nay n te problem: Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU int ivar = 10; float fvar = 23.26f; // derleme zaman hatas verir ivar = ivar * fvar Hangi çözüm en iyi çal r? 1 ivar = (int) (ivar * fvar) 3 4 ivar = ivar * (int) fvar ivar = (int) ((float) ivar * fvar) 230 232 232 2 ivar = (int) ivar * fvar Ayn derleme hatas
Bir Java s n anatomisi Package Import(s) Comments(aç klamalar) Declaration(bildirim) Fields(alanlar) Constructors(yap lar) Methods(metotlar) 33
Metotlar Bir metot isimlendirilmi bir dizi komutlardan olu ur ve bir nesnenin istedi iniz bir i lemi yapmak için gerçekle tirmesi gereken faaliyettir. Metotlar n bir imzas /signature vard r:bu imza bir isim ve s r veya daha fazla say da parametreden olu ur Metotlar geri döndürdükleri bir veri yap tan mlarlar(primitive veya object veya void) 34
Metotlar Genelde mümkün oldu unca k sa tutulur Yap lar/constructors nesnenin ilk olu um durumunda alaca de erleri belirleyen metottur. Yap lar ve di er metotlar a yüklenebilir. overloaded Yap lar ve di er metotlar eri im özelli i belirtebilirler(accessibility modifiers) 35
Java Metodlar hem prosedürler hem de fonksiyonlar için tek bir yap : fonksiyon tan mlamas yap ld zaman geri dönü de erinin türü belirtilmesi gerekir. public float average (float num1, float num2, float num3) { float answer; answer = (num1 + num2 + num3)/ 3; return (answer); } // of average
Java kural : Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU Metod Yaz --Her metod bir nesneye aittir ya da bir s fa. --Bir metod ça ld zaman hangi s fa ya da nesneye ait oldu u kesin belli olmal r. --Bir uygulamay çal rabilmek için program n ayn ad nda bir s f ve bu n içinde de main metodu bulunmal r. Komut sat parametreleri için Herkese aç k Geri dönü de eri yok public static void main (String[ ] argv) f metodu oldu unu belirtir, üye metodu de il Metod ad
class A { } class B { } public static void main(... public static void main(... Öyleyse, her s f kendi main metoduna sahip olabilir. Bunlardan hangisinin çal aca na siz karar vereceksiniz. class C { } public static void main(...
Metod mzalar Metod imzas, metod ad, parametre say ve türleridnen olu ur. Herhangi bir s f ayn imzaya sahip iki metod tan mlayamaz, yoksa derleme zaman hatas olu ur. Ayn isme sahip metodlar farkl varyasyonlarda parametrelere sahip olurlarsa Method overloading meydana gelir. public int getcube(int num){ return num*num*num; } public int getcube(float num){ return (int)(num*num*num); } public int getcube(double num){ return (int) (num*num*num); } Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
Metodlarda yap lan genel hatalar public float average (float num1, float num2, float num3); { float answer; answer = (num1 + num2 + num3)/ 3; return (answer); } // average ; Noktal virgül hakk nda -- E er yukar daki gibi bir kullan m söz konusu olursa metod abstract metod gibi görünebilir. -- Çözümlenmesi zor bir hata mesaj ile kar la labilir. -- Çok kolay yap lan hatalardan biridir.
Veri ve metodlar birlikte bir s fa aittir. u anda sadece, de kenlerin ve metodlar n s flara ait oldu unu bilmeniz yeterli. Daha sonra, bu özelli i kullanarak durumlar (de ken), davran larla (behaviour) nas l sarmalan r görece iz...
Yap lar Yap lar s fa ait yeni nesneler s f tan ndaki kal p kullan larak üretilirken ba vurulan mekanizmalard r. Yap n amac yeni nesneye ilk de erlerini atamakt r. Yap lar metotlara benzer ancak Her zaman isimleri s f ismiyle ayn olmak zorundad r Hiçbir zaman d ar ya bir de er döndürmezler 42
Yap lar Bir yap metot ça rmak için new lemi kullan r ve gerekli parametreler verilir. Her s f varsay lan bir yap ya sahiptir: public ClassName() {} bu yap n parametresi yoktur ve herhangi bir ilk de er atamaz. 43
Yap lar er siz bir tane tan mlamazsan z, Java sizin için parametresi olmayan varsay lan bir yap otomatik olarak olu turur. er siz parametreli veya parametresiz bir yap metot yazarsan z, Java sizin ne yapt n fark nda oldu unuzu varsayarak herhangi bir yap tan mlamaz. 44
Yap lar: Ba ucu kurallar Hat rlatma: Bir yap n amac yeni üretilmi bir nesneyi bilinen bir ilk duruma getirmektir. Yap lar çok fazla i lem yapmamal r Nesneye ilk de er atama i lemi ile nesnenin davran lar kesinlikle birbirinden ay rmak gerekir. 45
Nesneler Bir nesne de kenler ve ili kili metotlar yaz m paketidir. - Java Tutorial Her ey ya temel bir veri yap ya da bir nesnedir. Nesneler: Gerçek dünyadaki fiziksel elemanlar n modeli (Ö renci gibi) veya Soyut elemanlar olabilir (Dersler, Seçimler, Finansal lemler gibi) 46
Nesneler Java da temel bir veri bildirimi yap lmas yla bellekte o veri için uygun yer ayr r Ancak bir nesne bildirimi yap nca bellekte o nesneye (veya o nesneden türetilen bir tipe) eri imi sa layacak referansa (reference) de keni için yer ayr r. 47
Nesneler Nesneyi tutacak de ken bildirimi yapmakla nesne üretilmi olmaz. Nesne örne i için bellekte yer ayr lmas dinamik olarak new operatorü kullan larak gerçekle ir. Nesne tipleri istenilen ekilde olu turulur. 48
49
50
51
52
53
54
55
56
De ken(alanlar) / Variable (Fields) Yerel De kenler/local Variables Bir metot veya küçük bir blok kodu içerisinde bildirimi yap lan ve sadece o alanda kullan lan de kenlerdir. Örnek/nesne de keni/instance variables yi bir Java s nda hemen hemen bütün de kenlerin örnek veya yerel de ken olmas gerekir. Her nesne(instance) alanlar n kendine ait bir kopyas na sahiptir. 57
De ken(alanlar) f de kenleri/class variables Bir alan ad veya de keni static anahtar kelimesiyle nitelenirse bu de ken bir s f de keni olur: Bu s ftan kaç tane nesne üretilirse üretilsin bu tür de kenlerden sadece bir tanesi için yer ay r. Bütün nesneler bu s f de kenini payla rlar. 58
f De kenlerini Kullanma Java da s f de keni bildirimi yapmak için iki iyi sebep vard r: static final bir sabit olarak kullanmak private static de ken olarak nesneler aras nda bilgi payla sa layan özel bilgi eleman olarak kullanmak 59
Problem Tan CS Student Kay t modeli: renci isimlerinin komut sat ndan girilmesine izin verilecek renci çiftleri lab için e lenecek. Tek say da renci olmas durumunda bir ki i e siz kalacak. renciler ve varsa labdaki arkada kay t ras n tersi olacak ekilde listelenecek 60
flar, Alanlar, Metotlar ve Nesneler 61
Eri im Bir Java s yaz rken, programc metotlara ve de kenlere ar dan nesnelerin ne ekilde müdahale edebilece ini kontrol etmek için baz eri im niteleyicileri belirtebilir. C++ dan farkl olarak, her bir metot veya alan için ayr eri im niteleyicisi kullan labilir. 62
Eri im public Bütün d nesneler public metotlar ça rabilir. Bütün d nesneler public alanlar de tirebilir. private Metotlar sadece o s f içindeki metotlar taraf ndan ça labilir- alt s flar da bunlar kullanamaz. Alanlar sadece o s f içindeki metotlar taraf ndan kullan labilir- alt s flar da bunlar kullanamaz. 63
Eri im protected Metotlar sadece o s f içindeki metotlar ve alt s f metotlar taraf ndan ça labilir. Alanlar sadece o s f içindeki metotlar ve alt s f metotlar taraf ndan kullan labilir. "Package eri im Ba ka bir eri im niteleyicisi kullan lmazsa varsay lan niteleyicidir: Ayn paket içerisinde bulunan s flara ait nesneler bu metotlar ça rabilir. Ayn paket içerisinde bulunan s flara ait nesneler bu alanlar kullanabilir. 64
65 Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
Temel veri türlerinden Diziler Anafikir: Daha önce ö rendiklerinize benzer Yaz mda baz farkl klar vard r Java da dizi bildirimi: Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU <VeriTürü>[ ] <DiziAd > = new <VeriTürü>[<boyut>]; örnek: 10 adet tamsay türündeki notu tutmak için tamsay türünden 10 elemanl bir dizi olu tural m: int[ ] notdizisi = new int[10]; Dizi bildirim hatas : kö eli parantez yerine normal parantez kullanmak: int[ ] igradearray = new int(10);
Detaylar Sentaks biraz garip gelebilir çünkü diziler de birer nesnedir. Nesneleri anlatmaya ba lay nca detayl olarak inceleyece iz... int[ ] igradearray = new int[10]; int igradearray[ ] = new int[10];
Diziler Örnek: 10 adet tamsay türündeki notu tutmak için tamsay türünden inotdizisi ad nda 10 elemanl bir dizi olu tural m dizinin bütün de erlerine 0 de erini atayal m int[ ] inotdizisi = new int[10]; int i; /* dizi i lemlerinde indis yani kontrol de keni olarak i,j,k gibi geleneksel olarak herkes taraf ndan kullan lan ve tan nan de iken isimleri kullan n. */ for (i=0; i < inotdizisi.length; i++) { inotdizisi[i] = 0; } // for döngüsü Güzel dü ünce! Dizinin boyutunu de tirdi inizde, sadece for imza yap n içini de tirmeniz yeterli. Not: Diziler kendi uzunluklar bilirler length bir özelliktir, metod de il Dizi uzunluklar sabittir, bildirim yap ld ktan sonra bir daha de tirilemez. Bütün diziler nesnedir, bu nedenle bir referans de keni bi ldirimi yapmal, nesneyi olu turmal ve ilk de erini atamal z(declare a reference, instantiate, initialize)
Notlar: Dizi indisi her zaman 0 dan ba lar 1 den de il Öyleyse, length yani dizi uzunluk de eri indisin maksimum alaca de erden say sal olarak 1 fazlad r Bu nedenle, e er a daki gibi yaparsan z hata yapars z: Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU Diziler int[ ] igradearray = new int[10]; int i; for (i=1; i <= igradearray.length; i++) { igradearray[i] = 0; } // for loop Yukar daki program kodunda dizinin 1 den 10 a kadar olan elemanlar na eri ilmeye çal yor Ancak dizinin indis numaralar 0..9 aral ndad r Öyleyse: dizini ilk eleman olan 0 indis olan kaç yor ve dizinin 10 indis numaral eleman na eri meye çal yorki ne böyle bir indis mevcut ne de diziye ait böyle bir alan.