104
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ü

Algorithms and Data Structures - Ahmet KÖKEN · 2018-10-04 · Java Programlama Dili Programcı programı yazmakla yükümlüdür Sun Microsystem’de Windows, Linux,Unix, Macintosh

  • 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ı

Neden Programlama?

4

Kaynak: Yrd. Doç. Dr. Talha

KABAKUŞ,Android İşletim Sistemi,2018

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ı

Neden Java?

34

Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim Sistemi,2018

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 Nasıl Çalışır? (I)

36

Kaynak: Yrd. Doç. Dr. Talha

KABAKUŞ,Android İşletim Sistemi,2018

Java Nasıl Çalışır? (II)

37

Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim

Sistemi,2018

JVM - JRE - JDK

38

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

Kütüphane Ekleme

46

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

62

Programlama Dillerindeki Data türleri

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.

66

İsimlendirme kuralları

Örnek değişken isimleri:

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;

72

İşlem öncelikleri

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

76

Veri türleri ve aritmetik işlem sonuçları

Integer ve floating-point bölme işlemlerinin sonuçları

77

Cebirsel eşitlikler ve Java ifadeleri

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

80

Artırma ve azaltma operatörleri

i değişkeninin başlangıç değeri 5’tir.

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

Visual Studio Code (I)

90

Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim

Sistemi,2018

Visual Studio Code (II)

91

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 (II)

93

Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim

Sistemi,2018

IntelliJ Idea Kurulumu

94

jetbrains.com/student

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 (III)

97

IntelliJ Idea - Best practices (IV)

Otomatik tamamlama (Ctrl + Space)

98

IntelliJ Idea - Best practices (V)

99

IntelliJ Idea - Best practices (VI)

Hazır kod template’leri (Live templates):

100

Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim

Sistemi,2018

En Temel Java Programı (I)

101

Kaynak: Yrd. Doç. Dr. Talha KABAKUŞ,Android İşletim

Sistemi,2018

En Temel Java Programı (II)

102

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

Örnekler

104