Ders İçeriği An introduction to Object-oriented programming with Java Third Edition Update Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Öğr. Gör. Dr. Çelebi Uluyol Gazi Üniversitesi Bilgisayar ve Öğretim Teknolojileri Eğitimi Bölümü Nesneye Yönelik Programalama ÜNİTE 1. NESNE YÖNELİMLİ PROGRAMLAMAYA VE YAZILIM GELİŞTİRMEYE GİRİŞ 1.1.Sınıf (class) ve Nesne (object) kavramları Sınıf için tanımlanan metot, “sınıf metodu”; nesne için tanımlanan metot ise “örnek yöntemi” diye adlandırılır. Sınıf ve nesne, OOP içindeki en önemli iki kavramdır. Mesajın adı ile metodun adı aynı olmak zorundadır. Mesajda ayrıca bir “argüman (argument)” bulunur. Nesne herhangi bir şeydir. OOP mantığında birbirleriyle etkileşim içerisinde olan nesneler yer alır. Örneğin; Öğrenci, oda, kat nesneleri gibi. Her nesnenin içinde de data (veri) tutulur. Örneğin; öğrenci nesnesi için ad, soyad, cinsiyet, doğum günü, adres, … gibi veriler tutulur. Bir programda nesneleri oluşturmak için komutlar yazarız. Nesne oluşturabilmek için sınıf diye adlandırılan yapının olması gerekir. Sınıf, nesnelerin neler yapıp neler yapmayacağını belirleyen bir yapı veya şablondur. Nesne = Sınıfın bir örneğidir (an object = an instance of a class). Yani bir nesne mutlaka bir sınıfa ait olmak zorundadır.Örneğin; GEF sınıf adı, BÖTE nesne adı gibi. Öncelikle bir sınıf oluşturulur. Sonra bu sınıfın istediğimiz kadar nesnesini oluşturabiliriz. ! Nesneden önce sınıf mutlaka oluşturulmuş olmalıdır. 1.2.Mesajlar (Messages) ve Metotlar (Methods) Bir görevi yerine getirmek için nesne ya da sınıfa “mesaj” yollanır. Örneğin; “hesap” nesnesine 100$ depolaması için “depola” mesajı yollanır. Yollanan mesajı anlayabilecek olan sınıf veya nesneye mesaj yollanabilir. Bir sınıf veya nesnenin, aldığı mesajı işleme koyabilmesi için bir metoda sahip olması gerekir. “Metot”, görevi yerine getirecek olan komutlar bütünüdür. Örneğin; Robot sınıfından fido isimli nesneye wallk(25) isimli bir mesaj yollayabilirsin. Burdaki argüman değeri 25’tir. Argüman boş olarak da mesaj yollanabilir. 1.3.Sınıf (class) ve Örnek veri değerleri (instance data values) Bir nesne, veriyi veri değerlerinde tutar. Bu nedenle sınıf ve örnek veri değerleri tanımlamak zorundayız. Veri değerinin iki çeşidi vardır: variable ve constant. • Variable: değiştirilebilen veri değeri • Constant: değiştirilemeyen veri değeri ? 4x-7=5 Variable Constant ÜNİTE 1. NESNE YÖNELİMLİ PROGRAMLAMAYA VE YAZILIM GELİŞTİRMEYE GİRİŞ 1.4.Inheritance (Kalıtım) Bir class’ın başka bir class’daki property ve method’lara sahip olmasına inheritance denir. 1.5.Yazılım mühendisliği ve yazılım yaşam döngüsü Yazılım yaşam döngüsü 5 aşamalıdır: Yukarıdaki örnekte de görüldüğü gibi; convertible sınıfı miras alınarak roadster isimli yeni bir sınıf oluşturulmuştur. Bu sınıf convertible sınıfının tüm özelliklerini taşımaktadır. ÜNİTE 2. GETTING STARTED WITH JAVA 2.1. İlk Java programı ! Uygulama - 1 /* ilk java programı */ import javax.swing.*; class Ch2Sample1 { public static void main(String[] args) { JFrame myWindow; myWindow = new JFrame(); myWindow.setSize(300,200); myWindow.setTitle(“İlk Java Programı”); myWindow.setVisible(true); } Student john; john = new Student(); demek ile Student john = new Student(); demek aynı şeydir. • Nesne oluşturulduktan sonra da mesaj yollanır. Örnek: myWindow.setVisible(true); Bu kodda myWindow nesnedir. setVisible metot veya yolladığımız mesajın adıdır. True ise mesajla yollanan argüman değeridir. ÖZETLE; 1. Önce nesnenin sınıftan oluşturulduğu bildirilir. 2. Sonra nesne yaratılır. 3. Sonra nesneye mesaj yollanır. } Yukarıdaki örnekte; • Ch2Sample1, sınıfın adıdır ve bu sınıf bir metodu (main) içerir. • Sınıftan nesne oluşturulduğu JFrame myWindow; satırı ile bildirilir. • Bildirimin ardından nesne oluşturan kod yazılır. Örneğin; myWindow = new JFrame(); ! Sınıf isimlerinin ilk harfi büyük, nesne isimlerinin ise ilk harfi küçük olur. OgrenciOzellik -->sınıf oluşturulurken kelimelerin ilk harfler büyük yazılır. ogrenciBoy --> nesne oluşturulurken ilk kelimenin ilk harfi küçük ikinci kelimenin ilk harfi büyük yazılır. ÜNİTE 2. GETTING STARTED WITH JAVA 2.2. Program Bileşenleri Her Java programında 3 kısım bulunur: •Comment •İmport •Sınıf (class) Comment (Yorumlar) /* Bu bir yorumdur */ // Bu da bir yorumdur. İmport Kısmı OOP, önceden tanımlanan sınıflar kullanılarak yazılır. Önceden tanımlanan bu sınıflar, sistemin kendi sınıfları olabileceği gibi, bizim oluşturduğumuz sınıflar da olabilir. Java dilinde sınıflar, paketler (packages) içinde gruplandırılır. Kullanıma örnekler şu şekildedir: dorm.Resident; Burada dorm paketin adı, Resident ise sınıfın adıdır. javax.swing.JFrame; Burada javax paketin adı, swing javax paketinin içindeki paketin adı, JFrame ise sınıfın adıdır. import javax.swing.*; Yukarıdaki kod satırı, javax.swing paketindeki tüm sınıfları kullanabilirz anlamına gelir. Bunun yerine şöyle bir kullanım da olabilirdi (Böyle kullanılırsa import demeye gerek kalmazdı): Javax.swing.JFrame myWindow; myWindow = new javax.swing.JFrame; Sınıf kısmı Bir önceki programda iki sınıf vardı. JFrame ve Ch2Sample1 sınıfları. JFrame sistemde kayıtlı olan bir sınıf, Ch2Sample1 ise bizim oluşturduğumuz bir sınıf. Her Java programında en az bir sınıf bulunmak zorundadır. Program içinde bir sınıf “main sınıf” olarak tanımlanmak zorundadır. Yukarıdaki uygulamadaki “public static void” ile başlayan kısım ise metot kısmıdır. Metodun yazım şekli şu şekildedir: <modifiers> <return type> <method name> (<parameters>) { <method body> } modifier: farklı türdeki metotlardır. Return type: metot tarafından döndürülen verinin tipi Method name: metodun ismi Parameters: metoda yollanan veriler. ! Her java programında en az bir sınıf bulunmak zorundadır. 2.3. Edit – Compile – Run döngüsü ÜNİTE 2. GETTING STARTED WITH JAVA 2.4. Java standart sınıfları 2.4.2. String Bu kısımda Java’nın içindeki 4 sınıftan bahsedilecektir. Bu sınıflar şöyledir: String name; name = new String(“Çelebi ULUYOL”); JOptionPane, String, Date, SimpleDateFormat NOT: İyi bir OOP programcısı, tanımlı sınıfları nasıl kullanması gerektiğini çok iyi bilmelidir. 2.4.1. Çıktı için JOptionPane Sonucu kullanıcıya göstermek için Java’da kullanılacak en kolay yol JOptionPane sınıfını kullanmaktır. Örnek: JOptionPane.showMessageDialog(null, “I love Java”); Buarada null yazmak, ekranın ortasında görüneceği anlamına gelir. Java’da çerçeve penceresi için JFrame nesnesi, diyalog içinde JDialog nesnesi kullanılır. Uygulama - 2 import javax.swing.*; Örnek: String sınıfı için özel bir durum da sözkonudur. Sınıf bildiriminin ardından, oluşturma atlanabilir. Örnek: String name; name = “Celebi ULUYOL”; 2.4.3. Date ve SimpleDateFormat Örnek: Date today; today = new Date(); JOptionPane.showMessageDialog(null, today.toString()); Bu kodlar çıktı olarak şöyle bir çıktı verir: Sat Apr 20 15:05:18 PDT 2002 class MesajDialog{ Eğer tarih ve saatin bu şekilde çıktı vermesi hoşunuza gitmediyse, simpleDateFormat sınıfı kullanılabilir. Bu sınıf java.text paketinin içinde yer alır. Örnek: public static void main(String[] args) { JFrame benimNesnem; Date today; benimNesnem = new JFrame(); SimpleDateFormat sdf; benimNesnem.setSize(400,300); today = new Date(); benimNesnem.setVisible(true); sdf = new SimpleDateFormat(“MM/dd/yy”); JOptionPane.showMessageDialog(benimNesnem, “Nasılsın”); JOptionPane.showMessagedialog(null, format(today)); JOptionPane.showMessageDialog(null, “Bye Bye”); Bu kodlar da çıktı olarak şöyle bir çıktı verir; } } 04/20/11 ÜNİTE 2. GETTING STARTED WITH JAVA Uygulama - 3 import javax.swing.*; import java.util.*; // date sınıfının ait olduğu paket import java.text.*; // simple date sınıfının ait olduğu paket class SimdikiZaman { public static void main(String[] args) { Date simdi; SimpleDateFormat simpleDF1,simpleDF2; simdi = new Date(); simpleDF1 = new SimpleDateFormat(); simpleDF2 = new SimpleDateFormat(“EEEE MMMM dd, yyyy”); } } 2.4.4. Giriş için JOptionPane JOptionPane.showInputDialog(null, “Metni gir:”); String input; input = JOptionPane.showInputDialog(null, “Metni gir:”); Girilen metin input isimli nesneye aktarılır. Object Oriented Programming İletişim http://www.bote.gazi.edu.tr http://w3.gazi.edu.tr/~celebi/ Bu kitap içeriği Çelebi ULUYOL tarafından “An introduction to Object-oriented programming with Java” kitabı yardımıyla hazırlanmış, tasarımı Berkan MERAL tarafından yapılmıştır. © 2012 / Gazi Üniversitesi Bilgisayar ve Öğretim Teknolojileri Eğitimi