nesneye yönelik programlama-java, ders sorumlusu yrd.doç...

69
1 Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KUúÇU

Upload: dinhlien

Post on 07-May-2019

244 views

Category:

Documents


0 download

TRANSCRIPT

1

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

2

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

3

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

4

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

5

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

6

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

7

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

8

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

9

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

10

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

11

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

12

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

13

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

14

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

15

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

16

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

17

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

18

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

19

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

20

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

21

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

22

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

23

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

24

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

25

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

26

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

27

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

28

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

29

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

30

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

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

49

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

50

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

51

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

52

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

53

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

54

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

55

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

56

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

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

65

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

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