21
BMH-303 Nesneye Yönelik Programlama Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği

BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

  • Upload
    others

  • View
    8

  • Download
    1

Embed Size (px)

Citation preview

Page 1: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

BMH-303 Nesneye Yönelik Programlama

Dr. Musa ATAŞ

Siirt Üniversitesi Bilgisayar Mühendisliği

Page 2: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Hatırlatmalar

• NYP dersi kapsamında JAVA programlama dili kullanılacaktır.

• Bilgisayarınızda en son sürüm Java JDK ve Netbeans yüklü olmalıdır.

• Derslerde örnek sorular çözüleceğinden yanınızda dizüstü bilgisayarınızı getirmeniz önerilmektedir.

• Sadece ders notlarına bağımlı kalmadan nette bulabileceğiniz birden fazla kaynak üzerinde çalışmanız iyi olur.

• Ders kitabı olarak Java ile nesneye yönelik programlamayı anlatan herhangi bir kitap alabilirsiniz.

• Karşılaştığınız sorunlara çözümleri netten araştırabilirsiniz örneğin https://stackoverflow.com/ sitesinde genellikle uzman kişiler tarafından sorulara çözüm önerileri getirilmektedir.

Page 3: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Hatırlatmalar

• Paket kullanılmadan üretilmiş sınıfların komut penceresinde derlenmesi ve çalıştırılması• Bunun için sisteminizde son sürüm java jdk yüklü olmalıdır.

• Jdk bin klasörünün path’e eklenmesi gerekir

• Komut satırında path=%path%;C:\Program Files\Java\jdk_1.8.0_111\bin yazıp enterleyiniz.

• Veya ortam değişkenlerinden path yazan yere jdk\bin klasörünün adresini ekleyiniz.

• İlk başta uzantısı .java olan dosyalar javac komutu ile derlenirler.

• javac Deneme.java

• Daha sonra java.exe ile çalıştırılırlar

Page 4: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Hatırlatmalar• java Deneme p1 p2 p3

• Şayet paketli kullanım mevcutsa bu durumda paket klasörünün dışında iken derleme ve çalıştırma yapılabilir.

javac paket1\Deneme.java

java paket1.Deneme p1 p2 p3

• Jar dosyalarına çevirmek için

jar -cvfe Deneme.jar <MainClass> Deneme.class

java -jar Deneme.jar

Page 5: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

NYP dersinde öğreneceklerimiz

• OOP’nin avantajları

• İsimlendirme

• Nesne ve Sınıf Kavramları

• Method overloading (fonksiyonların yeniden aynı isimle tanımlanması)

• Constructor (Yapıcı metod)

• static kelimesi

• this kelimesinin farklı kullanım alanları

• Inheritance (Kalıtım)

Page 6: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

NYP dersinde öğreneceklerimiz

• Aggregation (Koleksiyon veya bir araya getirme)

• Method Overreding (ezme)

• Covariant (eşdeğişken) geri dönüş türü

• super kelimesi

• instance intializer block(örnek başlatma bloğu)

• final kelimesi

• Abstract sınıfı

• Interface (arayüz tanımı)

• Polymorhism

Page 7: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

NYP dersinde öğreneceklerimiz

• Statik ve dinamik bağlanma

• instanceOf ile aşağı tür dönüşümü (downcasting)

• Paketler

• Access Modifiers (Erişim Değiştiricileri)

• Encapsulation

• Object Cloning (nesne kopyalama)

Page 8: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda
Page 9: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda
Page 10: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda
Page 11: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda
Page 12: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Nesne ve Sınıf Kavramları

• Durum ve davranışsal özelliği olan her varlık nesne olarak adlandırılır (resimdeki nesneler gibi). Nesneler fiziksel (somut) veya mantıksal (soyut) olabilirler.

• Banka veya güvenlik sistemleri soyut nesnelere örnek olarak gösterilebilir.

Page 13: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Nesne

• Nesnenin 3 karakteristik özelliği bulunmaktadır.

1- Durum (state) : nesnedeki veriyi temsil eder.

2- Davranış (behaviour): Nesnenin davranışsal veya fonksiyonel özelliğini alatır. Mesela; buton nesnesinin tıklanması veya öğrenci, nesnesinin not puanının hesaplanması gibi.

3- id : Her nesneye JVM tarafından atanmış tekil bir numaradır. Bu numara ile heap bellekte nesneler takip edilir, programcının bu bilgiye çoğu zaman ihtiyacı olmaz ve ondan izole bir şekilde JVM tarafından işlenir.

Örnek vermek gerekirse kalem bir nesnedir, rengi beyaztır, boyutları … bu özellikler nesnenin durum bilgisini, yazmaya veya çizmeye yarar. Buradaki yazma veya çizme eylemleri de davranış özelliğini temsil eder.

Page 14: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Nesne

• Nesne bir sınıfın örneğidir yani yapılmış bir varlığıdır. Sınıfı bir model gibi düşündüğümüzde nesne ilgili model çerçevesinde üretilen nihai ürün anlamına gelir. Veya sınıfı bir kalıp gibi düşündüğümüzde nesne ilgili kalıptan üretilen ürün gibi anlaşılabilir.

• Sınıftan nesne yapılabilmesi için Java’da new ve sınıf adını içeren constructor (yapıcı metod) un çağrılması gerekir. Örnek:

Student s1=new Student();

• Constructor metodu varsayılan (default) olarak giriş parametresi olmadan tanımlanmıştır. Kullanıcı isterse hariçten değişik parametre alan constructor tanımlayabilir. Ancak constructor metodu geri dönüş üretmediği gibi mutlaka Sınıf adı ile aynı olmalıdır.

Page 15: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Java’da Sınıf Kavramı

• Sınıf(Class), nesnelerin(objects) yapıldığı bir çeşit kalıp, model veya üretim fabrikası şeklinde düşünülebilir. Java Sınıfları şunlardan oluşmuştur;

1. Data (Veri)

2. Constructors (yapıcı veya kurucu metodlar)

3. Methods (metodlar veya fonksiyonlar)

4. Block

5. Class and Interface

Page 16: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Sınıf ve nesnelere basit bir örnek

class Student{int id;//data member (also instance variable)String name;//data member(also instance variable)

public static void main(String args[]){Student s1=new Student();//object of Student ClassSystem.out.println(s1.id);System.out.println(s1.name);

}}

Page 17: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

new anahtar kelimesi• Çalışma zamanında Sınıftan nesne üretmek için yapıcı metodu çağıran

ve heap bellekte yer ayıran özel bir deyimdir.

Page 18: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Java’da instance (örnek) değişkenleri

• Sınıf içerisinde tanımlanan ancak metod içinde tanımlanmamış değişkenlere instance variables (sınıf değişkenleri) denmektedir.

• Sınıf değişkenleri, derleme (compile) aşamasında bellekten (heap) yer tutmazlar. Ancak çalışma zamanında (run-time) nesneler sınıflardan üretildikleri zaman (instantiate) bellekte yer tutarlar.

Örnek:

String name;

String id;

Gibi.

Page 19: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Metodlar

• Metodlar diğer adıyla fonksiyonlar bir sınıfın davranışsal karakteristiğini betimlemek için kullanılırlar. Metod kullanımı, kod optimizasyonu ve tekrar kullanılabilirlik açısından faydalıdır.

• Metodlar 𝑓 𝑓(𝑥), 𝑦, 𝑓(𝑓(𝑡) tarzında kullanılabilir. Yani her metodun genel anlamda bir ismi, bir geri dönüş değeri, dışarıdan alığı parametreleri vardır. Java’da jenerik bir metod tanımı aşağıdaki gibidir.

Geri_dönüş_tipi metod_adı ( giriş parametreleri , , , ) {

do_something;

return ret (geri dönüş tipinde olmalıdır);

}

Page 20: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Java’da nesne üretmek için başka ne gibi yöntemler vardır?1. new anahtar sözcüğü kullanılarak.

2. Sınıfta tanımı yapılmış newInstance() metodu üzerinden.

3. clone() metodu ile

4. Factory method çağrısı ile

Son üçü ilerleyen zamanlarda öğrenilecektir.

Page 21: BMH-303 Nesneye Yönelik Programlamamusaatas.siirt.edu.tr/JAVA/dersNotlari/ders_1_oop...Hatırlatmalar •NYP dersi kapsamında JAVA programlama dili kullanılacaktır. •Bilgisayarınızda

Anonymous Object (Anonim Nesne)

• Eğer sadece bir nesne yapılıp o nesnenin de sadece bir defaya mahsus bir metodu veya alanı çağrılacaksa kullanılabilir. Örnek: JFrame de main metodunda kullanılmıştır.

public static void main(String args[]) {java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {new NewJFrame().setVisible(true);

}});

}