You are on page 1of 65

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.

Hilmi KUU

JAVA PROGRAMLAMA DL Java, Sun Microsystems tarafndan gelitirilen nesne ynelimli bir programlama dilidir. A (network) ortam dnlerek ve yazlmn platform bamsz olarak almas (deiik bilgisayar trlerinde ve deiik iletim sistemlerinde almas) dnlerek gelitirilmitir. Bu nedenle, dier dillerden farkl olarak, ayn zamanda kendisi de bir platformdur. Java teknolojisi, C++n dezavantajl olan yanlarnn Smalltalk, Eiffel, Objective C gibi dillerle desteklenmesi sonucu, ilk olarak 1995 ylnda ortaya kt. lk olarak 1.0 srm kartld. Ardndan srasyla 1.1 ve 1.2 srmleri kartld ve 1.2 srmyle birlikte gelen ciddi deiikler, bu dilin Java 2 olarak anlmaya balamasna neden oldu. u anda yaygn kullanlan srmn Java 1.4.2 olmasnn yannda Java 5.0 da karlm durumda ve yeni srmleri kmaya devam etmektedir. Java uygulamalarnz yazmak iin, Notepad gibi bir program dnda zel olarak gelitirilmi grsel arayze sahip olan programlar da vardr. Bu tr programlarda, kodlar hem yazar, hem derler hem de altrabilirsiniz. rnek: Eclipse Platform (free platform), Java Builder (BORLAND), Net Bean (SUN), Visual Age (IBM), vb.

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

Java diliyle birok uygulama gelitirmek mmkndr: Grafiksel Kullanc Arayz (Graphical User Interface: GUI) uygulamalar, Appletler, Datlm bileenler (EJB, RMI, CORBA, vb.), Web tabanl uygulamalar (Servlet, JSP, vb.), Veritaban eriimli uygulamalar, Cep telefonu, Akll kart uygulamalar. Java platformlar: Standart Java Enterprise Java Gml cihazlar (embedded devices) iin Java

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

JAVA NASIL ALIIR? Java kodlar, Notepad gibi basit bir kelime ilemci program ile yazlr. Yazlan kodlar, .java uzantsyla kaydedilir. Bu haliyle kodlar metin halindedir. Bu kodlarn almas iin nce derlenmeleri gerekir. Derlemek iin, bir derleyici gerekir. Bunun iin J2SE SDK (Java 2 Platform Standart Edition Software Development Kit) yklenmi olmas gerekir. J2SEde derlenen kodlar, .class uzantl hale gelir. Bu haliyle kodlar ikili kod (binary code) eklindedir. Derlenen kodlar, altrlmak iin Java Virtual Machine (JVM) ad verilen ortama yklenir. JVM, J2SEnin iinde bulunmaktadr. Derlenen dosya altrldnda, kodlardan istenilen ilemler gerekletirilir; uygulama alm olur.

Derleme iin yazlan kod: altrma iin yazlan kod: javac *.java java * Derlenen kodlar altrlmak zere JVMe yklenirken; snflar yklenir, byte kodlarn kontrol yaplr ve yorumlama balar.
3

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

JVM, Java dilinin iletim sistemi tarafndan anlalmasn salar. Bu sayede, Java ile yazlan bir program herhangi bir iletim sisteminde alr hale gelir. JVM, bir anlamda sanal bir iletim sistemi gibi dnlebilir. JVM ykl olmayan iletim sistemlerinde, Java kodlar almaz. Bu nedenle, Flash programnda hazrlanan .swf dosyalarnn almas iin Flash oynatcsnn gerekmesi gibi, Java uygulamalarnn almas iin de sisteme JVM yklenmesi gerekir. Gnmzde baz tarayclar JVM destekli olarak gelitirilmitir. letim sistemine gre, kullanlan JVM tr de deiebilir.

KAYNAK NERLER: Java ile Temel Programlama, Bora Gngren, Sekin Yaynclk Java Uygulamalar, David Flanagan, Pusula Yaynclk Just Java, Peter van der Linden, Prentice Hall Java in a Nutshell, David Flanagan, OReilly http://tr.sun.com/training/courses
4

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

