nesneye yönelik programlama-java, ders sorumlusu yrd.doç...
TRANSCRIPT
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 sonugözetmeksizin aç klama olrak kabul edilir.
/*** Bu sentaks biçimi Javadoc aç klamalar için kullan r,
* HTML biçimlendirme özelliklerini sunar.
*/
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
31
13/11/2009 devam
Bilginizi s nay nte problem:
int iVar = 10;float fVar = 23.26f;
// derleme zaman hatas veririVar = iVar * fVar
• Hangi çözüm en iyi çal r?
iVar = (int) iVar * fVar
iVar = (int) (iVar * fVar)
iVar = iVar * (int) fVar
1
2
3
iVar = (int)((float) iVar * fVar)
4
232
Ayn derleme hatas
232
230
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
Bir Java s n anatomisi
PackageImport(s)Comments(aç klamalar)Declaration(bildirim)Fields(alanlar)Constructors(yap lar)Methods(metotlar)
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
33
Metotlar
Bir metot isimlendirilmi bir dizi komutlardanolu ur ve bir nesnenin istedi iniz bir i lemiyapmak için gerçekle tirmesi gereken faaliyettir.Metotlar n bir imzas /signature vard r:Bu imza birisim ve s r veya daha fazla say da parametredenolu urMetotlar geri döndürdükleri bir veri yaptan mlarlar(primitive veya object veya void)
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
34
Metotlar
Genelde mümkün oldu unca k sa tutulurYap lar/Constructors – nesnenin ilk olu umdurumunda alaca de erleri belirleyen metottur.Yap lar ve di er metotlar a yüklenebilir. over-loadedYap lar ve di er metotlar eri im özelli ibelirtebilirler(accessibility modifiers)
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
35
hem prosedürler hem de fonksiyonlar için tek bir yap :
• fonksiyon tan mlamas yap ld zaman geri dönü de erinintürü belirtilmesi gerekir.
public float average (float num1, float num2, float num3){
float answer;answer =
(num1 + num2 + num3)/ 3;return (answer);
} // of average
Java MetJava Metodlarodlar
MetodMetod YazYazJava kural :
--Her metod bir nesneye aittir ya da bir s fa.--Bir metod ça ld zaman hangi s fa ya da nesneye ait oldu u kesinbelli 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.
f metoduoldu unu
belirtir, üyemetodu de il
Herkeseaç k
Geri dönüde eri yok
Metod ad
Komut satparametreleri için
public static void main (String[ ] argv)
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
class A{
public static void main(...}
class B{
public static void main(...}
class C{
public static void main(...}
Öyleyse, her s fkendi main
metoduna sahipolabilir. Bunlardan
hangisininçal aca na siz karar
vereceksiniz.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
Metod mzalar“Metod imzas , metod ad , parametre say ve türleridnen olu ur. Herhangibir s f ayn imzaya sahip iki metod tan mlayamaz, yoksa derleme zamanhatas olu ur.
Ayn isme sahip metodlar farkl varyasyonlarda parametrelere sahipolurlarsa 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 hatalarpublic 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 gibigörünebilir.-- Çözümlenmesi zor bir hata mesaj ile kar la labilir.-- Çok kolay yap lan hatalardan biridir.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
Veri ve metodlar birlikte bir s fa aittir.
u anda sadece, de kenlerin ve metodlar n s flara ait oldu unu bilmenizyeterli.
Daha sonra, bu özelli i kullanarak durumlar (de ken), davran larla(behaviour) nas l sarmalan r görece iz...
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
Yap larYap lar s fa ait yeni nesneler s ftan ndaki kal p kullan larak üretilirkenba vurulan mekanizmalard r.
Yap n amac yeni nesneye ilk de erleriniatamakt r.Yap lar metotlara benzer ancak
Her zaman isimleri s f ismiyle ayn olmakzorundad rHiçbir zaman d ar ya bir de er döndürmezler
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
42
Yap lar
Bir yap metot ça rmak için new lemikullan r ve gerekli parametreler verilir.Her s f varsay lan bir yap ya sahiptir:
public ClassName() {}
bu yap n parametresi yoktur veherhangi bir ilk de er atamaz.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
43
Yap lar
er siz bir tane tan mlamazsan z, Java sizin içinparametresi olmayan varsay lan bir yapotomatik olarak olu turur.
er siz parametreli veya parametresiz bir yapmetot yazarsan z, Java sizin ne yapt nfark nda oldu unuzu varsayarak herhangi biryap tan mlamaz.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
44
Yap lar: Ba ucu kurallar
Hat rlatma: Bir yap n amac yeniüretilmi bir nesneyi bilinen bir ilk durumagetirmektir.Yap lar çok fazla i lem yapmamal rNesneye ilk de er atama i lemi ilenesnenin davran lar kesinliklebirbirinden ay rmak gerekir.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
45
Nesneler
“Bir nesne de kenler ve ili kili metotlaryaz m paketidir. “- Java TutorialHer ey ya temel bir veri yap ya da birnesnedir.Nesneler:
Gerçek dünyadaki fiziksel elemanlar n modeli (Ö rencigibi) veya
Soyut elemanlar olabilir (Dersler, Seçimler,Finansal lemler gibi)
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
46
Nesneler
Java’da temel bir veri bildirimi yap lmas ylabellekte o veri için uygun yer ayr rAncak bir nesne bildirimi yap nca bellekteo nesneye (veya o nesneden türetilen birtipe) eri imi sa layacak referansa(reference) de keni için yer ayr r.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
47
NesnelerNesneyi tutacak de ken bildirimiyapmakla nesne üretilmi olmaz.Nesne örne i için bellekte yer ayr lmasdinamik olarak new operatorükullan larak gerçekle ir.
Nesne tipleri istenilen ekildeolu turulur.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
48
De ken(Alanlar) / Variable (Fields)Yerel De kenler/Local Variables
Bir metot veya küçük bir blok kodu içerisindebildirimi yap lan ve sadece o alanda kullan lande kenlerdir.
Örnek/nesne de keni/Instance variablesyi bir Java s nda hemen hemen bütünde kenlerin örnek veya yerel de ken olmasgerekir.Her nesne(instance) alanlar n kendine ait birkopyas na sahiptir.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
57
De ken(Alanlar)
f de kenleri/Class variablesBir alan ad veya de keni static anahtarkelimesiyle nitelenirse bu de ken bir s fde keni olur:Bu s ftan kaç tane nesne üretilirse üretilsinbu tür de kenlerden sadece bir tanesi içinyer ay r.Bütün nesneler bu s f de kenini payla rlar.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
58
f De kenlerini Kullanma
Java’da s f de keni bildirimi yapmakiçin iki iyi sebep vard r:static final bir sabit olarak kullanmakprivate static de ken olarak nesneleraras nda bilgi payla sa layan özel bilgieleman olarak kullanmak
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
59
Problem Tan –CS Student
Kay t modeli:renci isimlerinin komut sat ndan
girilmesine izin verilecekrenci çiftleri lab için e lenecek. Tek say darenci olmas durumunda bir ki i e siz
kalacak.renciler ve varsa labdaki arkada kay t
ras n tersi olacak ekilde listelenecek
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
60
flar, Alanlar, Metotlar veNesneler
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
61
Eri im
Bir Java s yaz rken, programcmetotlara ve de kenlere ar dannesnelerin ne ekilde müdahaleedebilece ini kontrol etmek için bazeri im niteleyicileri belirtebilir.C++’dan farkl olarak, her bir metot veyaalan için ayr eri im niteleyicisikullan labilir.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
62
Eri impublic
Bütün d nesneler public metotlar ça rabilir.
Bütün d nesneler public alanlar de tirebilir.
privateMetotlar 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 ndankullan labilir- alt s flar da bunlar kullanamaz.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
63
Eri improtected
Metotlar sadece o s f içindeki metotlar ve alt s f metotlartaraf ndan ça labilir.Alanlar sadece o s f içindeki metotlar ve alt s f metotlartaraf ndan kullan labilir.
"Package eri im”Ba ka bir eri im niteleyicisi kullan lmazsavarsay lan niteleyicidir:Ayn paket içerisinde bulunan s flara ait nesneler bumetotlar ça rabilir.Ayn paket içerisinde bulunan s flara ait nesneler bu alanlarkullanabilir.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
64
Temel veri türlerinden DizilerAnafikir:Daha önce ö rendiklerinize benzerYaz mda baz farkl klar vard r
Java ‘da dizi bildirimi:<VeriTürü>[ ] <DiziAd > = new <VeriTürü>[<boyut>];
örnek: 10 adet tamsay türündeki notu tutmak için tamsaytü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);
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
Detaylar
Sentaks biraz garip gelebilir çünkü dizilerde birer nesnedir.Nesneleri anlatmaya ba lay nca detaylolarak inceleyece iz...
int[ ] iGradeArray = new int[10];int iGradeArray[ ] = new int[10];
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
Örnek:• 10 adet tamsay türündeki notu tutmak için tamsay türünden iNotDizisi ad nda 10elemanl 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 olaraki,j,k gibi geleneksel olarak herkes taraf ndan kullan lan vetan nan de iken isimleri kullan n. */for (i=0; i < iNotDizisi.length; i++) {
iNotDizisi[i] = 0;} // for döngüsü
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 veilk de erini atamal z(declare a reference, instantiate, initialize)
DizilerDiziler
Güzel dü ünce!Dizinin boyutunude tirdi inizde,sadece for imzayap n içinide tirmeniz yeterli.
Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU
Notlar:• Dizi indisi her zaman 0 ‘dan ba lar 1 ‘den de il• Öyleyse, length yani dizi uzunluk de eri indisinmaksimum alaca de erden say sal olarak 1 fazlad r• Bu nedenle, e er a daki gibi yaparsan z hatayapars z:
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 naeri 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 indisnumaral eleman na eri meye çal yorki ne böyle bir indis mevcut ne de diziyeait böyle bir alan.
DizilerDizilerNesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU