BMH-303 Nesneye Yönelik...

Preview:

Citation preview

BMH-303 Nesneye Yönelik Programlama

Dr. Musa ATAŞ

Siirt Üniversitesi Bilgisayar Mühendisliği

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.

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

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

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)

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

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)

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.

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.

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.

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

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);

}}

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.

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.

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);

}

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.

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);

}});

}

Recommended