JAVA UYGULAMALARINDAN BR RNEK: APPLET UYGULAMALARI Appletler, Javann ilk uygulamalarndandr. Appletler, tarayclarda altrlan mini programlardr. HTML ile bir arada kullanlrlar. Ancak, gnmzde applet ile birlikte farkl script dilleri de kullanlmaktadr: JavaScript, VBScript vb. PROGRAMLAMA DLLER Java, nesne ynelimli bir programlama dilidir. Javann zelliklerini incelemeden nce, nesne ynelimli olma kavramn programlama dillerinin tarihine bakarak incelemek yerinde olur. Gelitirilen yksek seviyeli ilk programlama dili, 1956 ylnda IBM tarafndan gelitirilmi olan FORTRAN dilidir. Fortran 1958 ylnda ALGOL ve COBOL dilleri izler. 1960l yllarda CPL, BCPL, Simula gibi eitli diller de tasarlanmtr. 1970 ylnda, C programlama dili ve 1972 ylnda PASCAL programlama dili tasarlanmtr. Bu diller, yapsal diller olarak adlandrlr. Bu dillerdeki algsal karmakl ortadan kaldrmak amacyla, 1980 ylndan itibaren nesne ynelimli programlama gelitirilmeye balanmtr. C++, 1980li yllarn ilk yarsnda tasarlanmtr. Nesne ynelimli ilk programlama dili olduu sylenebilir. Java ise, C++n dezavantajl olan yanlarnn Smalltalk, Eiffel, Objective C gibi dillerle desteklenmesi sonucu, ilk olarak 1995 ylnda ortaya kt.
5

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

Yapsal programlama dillerinde, veriler ve metotlar ayr ayr tutulur. Veriler veri yaplarna gnderilir; kod bloklar metotlara ve/veya fonksiyonlara gnderilir. Dolaysyla, yapsal programlama gelitirmede, fonksiyonlara bamllk ve kodlar takip etme zorluu gibi dezavantajlar ortaya kar. Yapsal programlama gelitirme srecinde: fonksiyonlar belirlenir fonksiyonlar arasndaki ilikiler belirlenir fonksiyonlarn zellikleri belirlenir

nceki slayttaki rnekte, ok bilinen bir oyun olan tula oyununa ait yazlmn yapsal bir dille gelitirilmesi iin tasarlama srecine ait plan yer almaktadr. Her kutu, belli bir fonksiyonu iaret eder. Kutular aras oklar, fonksiyonlar arasndaki ilikileri temsil eder. Fonksiyonlar, zellikleri belirlenmi olan ilemlerdir. Nesne ynelimli programlama gelitirmenin en nemli zellii, nesnelerin kullanmdr. Grselletirilebilen, kavramsallatrlabilen veya modellenebilen her ey nesne olabilir. rnek: mteri bilgileri, mteriler, hesaplar, para, vb. renciler, notlar, dersler, vb. rnler, rn bilgileri, stok bilgileri, marketler, vb. Nesneler, gerekletirilecek olan ilem kendisine bildirildiinde tepki verirler ve bir cevap dndrrler. Gerekletirilecek ilemi mesaj; mesaj alan nesneyi de alc olarak adlandrabiliriz. Mesaj alcya gnderilir ve alc mesaja tepki verir. lem bu ekilde gerekletirilir. rnek: ilkAraba.renkVer(); (ilkAraba nesnesine, renkVer ilemi bildirilir.)
7

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

Nesneler, veri ve metotlar ierir. Veri, bir snfn sahip olduu zelliklerdir. Metot ise, bir snfn sahip olduu ilemlerdir. rnek: ilkAraba.renkVer(); (ilkAraba nesnesi, bir araba olduu iin tekerlek, direksiyon, renk vb. verilerine sahiptir. renkVer metodu ilkAraba nesnesi iin tanml olduundan, ilkAraba nesnesi renkVer metoduna sahiptir.) Nesneler belirli zellikler tarlar ve ortak zelliklerine gre snflandrlrlar. Snflandrlm bir nesne grubunun zelliklerini tayan nesne ablonuna snf denir. Baka bir deyile snf, belirli zelliklere sahip olan nesneler iin bir ablondur. Her snf, kendisine ait olan verileri ve metotlar tanmlar. Bir snfa ait olan zellikleri tayan belirli tipte bir nesnesi, o snfn bir rnei olarak adlandrlr. rnek: Araba bir snfsa: ilkAraba, bir rnektir. ilkArabann renk zellii, bir veridir. renkVer, ilkArabann rengini belirleyen bir metottur.
8

