Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
BM-209 Nesne Yönelimli
Programlama
Yrd. Doç. Dr. İbrahim Alper Doğru
Gazi Üniversitesi
Teknoloji Fakültesi
Bilgisayar Mühendisliği Bölümü
2
Genel Bilgiler
Değerlendirme
Arasınav : %30
Proje, Sunum: %30 Ödevler : %10
Final : %30
Temel ders kitabıJava Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu, M. Özbayoğlu,
M. Erten, O. Ergin.
Java How to Program, P. Deitel, H. Deitel, Pearson Education, Int. Edition.
3
Genel Bilgiler
Ders konuları
1. Nesne Yönelimli Programlamaya Giriş
2. Java ve sanal makina kavramlarına giriş
3. Java Temel veri türleri, string, giriş/çıkış
4. Akış Kontrolü
5. Nesne Türleri, Nesne, Metodlar
6. Nesne ve Metodlar (Devam)
7. Diziler
8. Dizi Listeleri
9. Inheritance (Kalıtım)
10. Polymorphism (Çok çeşitlilik)
11. Exception Handling (Olağandışı durum işleme)
12. Grafik Uygulamaları
Bilgisayar Programları Nasıl Çalışır?
Bilgisayar programları kullanıcıdan giriş alır, bu girişlere göre verilerüzerinde işlemler yapılır. Gerekliyse sonuçlar arayüzde gösterilir.
Verilerin nerelerde saklanır: Kalıcı hafıza: Hard disk
Uçucu hafıza: RAM
I/O cihazları: monitor, klavye, kamera, yazıcı, mikrofon, hoparlör,gibi.
CPU: Bilgisayardaki tüm işlemlerin gerçekleştirilmesinde sorumlubeyin.
5
Kaynak: Yrd. Doç. Dr. Talha
KABAKUŞ,Android İşletim Sistemi,2018
Program Nedir?
Bilgisayarlar, bilgisayar programı denen komut setlerinin kontrolu altında verileri işlerler.
Bilgisayarda çalışan bilgisayar programlarına yazılım denir.
Program, günlük hayatta bir sorunu bilgisayar ile çözmek, rutin işlemleri kolaylaştırmak için yazılan yazılımlardır.
Kişinin program yazması için öncelikle Genel Programlama Bilgisine sahip olması gerekir. Peşinden bir Programlama Dili bilmek gereklidir.
Dil tercihi yazılacak programa, soruna ve platforma uygun olarak yapılabilir.
6
Programlama Dili Nedir?
Programlama Dilleri programcının bilgisayar programı yazarken kullandığı özel dillere denilmektedir.
Bir programlama dili, programcının bilgisayara ne yapmasını istediğini anlatılmasının standartlaştırılmış bir yoludur.
Programcı ilgili programlama dilinin söz dizimine(syntax) uymak zorundadır.
Her Programlama dili kendine ait söz dizimi vardır ve bir programı yazarken bu tanımlardan bir an için bile uzaklaşılamaz.
Yazılan bu programlar bir derleyici vasıtası ile Makine diline çevrilir varsa hataların bulunmasını sağlar ve kullanıcı bu hataları düzeltir.
7
Programlamanın Tarihçesi
Modern programlama dillerinin tarihi ilk elektrikli bilgisayarın yapıldığı 1940 yıllına kadar dayanır.
Belirli bir mikroişlemci için geliştirilmiş dillerden birisi de ASSEMBLY programlama dilidir.
1940-1950 yılları arasında programcılar oldukça fazla kodlanmış makine komutlarıyla programlarını yazıyorlardı. Plankalkul, ENİAC
Bu süreç içinde belli amaçlar ve alanlar için birçok üst düzey programlama dili geliştirildi: ADA, BASIC, FORTRAN, COBAL, PASCAL, PL/I, C, C++…
•1980-1990 yılları arasında üst düzey programlama dillerinin yaygın olarak kullanıldığı yıllar olmuştur.
•1990’li yıllar ve sonrası internetin yaşamımıza girmesiyle programlama dilleri gelişmiştir. JAVA (1991), JavaScript (1995), PHP (1995), C# (2001), vb…
8
9
Programlamanın Temelleri
Problemin veya amacın anlaşılması ve gerçekleştirmek için planlama yapılması gerekir.
Algoritma tasarımı
Algoritma, problemin çözümü için takip edilen adımlar, kurallar kümesi veya süreçtir.
Programın kodlanmasından önce problemin çözümü için adımların oluşturulması gerekir.
10
Programlamanın Temelleri
Başarılı bir programlama için aşağıdaki adımlar izlenmelidir:
Adım 1: Problemin anlaşılması, programın girişlerinin ve çıkışlarının belirlenmesi.
Adım 2: Problemin çözümü için gerekli bileşenlerin belirlenmesi.
Adım 3: Programın anahtar özelliklerinin belirlenmesi, akış diyagramın ve pseudo kodun oluşturulması.
Adım 4: Programın test edilmesinde her bir parçanın belirlenmesi ve test edilmesi.
Adım 5: Sonraki versiyonlardaki gereksinimlerin belirlenmesi ve önceki adımların tüm versiyonlar için tekrarlanması.
Programlama Dillerinin Seviyeleri
Bilgisayarlar gibi programlama dilleri de çeşitli süreçlerden geçerek çeşitli seviyelere ulaşmışlardır.
Yüksek seviyeli diller olarak adlandırılan diller insan algısına daha yakın, alçak seviyeli diller ise bilgisayarların doğal çalışmasına daha yakındır.
Alt seviyeli diller donanıma en yakın dillerdir. Donanım hesaba katılarak programlama yapılır. Daha fazla programcılık becerisi gerektirir. Örnek: Assembly, makine kodu..
Üst seviyeli diller donanıma en uzak dillerdir. Hatta donanım hakkında hiç bir bilgi bilmeyi bile gerektirmez. Hazır kütüphanesi, sınıfı ve fonksiyonu vardır. Java, C#, Delphi..
Programlama Dillerinin Seviyeleri
Programla dillerinde seviye yükseldikçe programcının kod yazma işide kolaylaşır.
Bilgisayarlar en temelde 0 ve 1’lerden oluşan kodlarıanlayabilmektedirler.Bir programcı yüksek seviyeli bir dilde kodyazdığında bu kodların bilgisayar tarafından yorumlanıp çalıştırılmasıiçin o kodların makine dilene çevrilmesi gereklidir.
Orta Seviyeli diller var ki bunlar hem donanıma hitap eder, hem deuygulama geliştirme de kullanılır. Aslında daha çok uygulamaprogramları ile makine arasında aracı görevi görür. Örnek: C, C++..
Orta Seviyeli diller Alt seviyeli diller ile yazılır.
C dili Makine kodu ve Assembly
Java Runtime, .Net Framework de C
12
Bilgisayar Programlarının Çalışma Prensibi
Yüksek seviyeli dille yazılmış kodun makinde diline çevrilmesinederleme denilmektedir. Bilgisayar Programlarının çalıştırılmasına dairişleyiş aşağıdaki şekilde gösterilmiştir.
13
Bilgisayar programların bir bilgisayar üzerinde çalıştırılması
Tipik bir programla dili yazılmış program ancak ve ancak programhangi makine üzerinde derlendiyse o tür makine üzerinde çalıştırabilir
Windows işletim sisteminde derlenmiş kod Linux işletim sistemindeçalıştırmayacaktır.
Java programlama bir istisnadır.
Programlama Dillerinin Türleri
Programlama türleri makine diline yakınlıktan, insan diline yakınlığına doğru derecelendirilir.
Makine Diliyle başlayan programlama, zamanla insan diline yaklaşan seyir izlemiştir.
En Temeli makinenin doğrudan anladığı Makine Dili iken, bugüne kadar insan diliyle programlama gerçekleştirilememiştir
Makine Dili Programlama
Bilgisayarın doğal dilidir.
Bilgisayarın donanımsal tasarımına bağlıdır.
Makine dili “010101001”’lerden oluşan komutlardır ve bunlar doğrudan makineye hitap eder.
Makine dili işlemci türüne özel olarak yazılmaktadır. Dolayısıyla, bir işlemci türü için makine diliyle yazılmış program, diğer işlemciler için uygun olmamaktadır.
Assembly Dili Programlama
Bilgisayar programlarının yazılmasında kullanılan altseviyeli bir dildir.
Assembly insanlar tarafından anlaşılması zor olanmakina dilinin sayısal ifadelerini, insanlar tarafındananlaşılarak programlanması daha kolay olan alfabetikifadelerle değiştirerek düşük seviyede programlamaiçin bir ortam oluşturur.
Bir assembly dil programı çevirici (Assembler) olarakadlandırılan faydalı bir program tarafından hedefbilgisayarın makine koduna çevrilir.
Yapısal Programlama
Yapısal programlamada problem çözümü daha kolay alt modüllere bölünür. Her bir alt modül daha düşük seviyedeki alt seviyelere bölünür.
Uzun ve karmaşık programların, modüllere ayrılarak daha kolay biçimde yazılabilmesini mümkün kılar.
Programcılar büyük kod parçalarını daha kısa ve dolayısıyla anlaşılırlığı yüksek alt yordamlar halinde yazarlar.
Yapısal Programlama
Aşağıdaki şekilde de görülebileceği gibi her bir modülün kolaylıklaçözülebileceği seviyeye kadar devam eder. En üst seviyede çözümünana mantığının sergilendiği ana modül yer alır. Alt seviyelere indikçeizlenecek adımlar ile ilgili ayrıntılar artar.
Hangi Programlama Dili?
İhtiyaca binaen geliştirilmiş çok sayıdaprogramlama dili mevcut
19
Kaynak: Yrd. Doç. Dr. Talha
KABAKUŞ,Android İşletim Sistemi,2018
İş Fırsatı İstatistikleri
20
Kaynak: https://dzone.com/articles/most-popular-programming-languages-of-2017
İyi Bir Yazılımın Özellikleri
Doğruluk (Correctness) : Bir yazılımı yazmaya başlamadan önce yazılımdan beklenenlerin belirlenmesi gerekir.
Yazılım ortaya çıktıktan sonra bu belirlenen özellikleri tam olarak sağlamalıdır.
Dayanıklık (Robustness) : Program iyi yönde bile olsakendinden beklenmeyen iş1emler yapmamalıdır.
Programcı hataları yüzünden kesintiye uğramaması içinönlemler alınmalıdır.
Genişleyebilme (Extendibility) : ileri aşamalarda verilengörevlerin değiştirelmesi veya yenilerinin ilave edilmesi kolayolmalıdır. Bunun için: basit tasarımlar yaparak karmaşık tasarımlardan kaçınmak gerekir (Design
simplicity).
mödüler bir vapı kullanarak yerel bir yönetim şekli seçilmesi gerekir (tekprogram var ise kontrol bir merkezinden etmek zorundayız) (Decentralization)
Tekrar kullanma (Reusability) : bir proje içinde kullanılan elemanların yeni bır projede kullanılabilmesini eklemek gerekir.
Uygunluk (Compatibility): farklı bilgisayar sistemlerinde aynıortak özzelliklere sahip olunması. Bunun için çeşitli standartlarıkabul etmek gerekir (veri dosya, veri yapı, ara yüzü – User Interface - için)
Kaynakların kullanımı (Efficiency): bilgisayarınızı en iyi şekilde kullanmak gerekyor.
İyi Bir Yazılımın Özellikleri
Nesne Yönelimli Programlama
Yazılım teknolojisindeki gelişme ve ilerlemeler; yapısal programlama, yapısal tasarım, yapısal analiz ile başlasa da nesne yönelimli analiz, tasarım ve programlama ile daha çok gelişme elde edilmiştir.
Nesneye yönelimli programlama gerçek dünyayı örnek almakta tıpkı gerçek dünyada olduğu gibi nesneler ve nesnelerin birbirleriyle iletimini sağlayan sistemler kurmaktadır.
Bu tarz yazılan yazılımlar, daha iyi organize ve anlaşılır oldukları için bakımları da çok kolay olmakta ve programcıya zaman ve maliyetten büyük tasarruf sağlamaktadır.
Nesne Nedir?
Sözlük anlamı “Belli bir ağırlığı ve hacmi, rengiolan her türlü canlı ve cansız varlık.” olan nesneçevremizi saran dokunabildiğimiz, görebildiğimizher şeydir.
Nesneye yönelimli Programlama gerçek dünyayıörnek almaktadır. Tıpkı gerçek dünyadaki gibinesneler vardır ve bir birleri arasında etkileşimiçerisindedirler.
Nesnenin Özellikleri
Gerçek hayatta olduğu gibi Nesne Yönelimli Programlama’da da herbir nesnenin özellikleri vardır.
Nesnelerin özelliklerinin tutukları değerler nesnenin o andaki durumuhakkında bilgi verirler.
Bu değerler değiştikçe nesnenin durumu da değişikliğe uğrar.
Nesnelerin özellikleri genellikle nesnenin içinde ya da dışında oluşanbir olayla değişir.
Şapka nesnedir, yeşil olması
özelliğidir.
Kapı nesnedir,
açık olması özelliğidir.
Nesnenin Eylemleri
Nesnenin var olmasındaki temel amaç diğer nesnelere dolayısıylasisteme katkı sağlamasıdır.
Sistemler nesnelerden oluşur ve sistemlerin işlevleri bünyelerindekinesnelerin eylemleri ile mümkündür.
Nesneler var oldukları sürece eylemlerde bulunurlar bu eylemlerdennesnenin kendisi ya da diğer nesneler etkilenirler.
Nesneler tasarlanırken ilk olarak sorulan bu nesne hangi eylemlerdebulunacak sorusudur.
Uçak bir nesnedir. Uçağın uçması bireylemdir.
Nesneler Arası İlişkiler
Nesneler, daima diğer nesnelerle ilişki içerisindedirler.
Bu ilişki nesneler arası iletişim şeklinde olabildiği gibi,yapısal ilişkilerde kurabilirler. Öyle ki bir nesne başka bir nesnenin parçası olabileceği gibi,
birden çok nesnenin birleşiminden de oluşabilir.
Örneğin bir araba tekerlekler, kapı. motor, koltuk gibi pek çoknesnenin bir araya gelmesiyle oluşmuş bir nesnedir.
Nesneler arası bu ilişkiye toplama (aggregation)denilmektedir.
27
Nesneler Arası İlişkiler
Nesneye Yönelimli bir uygulamada tüm veriler ve kodlamalarnesneler üzerinden yapılırlar bu nedenle iş birliği sözkonusudur.
Nesnelerin birbirleriyle işbirliği yapabilmesi için birbirleriyle ilişkiiçersisinde olmaları gerekmektedir.
Nesneler işbirliğini aralarında mesaj iletimiyle yaparlar. Mesajıalan nesne bu mesajı nasıl yorumlayacağını bilmekleyükümlüdür.
Mesajlar genellikle nesnenin bir eylemini gerçekleştirmesi içingerekli veriyi taşırlar.
28
Sınıf Nedir?
Nesneye yönelimli programlamada sınıf bir nesnenin tümözelliklerini ve eylemlerini tanımlayan şablondur.
Bir nesne oluşturulacağı zaman sınıfın verdiği bilgilerebakılır ve bu bilgiler doğrultusunda nesne oluşturulur.
Sınıflar nesnelerin ilk oluşumu sırasında gerekli olanbaşlangıç durumlarını da belirtirler.
Örneğin, bir marangozhanede masa imal etmek istendiğinde,oluşturmak istenilen masanın tüm özelliklerini sınıf olarakbelirtmemiz gerekir. Masa kaç ayaklı olacağı, yüksekliği, açılıpkapanabilirliği gibi zihinde çizilen masa modelini sınıfa yansıtmakgerekmektedir.
29
Java Programlama Dili
Java’nın ilk çıkışı PDA cihazlarıyla olmuştur. Sun Microsystems bu el cihazlarını üretiyordu.
Java, Sun Microsystems mühendislerinden James Gosling fikri;
C++ bir program yazdığınızda, 10 tane cihazınız varsa her seferinde derleyip yazmak zorunda kalıyordunuz.
O zaman bununla uğraşacağıma üstene yorumlayıcı birdil yazıyım. Programcılar ilgili programı ortak yazsınişlemciye göre çevirme işini Java Sanal Makinesi yapsındemiştir.
Bu fikirden sonra javanın temelleri atılmayabaşlanmıştır
30
Java Programlama Dili
Sınıflar ve nesneler Java programlamanın temelini oluştururlar. Javaile geliştirilmiş bütün uygulamalarda sınıf ve nesne kavramını kullanmak zorunluluğu vardır. Bu nedenle Java için saf(pure) nesne tabanlı programlama dillerinden biridir tanımını yapabiliriz.
Java, Sun Microsystems mühendislerinden James Gosling tarafından
1990’ların basında gelistirilmeye baslanmıs;
Açık kodlu,
Nesneye yönelik,
Platformdan bağımsız,
Yüksek performanslı,
Çok görevli,
Yüksek seviyeli,
Adım adım isletilen (yorumlanan - “interpreted”) bir dildir.
Java Programlama Dili
Programcı programı yazmakla yükümlüdür
Sun Microsystem’de Windows, Linux,Unix, Macintosh ve vb işletim sistemleri için Java Sanal
Makine yazmakmıştır.
Java programlama dilinde kaynak kodları bir düz metin dosyası üzerine kaydedilir.Bu dosyaların uzantıları “.java” olmalıdır.
Bu düz metin dosyaları javac derleyici tarafından derlenerek java bayt (byte) kodlarını içeren “.class” dosyaları üretilir
32
Java Programlama Dili
Java bayt kodları Java Sanal Makineleri üzerinde çalıştırılarak makine diline dönüştürülürler.
Bu Makine diline dönüştürülen kodlar bilgisayarlar üzerinde program olarak çalışırlar.Bu yapının gösterimi aşağıda verilmiştir.
33
Java programlarının bir bilgisayar üzerinde çalıştırılması
Java Sanal Makinası (Java Virtual Machine)
Birçok programlama dilinde derlenen program, bu işlemingerçekleştirildiği makinadaki komut setine göre bağlanır(linking).
Makinadaki komut seti işlemci mimarisine, işletim sisteminegöre değişmektedir.
Bu durumda derlenip bağlanarak yürütülebilir hale getirilenprogramlar sadece işlem yapılan makina üzerinde miçalışacaktır?
35
Kaynak: Yrd. Doç. Dr. Talha
KABAKUŞ,Android İşletim Sistemi,2018
Java – Temel Özellikler
Platform bağımsız
Kaynak programları çesitli bilgisayar sistemlerinde derlenip çalıstırılabilen diller “tasınabilir” (“portable”) olarak nitelendirilir.
Java ile yazılmıs programlar, her donanım/isletim sistemi platformunda benzer sekilde çalıştırılabilir.
“Bir kez yaz ve her yerde çalıstır” (“write once, run anywhere”)
Otomatik çöp toplama (“garbage collection”)
Dinamik bellek yönetimi: Java'da bir nesne olusturulduktan sonra o nesne ile isiniz bittiginde hiçbir sey yapmanız gerekmez; sanal makine akıllı bir biçimde kullanılmayan bellek bölümlerini belirli aralıklarla ya da tetiklenen yordamlarla otomatik olarak temizler ve sisteme iade eder.
Açık kaynak
Sun, Kasım 2006’da Java bilesenlerini, “GNU General Public Licence” altında açık kaynak olarak yayınladı.
39
Java Runtime Environment – JRE
•Java uygulamalarının bilgisayar üzerinde koşturulmasını sağlayan yazılımdır.
Kullanıcılar Java Çalıstırma Ortamınının son sürümünü java.com internet sayfasından yükleyebilir (http://www.java.com/tr/download/win8.jsp?locale=tr)
Java Çalıstırma Ortamı iki kısımdan olusur:
Java Sanal Makinesi (“Java Virtual Machine” - JVM)
Uygulama Programlama Arayüzü (“Application Programming Interface” –API)
Bir dizi standart kütüphane sağlar.
JVM ve API birbiriyle tutarlıdır ve bu yüzden JRE altında birlestirilmistir.
JRE’nin Java uygulamalarını çalıstıran sanal bir bilgisayar oldugunudüşünürsek; JVM islemci, API kullanıcı arayüzü olarak isimlendirilebilir.
40
Application Programming Interface – API
Java API, Java yazılımlarında kullanılan yazılım kütüphanelerine genel olarak verilen isimdir.
Java API ile disk, grafik, ağ, veri tabanı, güvenlik gibi yüzlerce konuda kullanıcılara erisim imkanı sunulur.
Java API, J2SDK’nın (“Java2 Software Development Kit”) bir parçasıdır.
Sun, farklı uygulama ortamlarını desteklemek için, farklı API’lar tanımlamıştır:
Java Platform, Micro Edition (Java ME): Avuçiçi aygıtlar gibi kısıtlı kaynaga sahip ortamlar için
Java Platform, Standard Edition (Java SE): Masaüstü bilgisayarlar ve is istasyonları için
Java Platform, Enterprise Edition (Java EE): Genis dagıtık sistemler ve web sunucuları için
41
Java kaynak dosyasının yapısı
Programlamada kodların yazıldığı dosyalara kaynak dosyası denilmektedir.
Java kaynak dosyaları .java uzantısıyla oluşturulurlar.
Java kaynak dosyaları oluşturulurken dikkat edilecek ilk kural, kaynak dosyasının içerisinde dosyayla aynı adı taşıyan bir sınıf yada arayüz bulunması gerekliliğidir.
Bir java kaynak dosyası üç ana bölümden oluşur. Bunlar:
Paket Bildirimi
Kütüphane Ekleme
Kod Bloğu
42
Paket Bildirimi
Java’da kaynak dosyalar veya derlenmiş halleri bilgisayarımızdakidosya sistemine benzer bir hiyerarşide tutulurlar.
Nasıl ki bilgisayarımızdaki tüm dosyalar bir dizinde tutuluyorsa kaynakdosyalarımız da mutlaka bir paket içerisinde tutulmalıdır.
Paketler başka paketlerin içerisinde bulunabilirler. Örneğin java’da dosya işlemlerini yapan File.java kaynak dosyası java paketinin
içerisindeki io paketine aittir. Bu nedenle File.java dosyasının en üst kısmında
package java.io
ifadesi bulunur. Bir kaynak dosya sadece bir pakete ait olabilirdolayısıyla kaynak dosyasında sadece bir adet paket bildirimi olur.
43
Kütüphane Ekleme
Daha önceden yazılmış ve programcının kullanımınasunulmuş kaynak dosyalar yada bunların derlenmişhallerine kütüphane denilmektedir.
Java’da kütüphane bildirimi, paket bildiriminin ardındanyapılmaktadır.
Örneğin yukarıda bahsettiğimiz File.java kaynakdosyasından üretilmiş File sınıfını yeni yazacağımız koddakullanmak istersek;
import java.io.File;ifadesini kullanmamız gerekmektedir.
44
Kütüphane Ekleme
Tek tek sınıf dosyalarını eklemektense bir paket içerisindeki tüm dosyaları aynı satırda ekleme imkanı da mevcuttur.
Örneğin Java’nın giriş çıkış işlemlerinin bulunduğu java.io paketinin içerisindeki tüm kütüphaneleri yazacağımız kodda kullanmak istersek
import java.io.*; ifadesini kullanırız.
45
Java’da İsimlendirme
Java’da isimlendirme yaparken bazı kurallar mevcuttur.
Dosya İsimleri: Java’da dosya isimleri büyük harfle başlar. Dosya ismi birden fazla sözcükten oluşuyorsa, sözcükler arasında boşluk bırakmadan tüm sözcüklerin ilk harfi büyük olacak şekilde isimlendirilir. Dosya isminin sonuna .java uzantısı eklenir.
Örn. Araba.java
SuSisesi.java
Sınıf İsimleri: Java’da sınıf isimleri büyük harfle başlar. Sınıf ismi birden fazla sözcükten oluşuyorsa, sözcükler arasında boşluk bırakmadan tüm sözcüklerin ilk harfi büyük olacak şekilde isim verilir.
Örn. Surucu
YemekMasası47
Java’da İsimlendirme
•Metod İsimleri: Java’da metod isimleri küçük harfle başlar. Metodismi birden fazla sözcükten oluşuyorsa, sözcükler arasında boşluk bırakmadan ilk sözcük hariç diğer tüm sözcüklerin ilk harfi büyük olacak şekilde isimlendirilir.
Örn. baglan()
kapiyiAc()
Paket İsimleri : Java’da paket isimleri tamamen küçük harflerden oluşur. Alt paketler “.” ile birbirlerinden ayrılır.
Örn. java.io
java.sql
48
Java’da İsimlendirme
•Değişken İsimleri: Java’da değişken isimleri küçük harfle başlar. Değişken ismi birden fazla sözcükten oluşuyorsa, sözcükler arasında boşluk bırakmadan ilk sözcük hariç diğer tüm sözcüklerin ilk harfi büyük olacak şekilde isimlendirilir.
Örn. adi
dogumYeri
dogumTarihi
Sabitler : Java’da sabit isimleri büyük harflerden oluşur. Sabit ismi birden fazla sözcükten oluşuyorsa, sözcükler arasında “_” karakteri konularak isimlendirilir.
Örn. RAKIM
PI_SAYISI 49
50
Java programının temel formatı
Java case sensitive programlama dilidir.
“toplam”, “Toplam” ve “TOPLAM” birbirinden ayrıdır.
Java programları fonksiyonlar halinde yazılır
Tüm fonksiyonlar, bir ada, data gönderme ve data döndürme özelliklerine sahiptir.
Fonksiyonlar programın işlevlerini gerçekleştirir.
Java programlarının başlangıç noktası main()fonksiyonudur.
51
Merhaba dünya! programı
//Merhaba dünya! programı.
//01.09.201
public class MerhabaDunya
{
public static void main (String [] args)
// [] args içine aldığı parametrelerdir.
// String java’da çift tırnak arasında yazarız
{
System.out.println(“Merhaba dünya”);
//ekrana yazı yazmak için kullanılır.
}
}
52
Açıklamalar
Açıklama satırları program hakkında bilgiler vermek için kullanılır.
Compiler açıklama satırlarını gözardı eder.
Java içinde açıklama yazmanın iki yolu vardır
Tek satırlık açıklamalar// Açıklamalar bu satıra yazılabilir.
// Compiler iki slaş işaretinden satır sonuna
// kadar herşeyi gözardı eder
Çok satırlık açıklamalar/* Açıklama yazmanın diğer bir yoludur. Compiler
slaş yıldız ile yıldız slaş arasındaki her şeyi
gözardı eder. */
53
Önişlemci direktifleri
Önişlemci direktifleri compiler’a komutlar gönderir.
java.util bir kütüphanedir. Klavyeden okuma ve ekrana
yazma için gerekli deyimleri bulundurur.
import deyimi ile compiler’a java.util araçlarının
kullanılacağı bildirilmiştir.
Java çok sayıda kütüphaneye ve araca sahiptir.
Java fonksiyonları kullanılacağı zaman uygun kütüphanenin programa import edilmesi gerekir.
import java.util.*; ön işlemci direktifidir.
54
main() fonksiyonu
Java programının başlangıç noktasıdır.
Java programları bir main() fonksiyonuna sahiptir.
public static void main(String [] args)
{
...
}
55
Fonksiyon başlık satırı
Fonksiyon başlık satırı her fonksiyonda olur. Fonksiyonun adını ve giriş/çıkış parametrelerini tanımlar.
Genel yazımı
return_type function_name(input parameters)
şeklindedir.
return_type, fonksiyonu çağıran yere döndürülecek
değerin türünü belirler.
Fonksiyonlar { ve } parantezleriyle oluşturulur.
56
Java deyimleri
Java deyimleri çalıştırılacak komutları ifade eder.
Java daki çoğu deyim noktalı virgülle sonlandırılır.
Merhaba dünya programı bir deyime sahiptir.
system.out.println(“Merhaba dünya”);
out çıkışı yönlendirir.
println ile string konsol ekranına gönderilir ve yeni satıra
geçilir.
57
Boşluk karakterleri ve Java ile esnek yazım
Boşluk karakterleri (whitespaces) programın okunabilirliğini artırır.
Enter, tab ve space ile oluşturulur.
Compiler gözardı eder.
Merhaba dünya programı aşağıdaki gibi yazılırsa yine çalışır.
public class MerhabaDunya { public static void main (String [] args) { System.out.println(“Merhaba dünya!”); }}
58
Syntax
Syntax programın yazım kurallarını ifade eder.
Önişlemci yazım hatası bulursa anlamlı bir mesajla programcıya bilgi verir.
Programdaki az sayıdaki hata, çok sayıda compiler hatası üretebilir.
59
İyi program yazım şekli
Java ile yazılan programın kolay okunabilir olması gerekir.
Tanımlayıcı açıklamaların yapılması gerekir.
Anlamlı ve uygun uzunlukta değişken isimlendirme yapılması gerekir.
Programdaki blokların hizalandırılması gerekir.
Başlangıçta okunabilirlik için harcanan zaman, compiler hatalarının düzeltilmesi veya programın update edilmesi sırasında çok zaman kazandırır.
60
Programlama Dillerindeki Data türleri
Bir veri türü programda kullanılacak değeri belirler.
Her değer için bir tür belirlenmelidir.
61
Programlama Dillerindeki Data türleri
Bir veri türü, veri saklama alanını ifade eder.
Bir değişken, veri saklama alanının adını gösterir.
Her veri türü, saklama alanının boyutunu belirler.
Bayt : 8 bitlik dizilim
boyunca 1 veya 0 değerle-
rini bünyesine alan ve kay-
dedilen bilgilerin türünden
bağımsız bir bellek
ölçü birimi.
8 bit= 1 byte
63
Data türleri
Veri türü tanımlama formatı
data_type variable_name;
şeklindedir.
Örnek veri türü tanımlamaları:
double balance;
double deposit;
double withdraw;
int transaction_count;
int check_number;
64
Data türleri
Değişkenlere değer atanması
double deger;
int num = 5;
deger = 35.29;
double money, speed;
money = speed = 0.0;
65
İsimlendirme kuralları
Değişkenlere isim belirlenmesinde uyulacak kurallar:
İsimler A-Z, a-z, 0-9 veya _ karakterlerinden oluşur.
İlk karakter harf veya _ olmalıdır.
İsimlerde ~ ! @ # $ % ^ & * ( ) – “+ = \ | ’, sembolleri ve boşluk karakteri kulanılamaz.
Anahtar kelimeler değişken ismi olarak kullanılamaz.
67
Değişken tanımlama
Değişkenler fonksiyon içinde, dışında veya başlık satırında tanımlanabilir.
Bir değişken kullanılmadan önce tanımlanmalıdır.
Bir değişkene tanımlandığı yerden ulaşılır (scope).
68
Java da operatörler
Java da operatörler belirli bir işlemi ifade eder.
F_temp = 9.0/5.0 * C_temp + 32.0;
Operatörler eşitliğin sağ tarafında kullanılırlar.
69
Atama operatörü
Atama operatörü (=) sağ taraftaki değeri sol taraftaki değişkene aktarır.
Birden fazla değişkene bir ifadeyle değer atanabilir.
miktar = 1534.34;
islemSirasi = 8;
x = y;
a = b = c = 0;
70
İşlem öncelikleri
İşlem öncelikleri deyimlerin çalışma şeklini (operatörlerin işlem sırasını) gösterir.
71
İşlem öncelikleri
Yukarıda dört operatör var (=, /, *, +).
Çarpma (*) ve bölme (/) en yüksek önceliğe sahiptir. Sonra toplama (+) ve en son atama (=) işlemi yapılır.
Atama hariç işlemlerin tamamı soldan sağa önceliklendirmeyle yapılır.
Önce 9.0/5.0 bölme işlemi yapılır.
Hesaplanan değer C_temp değişkeniyle çarpılır.
Sonra toplama işlemi yapılır.
En son atama operatörüyle hesaplana değer F_temp değişkenine
aktarılır.
F_temp = 9.0/5.0 * C_temp + 32.0;
73
Veri türleri ve saklanan değerler
Veri türü hafızaya saklanacak değeri belirler.
Bir integer değişkene değer atandığında tam kısmı saklanır.
Ondalıklı kısmı yuvarlanmaz truncate (atılır) yapılır.
Programcı truncate yapılacak bir değer atadığında compiler uyarı mesajı üretir.
double x = 15; // x değeri 15.0000000000000 olur
int miktar = 435.83; // miktar değeri 435 olur
74
Veri türleri ve saklanan değerler
Aşağıdaki iki değişkenin değeri truncate yapılır.
float pi = 3.141592653589793; // pi değişkeninin değeri
// 3.141593 olur.
short int toplam = 56332; // short int limit 32.767 olur.
75
lvalue ve rvalue
lvalue atama operatörünün sol tarafına, rvalue sağ
tarafına denir.
Sağ taraf hesaplanan bir değer sol taraf değişken olabilir.
Yanlış atamalar
Doğru atamalar
double x, sqrootX;
5.2 = x; // can’t assign from right to left
sqrt(x) = sqrootX; // can’t call sqrt on left of =
//sign
double x, sqrootX;
x = 5.2; //assign number from right to left
sqrootX = sqrt(x); //calculate on right, assign to left
78
Artırma ve azaltma operatörleri
++ ve -- operatörleri hızlı bir şekilde değişkenin değerini 1 artırır veya azaltır.
++i; veya i++;
aşağıdakine eşittir
i = i + 1;
79
Artırma ve azaltma operatörleri
Toplama işlemi olarak postfix ve prefix arasında fark yoktur.
Prefix operatör önce artırır / azaltır sonra atama yapar.
Postfix operatör önce atama yapar sonra artırır / azaltır.
++i; //prefix operator ++ değişkenden önce gelir
i++; //postfix operator ++ değişkenden sonra gelir
81
Accumulation operatörleri
Accumulation operatörleri (+=, –=, *=, /=) atama
işlemlerini kısa bir şekilde yazmak için kullanılır.
toplam = toplam + x;
toplam += x;
fark = fark - x;
fark -= x;
Java’nın Kurulumu (I)
Java Standard Edition (SE) Development Kit 9
http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html
Windows için standart program kurulumaşamaları “İleri” seçeneğiyle geçilir.
82
Java’nın Kurulumu (II)
Linux için ilgili .tar.gz uzantılı arşiv dosyası indirilir.
Sonrasında aşağıdaki komutlar yürütülerek kurulum sonlandırılır:
83
Java Kurulum Testi
Java’nın versiyon bilgisini test ederek kurulumun başarıyla yapıldığı test edilebilir:
84
Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim
Sistemi,2018
IDE (Integrated Development Environment)
85
Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim
Sistemi,2018
Java Yazılım Geliştirme Araçları
86
Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim
Sistemi,2018
gedit
Basit metin editörü
Bul-değiştir
Plugin desteği
Code snippet desteği (plugin ile)
Linux dağıtımlarında sıklıkla tercih edilmekte
87Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim Sistemi,2018
Notepad
Basit metin editörü
Bul-değiştir desteği
Windows sürümlerinde ön yüklü gelmekte
88Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim
Sistemi,2018
Atom Editor
Github destekli
Açık kaynak kodlu
Paket tabanlı
Zengin paket desteği
Tamamen özelleştirilebilir Font
Tema
● Çalışma alanı (workspace) desteği
89
Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim
Sistemi,2018
IntelliJ Idea (I)
En çok tercih edilen Java IDE’si (http://www.baeldung.com/java-in-2017)
92
IntelliJ Idea - Best practices (I)
95
Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim
Sistemi,2018
IntelliJ Idea - Best practices (II)
Kütüphaneleri kullanılan sınıfa otomatik import etme (ekleme, çıkarma)
File -> Settings
96
IntelliJ Idea - Best practices (VI)
Hazır kod template’leri (Live templates):
100
Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim
Sistemi,2018
Console’a Çıktı Yazdırma
Java uygulamalarda console’a çıktı yazdırmak için System.outpaketinin print ve println metotları kullanılır.
●System.out.println yeni bir satırda parametre olarak girilenString’i ekrana basarken, System.out.print metodu console’da sonkalınan yerden itibaren çıktıyı yazmaya devam eder.
103