Bu rnek zerinden gidersek, bir araba renk, direksiyon, kap, tekerlek, vb. gibi zelliklere ve ileri gitme, geri gitme, durma, silecek altrma, vb. gibi ilemlere sahiptir. Dolaysyla bu zelliklere ve ilemlere sahip olan bir snf tanmlar ve adn da Araba koyarsak, tm bu zellikler Araba snfnn birer verisi; tm ilemler de birer metodu olur. Bu snfa ait bir rnek tanmlar ve adna da ilkAraba dersek, bu rnek de ait olduu snfn tm verilerine ve metotlarna sahip olacaktr. Burada nemli olan, bir snf tanmlarken o snfn verilerini ve metotlarn doru ve eksiksiz tanmlamaktr.

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

Nesne ynelimli programlama gelitirme srecinde: nesneler belirlenir nesneler arasndaki ilikiler belirlenir nesnelerin zellikleri belirlenir

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

Yukardaki rnekte, yine tula oyununa ait yazlmn bu kez nesne ynelimli bir dille gelitirilmesi iin tasarlama srecine ait plan yer almaktadr. Her elips, belli bir nesneyi iaret eder. Elipsler aras oklar, nesneler arasndaki ilikileri temsil eder. Nesneler, zellikleri belirlenmi snflara ait olan rneklerdir.

10

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

JAVANIN YAPISI

NESNE YNELMLDR Gerek hayattaki nesneler, Javada temsil edilebilir. rnek: renci, ders, retmen, not Javann szdizimi C++n szdizimine benzer; ama nesneye dayal bir programlama dilidir. Nesneye dayal tasarm ve mimarisi; Smalltalk, Eiffel, Objective C gibi nesne ynelimli dillerden tretilmitir. SZDZM Szdizimi, C ve C++nkine benzer. C++n aadaki zellikleri Javada yoktur: areti (pointer) aritmetii Otomatik tip deitirme Typedefs, Defines, Pre-processor, Enums Structures, Unions Fonksiyonlar oklu kaltm Kullancnn tanmlad Overloading Operatrler
11

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

PLATFORM BAIMSIZDIR (MMAR OLARAK NTRDR) Java programlar platformdan bamszdr. Java derleyicisi, kaynak kodu byte kod komutlarna evirir. Byte kod komutlar, Java Virtual Machine (JVM) tarafndan yrtlr. JVM, zel bir yazlmdr. Bilgisayarn iletim sistemi ile kendi zerinde alan Java uygulamas arasnda bir katman olarak yerini alr. Bu ekilde, iletim sisteminin hafzasn igal etmez. TAINABLRDR Java, Bir kere yaz, her yerde altr. ilkesine %100 uyar. Javann iletim sistemine baml deildir: Java, bir tamsaynn boyut ve aritmetik davrann kendisi belirler; bu ii alt makineye/iletim sistemine brakmaz. DAITIKTIR Java TCP/IP a yeteneklerine sahiptir. rnek: HTTP, soket, vb. RMI (Remote Method Invocation) ve EJBs (Enterprise Java Beans) kullanarak, bir JVMdeki nesneler, dier bir JVMdeki nesnelerle haberleebilir. CORBA kullanarak, Java nesneleri baka nesnelerle haberleebilir.
12

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

13

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

14

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

Java platformu kurduktan sonra, C:\ deki bir dizininde Java klasr ve bu klasrn altnda da Java kaynak kodlarnz iin derleme ve altrma yapmanz salayan .exe dosyalar yer alacaktr. Java kaynak kodlarn Notepadde (ya da bir kelime-ilemci program) yazacaksnz. Java yorumlaycs, main() metodunu altrr. Dolaysyla altrmak istediiniz Java uygulamanzda bir main() metodunuz olmaldr. main() metodu aadaki gibi tanmlanr: public static void main(String[ ] args){ // kodlar buraya yazlr }

Java kaynak kodlar, .java uzantl olarak kaydedilir. Eer Notepad dnda bir kelime-ilemci kullanyorsanz, dosyanz salt metin (text only) seenei ile kaydetmeniz gerekir. Java kaynak kodlarn derlemek ve altrmak iin DOS (Windows iletim sistemi zerinde MS-DOS) ortamnda alacaksnz. Java kaynak kodlarn derlemek iin, bu kodlar iin Java derleyicisini altrmanz gerekir:
15

javac Beykent.java (Beykent adl dosyanz iin derleme kod satr) Derleme sonunda (eer herhangi bir szdizimi hatas olmazsa) .class uzantl bir byte kod dosyas yaratlr. Bu kodlar altrmak iin Java yorumlaycsn altrmanz gerekir: java Beykent (Yine Beykent adl dosyanz iin altrma kod satr) altrma sonucunda, kodlarnzda belirttiiniz ilemin sonucu ekrana getirilir. KOD YAZMA, DERLEME VE LAITIRMA SRELERNDE DKKAT EDLMES GEREKENLER: 1. Tm Java kaynak kodlar .java uzantl olarak kaydedilmelidir. 2. Eer Notepad dnda bir kelime-ilemci kullanyorsanz, dosyanz salt metin (text only) seenei ile kaydetmeniz gerekir. 3. Her kaynak kod dosyas iin sadece bir public snf olmaldr. Dosyanza vereceiniz isim, bu snftan sonra yazlmaldr. 4. Eer derleme srasnda error: cannot read *.java (hata: *.java dosyas okunamyor) hata mesajn alrsanz, derleme kodunu Java kaynak kodu dosyanzn olduu dizinde altrdnz kontrol edin.

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

16

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

5. Eer derleme srasnda Java cannot find the class or package, (Java bu snf ya da paketi bulamad, ) hata mesajn alrsanz, CLASSPATHin (snfyolu) doru tanmlandn kontrol edin. CLASSPATH, bilgisayarnzn sistem yolunda (system path) aadaki gibi tanmlanm olmaldr: 6. Balat (Start) > Kontrol Panel (Control Panel) > Sistem (System) > Gelimi (Advanced) > evre Deikenleri (Environment Variables) > Yol (Path) > Deiken Deeri: (Variable Value:) ;dizininiz 7. [varsaylan deiken deerinin sonuna ; iareti koyduktan sonra Java derleyici dosyanzn (javac.exe) olduu dizini yazn.] 8. Eer derleme srasnda The name specified is not recognized (Belirtilen isim, olarak tannmad.) hata mesajn alrsanz, Java derleyici dosyas (javac.exe) iletim sisteminizde ykl deildir. J2SE platformunun kurulu olduunu/doru kurulu olduunu kontrol edin. 9. Derlenen kodlarnz altrrken .class uzants yazlmaz. 10. Sadece bir main() metodu olan snflar altrlabilir. 11. Kaynak kodunuzda birden fazla metot tanmlysa, balang kodunuzu main() metodunun olduu snfn iine yazmalsnz. Java yorumlaycs bu main() metodunu altrr.
17

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

18

rnek: Java kaynak kodu (Beykent.java):

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

public class Beykent{ public static void main(String[] args){ System.out.println(Beykent MYO, Bilgisayar Program); } }
VERI TIPLERI Java dilinde kullanlan veri tipleri, szdiziminin ve genel yapsnn ounu ald C++ dilinden gelir. C++ta ve dolaysyla Javada, temel veri tipleri ve snflar (referans/nesne veri tipleri) birbirinden ayrlmtr. Temel veri tipleri operatrler tarafndan ynetilir. Nesneler ise gnderilen mesajlar tarafndan ynetilir. Geri operatrlerden birka nesneleri de ynetir. Temel veri tiplerinin nesne olmad ve mesaj gnderemedii unutulmamaldr. Ancak, temel veri tipleri nesneler iinde yer alabilir.

19

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

20

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

21

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

22

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

23

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

24

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

25

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

26

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

27

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

28

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

29

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

30

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

31

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

32

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

33

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

34

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

35

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

36

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

37

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

38

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

39

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

40

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

41

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

42

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

43

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

44

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

45

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

46

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

47

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

48

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

49

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

50

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

51

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

52

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

53

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

54

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

55

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

56

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

57

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

58

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

59

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

60

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

61

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

62

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

63

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

64

Nesneye Ynelik Programlama-JAVA, Ders sorumlusu Yrd.Do.Dr.Hilmi KUU

65

You might also like