Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

10. NESNEYE YÖNELİK PROGRAMLAMA Öğr.Gör. Murat ASLANYÜREK.

Benzer bir sunumlar


... konulu sunumlar: "10. NESNEYE YÖNELİK PROGRAMLAMA Öğr.Gör. Murat ASLANYÜREK."— Sunum transkripti:

1 10. NESNEYE YÖNELİK PROGRAMLAMA Öğr.Gör. Murat ASLANYÜREK

2 Nesneye Yönelik Programlamaya Giriş  Nesneye yönelik programlama,  1960’lı yıllarda ortaya çıkmıştır.  Yazılımdaki karmaşıklığı önler.  Programlar daha rahat kontrol edilir.  Oluşan hatalar, program parçalara bölündüğü için daha rahat tespit edilir.  Performansı arttır.  Büyük çaplı projelerde avantajları onu vazgeçilmez kılar.

3 Nesneye Yönelik Programlamaya Giriş  Yazılımdaki karışıklığa çözüm için kullanılnan bazı prensipler,  Kalıtım(Inheritance)  Çok Biçimlilik(Polymorphism)  Soyutlama(Abstraction)  Sarmalama(Encapsulution)  Nesneye yönelik programlama mantığında hiyerarşi(sınıflar ve nesneler) vardır.

4 Sınıf ve Nesne Kavramları  Doğadaki her şey bir nesnedir. Uçan kuş, evimizdeki kapı, pencere, dışardaki arabalar vs.  Nesnelerin 2 özelliği vardır. Durum ve Davranış.  Araba = Nesne,  Arabanın rengi, fiyatı, markası vb. durumunu belirtir.  Ayrıca davranışa, attribute(özellik) denilebilir.  Arabanın hızlanması, yavaşlaması, vites değiştirmesi vb. onun davranışını belirtir.

5 Sınıf ve Nesne Kavramları  Durumda belirtilen özellikler nesneye yönelik programlamada değişkenler üzerinde saklanır.  Davranışların nesneye yönelik programlamaya karşılığı ise metodlardır.  Sınıflar, nesnelerden oluşur, nesnelerin durumlarını ve davranışlarını tutar.  İnsan = Nesne ise Canlı = Sınıf olabilir. Bu durumda canlı sınıfından istediğimiz kadar insan üretebiliriz. Bu oluşan yeni nesnelere instance (örnek).  Oluşan yeni insanın nefes alma, cinsiyet, boy, kilo vb. özellikleri vardır.  Bunu, savaş oyunlarındaki askerlere benzetebiliriz. Her asker bir instance (örnek) olur ve belirli özellikleri vardır. Her nesnenin de bir sınıfı vardır.

6 Sınıf Oluşturma

7 NEW Anahtar Kelimesi ile Nesne Oluşturma  Bir sınıftan oluşturulan her örneğe nesne denir. Örneğin, Insan sınıfından 10 adet insan oluşturduk, oluşturulan her insan nesnesinin boyu, yaşı vs. farklı olabilir.  Javada bir sınıftan nesne oluşturmak için new anahtar söcüğü kullanılır.  Insan Mehmet = new Insan();

8 Oluşturulan bir nesnein özelliklerine nokta(.) ile erişiriz. Nokta(.) operatörü, bir sınıfın altında bulunan metodlara değişkenlere erişmemize olanak tanır.

9

10 NEW Anahtar Kelimesi ile Nesne Oluşturma  Not: Oluşturulan her nesne, bellekte farklı bir alanda tutulur. Nesnelerin bellekte tutulduğu böle heap alanıdır. Bu nesnelere, o nesnenin referansı ile erişebiliriz. Bir nesnenin birden fazla referansı olabilir.

11 Not: Bir sınıf içerisinde istediğimiz kadar metod tanımlayabiliriz ve bunlara İstediğimiz kadar parametre gönderebiliriz.

12 Sınıf ve Nesne Değişkenleri  Nesneye yönelik programlamada ihtiyaca göre nesne oluştururuz ve her nesnenin kendine has özellikleri olur. Bu şekilde her nesnenin kendine ait olan değişkenlerine nesne değişkenleri denir.  Her nesne için ortak olarak kullanılan değişkenler vardır. Bunlar nesneden nesneye farklılık göstermezler. Bunlara da sınıf değişkenleri denir.

13  Sınıf Değişkeni  Nesne Değişkeni

14 Sınıf ve Nesne Değişkenleri  Not: Nesne değişkenleri dinamik değişkenler, yani instance variable olarak da adlandırılır. Sınıf değişkenleri ise static değişkenler olarak adlandırılırlar.  Not: Eğer nesne değişkeni tanımlarsak oluşturulan her nesne için bellekte bir yer ayrılır. Bu nesne değişkenlerinin değeri, programın herhangi bir yerinde değiştirilebilir. Sınıf değişkenleri için bellekte sadece bir yer ayrılır.  Not: Sınıf değişkenleri static olarak tanımlandığı için bu değişkenlere nesne oluşturulmadan da sadece sınıf adını kullanarak ta erişilebilir. Yani bunlar nesneden bağımsızdır.

15 Sınıf ve Nesne Değişkenleri  Sınıf değişkenleri aynı zamanda static değişkenler olarak adlandırılırlar.  Sınıf değişkenleri, glabal değişken kavramına benzer.  Static olan değişkenlere sadece sınıf adı ile erişebiliriz.  Sınıf değişkenleri program bittiğinde bellekten silinirler. Ve her program için yalnızda bir defa oluşturulurlar. Nesne değişkenleri ise nesne yok olduğunda bellekten silinirler.

16 Pass By Value – Pass By Reference (Değer ve Referans Tipleri)  Bir metoda parametre gönderdiğimiz varsayalım. Metod, bu parametreyi 10 ile çarpıyor ve ekrana bir şeyler yazdırıyor. Peki metoddan çıktığımızda asıl değişkenin değeri değişir mi?  Primitive(int, doble, vb) tiplerde değer metoda parametre olarak gönderildiğinde değerin kopyası gönderilir. Orijinal değer değişmez.  Referans tiplerde, metoda değerin kendisi gönderilir. Metodda olan değişiklik değişkenede yasnır.

17 Pass By Value – Pass By Reference (Değer ve Referans Tipleri)

18

19  Dizilerde bir referans tipidir.

20 Yapıcılar(Constructor)  Sınıftan bir nesne oluşturulduğunda derleyici otomatik olarak bir yapıcı metod çalıştırır. Bu metod oluşturulan her nesne için çağırılır. Yapıcılar, nesnenin ilk oluşturulduğunda alması gereken değerleri, kullanacağı metodları belirler.  Yapıcıların adı, sınıfın adı ile aynı olmak zorundadır.  Yapıcı metodlar geriye herhangi bir değer döndermezler.  Yapıcı metodlar aşırı yüklenebilir.  Her sınıf için default cunstructor(yapıcı) vardır. Bunlar herhangi bir parametre almazlar.( Eğer biz bunu kullanmak istemiyorsak, kendimiz bir yapıcı metod yazmamız gerekir.)

21

22

23 Kapsülleme(Encapsulation)  Kapsülleme, bir sınıfın içerisnindeki metod ve değişkenleri korumasıdır. Bünyesindeki metod ve değişkenlere dışarıdan erişmenin sakıncalı olduğu durumlarda kapsülleme kullanılır. Kapsülleme sayseinde sınıf üyeleri dış dünyadan gizlenir ve bu gizliliğin derecesi erişim belirleyiciler tarafından tanımlanır.

24 Kapsülleme(Encapsulation) Erişim Belirleyiciler  Sınıf elemanlarında erişimi sınırlandıran anahtar kelimelerin genel adıdır. ( public, private, protected ). Anahtar kelimeleri kullanmazsak default anahtar kelime kullanılır. Kapsüllemenin temelini bu erişim belirleyiciler oluşturur.

25 Kapsülleme(Encapsulation)  public : Bir elemanı public olarak tanımlarsak bu elemana herkes ulaşabilir.  protected : Bir sınıfın protected olarak tanımlanmış elamanına o sınıftan, o sınıftan türetilmiş sınıflardan ve o sınıf ile aynı pakatte bulunan sınıflar erişebilir.  private : private olarak tanımlanmış sınıf elamanlarına, yalnızca o sınıftan erişilebilir. O sınıftan türetilen sınıflardan veya aynı pakatte bulunan sınıflardan erişilemz.  Default : Herhangi bir erişim belirleyici tanımlanmamışsa, default olarak kabul edilir. Default tanımlanmış sınıf elamanlarına, o sınıftan ve aynı pakatteki sınıftan erişilebilir.

26 Kapsülleme(Encapsulation) Private Anahtar Kelimesi

27

28 Kapsülleme(Encapsulation) Protected Anahtar Kelimesi

29 Kapsülleme(Encapsulation) Public Anahtar Kelimesi

30  Not: Eğer alanımızın başına erişim belirleyici yazmazsak default olarak algılanır. Default olan alanlara da yalnızca o sınıftan ve pakatten erişilebilir.  Not: Java’da.java uzantılı dosya içerisinde birden fazla sınıf kullanacaksak, yalnızca bir tanesi public olarak tanımlanabilir. Aynı yerde iki veya daha fazla sınıf public olamaz.  Not: Erişim belirleyicileri doğru kullanmak, proje açısından önemlidir. Eğer yanlış bir kullanımda bulunursak izin verilmeyen kişiler, bazı erişilmesi istenen bilgileri okuyabilir.

31 Kapsülleme(Encapsulation) Getter ve Setter Metodlar  Getter ve Setter metodlar, private elemanlara başka sınıflardan kontrollü bir şekilde erişmeyi sağlar. Bu metodlar sayesinde private olan üyeler okunabilir veya değerleri değiştirilebilir.  Okuyabilmek için getter, yazabilmek için setter metodlar kullanılır.  Getter metodlar, okuma yaptığı için parametre almazlar. Setter metodlar ise private üyelere değer atadığı için parametre alırlar.

32

33 This Anahtar Kelimesi  this anahtar kelimesi, o anda işlem yapan nesnenin referansını döndürür. Bu referans ile nesne değişkenlerine erişilir.  this anahtar kelimesi sayesinde bir metod çağrıldığında, o metodun hangi nesne tarafından çağrıldığı bilinebilir.  this anahtar kelimesi, isim çakışmalarında karışıklığı önlemek için kullanılır.  this anahtar kelimesi kullanılarak nesne değişkeninin kullanılacağı belirtilir.

34

35 This Anahtar Kelimesi  This anahtar kelimesi bir metottan geriye değer olarak döndürülebilir.  this anahtar kelimesinin bir başka kullanım amacı da aynı sınıf içerisindeki başka bir yapıcıyı çağırmaktır.

36 Static Anahtar Kelimesi  Static anahtar kelimesi, kısaca sınıftaki alanlara nesne oluşturmadan erişmeyi sağlar.  Java ‘da her nesne için ayrı ayrı tutulan alanlar değil de bir sınıf için ortak tutulan alanlar oluşturmak istersek, bunun için yapmamız gereken static anahtar kelimesi kullanmaktır.  Oluşturacağımız alanların başına static anahtar kelimesi getirerek oluşturacağımız değişkenler, sınıf değişkenleri olarak adlandırılır. Bu alanlara sınıftan bir nesne oluşturmadan doğrudan sınıf adı ile erişim yapılabilir.

37

38 Static Anahtar Kelimesi Static Metodlar  Static metodlara en iyi örnek Math sınıfının metodlarıdır. Örneğin; Math sınıfının sqrt() fonksiyonunu kullanabilmek için bu sınıftan bir nesne oluşturmaya gerek yoktur. Doğrudan Math.sqrt(); fonksiyonunu kullanarak karekök aldırabiliriz. Bunun sebebi Math sınıfındaki tüm metodların static olarak tanımlanmasıdır.  Not: Static metodlar içerisinden static olmayan bir değişkene erişilemez ve static olmayan bir metod çağrılamaz. Fakat bunun tam tersi olabilir. Yani static olmayan bir metod içerisinden, static olan bir değişkene erişilebilir ve static olan bir metod çağrılabilir.

39 Static Anahtar Kelimesi Static İmport  Static olan metodlara sınıf adını yazmadan erişmek istiyorsak static import yöntemi kullanılır.  İmoprt kelimesinden sonra static getirerek Math sınıfının bütün metodlarını ekledik. Artık Math sınıfının bütün metodlarına doğrudan erişilebilir.

40 Enum Kavramı  Enum’lar sınıflara benzer. Kendilerine ait yapıcıları vardır. Bünyesinde üyeler barındırır.  Enum tanımlamak için enum anahtar kelimesi kullanılır.

41 Enum Kavramı  Not: Enum içerisindeki elamanlara değerlerde verilebilir.  Not: Enum içersindeki yapıcılar public olamaz ve enum’lar bir sınıftan türetilemezler.(Miras alamazlar)  Not: enum içerisindeki değerleri sonradan da verilebilir.

42 Enum Kavramı

43 Enum Kavramı Enum içerisindeki elamanları yazdırma  Enum içerisindeki elamanları tek tek yazırmak yerine foreach (gelişmiş for) ile yazıdırabiliriz.

44 Enum Kavramı Ordinal Metodu ile enum elemanlarının indisini öğrenme  Enumlar yapı olarak hem dizilere hem de sınıflara benzerler.  Enumların indisi vardır, ve dizilerdeki gibi sıfırdan başlar.

45 Enum Kavramı Enum içerisinde metod tanımlama Not: Tüm enum’lar java.lang.Enum sınıfından türetilmiştir.

46 Annotation Kavramı  Annotation, java koduna eklenebilen sınıf, metod, değişken, parametre ve pakatlere ön bilgi ve metadata eklemek için kullanılan yapılardır.  Annotation 3 şekilde kullaılabilir.  Derleyiciyi bilgilendirme için kullanılabilir. Bu tip kullanılan annotation’lar sayesinde derleyici hataları ve uyarıları görmezden gelir.  Derlenme ve yüklenme anında kullanılarak otomatik kod ve XML dosyası oluşturma gibi işlemlerde kullanılır.  Çalışma anında işletilerek annotation’a göre çalışması sağlanır.  Annotation’lar başına @ işareti yazılarak kullanılır. Her durumda annotation’lar bilgilendirilmek istenen nesneden önce gelmelidir.

47 Annotation Kavramı  @Override: Miras alınan sınıf içerisindeki bir metodu, alt sınıfta yeniden tanımlamak istediğimizde, derleyici bize bu annotation ile bildirir.  Deprecated: sürümü eski olan metodlar kullanıldığında, derleyici bizi bu annotation ile uyarır.  SuppressWarnings: parametre olarak vereceğimiz uyarı tipini derleyicinin göz ardı etmesini sağlar.

48 Annotation Kavramı Annotation Oluşturma  Javadaki annotation lar sadece derleyicinin bize sunduğu annotation’larla sınırlı değildir. Kendimiz özel durumlar için annotation yazabiliriz. Annotation yazmak interface yazmaya benzer. Annotation yazarken @interface anahtar kelimesi ile işaretlemeliyiz.  Eğer annotation’u bir birim ile sınıflandırmak istiyorsak, annotation’dan önce @Target anahtar kelimesini ve bunun tipini yazmamız gerekmektedir.

49 Annotation Kavramı Annotation Oluşturma  @Target(ElementType.TYPE): Sadece sınıf,enum ve interface için sınırlanır.  @Target(ElementType.PACKAGE): Sadece pakatler için sınırlandırılır.  @Target(ElementType.METHOD): Sadece metodlar için sınırlandırılır.  @Target(ElementType.LOCAL_VARIABLE): Sadece yerel değişkenler için sınırlandırlır.  @Target(ElementType.CONSTRUCTOR): Sadece yapıcı metod için sınırlandırılır.  @Target(ElementType.FIELD): Sadece sınıf üyeleri için sınırlandırılır.  @Target(ElementType.ANNOTATION_TYPE): Sadece annotation birimleri için tanımlanan annotation ile sınırlandırılır.

50 Annotation Kavramı Annotation Oluşturma  Derleyicini derleme anında annotation’a erişmesini istiyorsak @Retention(RetentionPolicy.RUNTIME) anahtar kelimesini annotation’dan önce yazmamız gerekmektedir.

51 Garbage Collector (Çöp Toplayıcı)  Java dilinin üstünlüklerinden biri de Garbage Collector yapıcısının bulunmasıdır. Programlarda bazı nesnelerin kullanımı bittiğinde bellekten silinmeleri gerekmektedir. C++ dilinde bu işi kendimiz yapıyorduk, fakat java’da otomatik olarak yapılıyor.  Çöp toplama isteğini JVM gönderir.  Garbage Collector otomatik olarak çalışır ancak istersek bizde çalıştırabiliriz.  Runtime.getRuntime.gc(); veya System.gc();

52 Garbage Collector (Çöp Toplayıcı) Finalize metodunun kullanımı  Java’da bir nesneği silmek istediğimizde ek olarak çalışan bir metod daha vardır. Bu metod finalize(); metodudur. Garbage Collector, nesneleri silmeden önce bu metodu çağırır ve kullanır.

53 Garbage Collector (Çöp Toplayıcı) Finalize metodunun kullanımı  Not : Nesnelerin silinme sırası, oluşturulma sıralarının tam tersidir. İlk oluşturulan nesne en son silinir.  Not : Dosya okuma yazma işlemlerinde de Stream kullanılarak bir işlem yaptığımızda o Stream’ı kapatmak için de finalize() metodu kullanılır. Okuma yazma işlemi için oluşturulan nesneler, finalize() metodu ile bellekten silinirler. Diyelim ki işlemler o1 nesnesi ile yaptık. o1.finalize(); diyerek nesneyi silebiliriz.  super.finalize() ile üst sınıfın finalize() metodu çağrılabilir.

54 Kaynak  KİRAZLI, M., ‘‘ Java 7:Yeni Başlayanlar için’’, Kodlab, 8.Baskı, Ekim,2015.


"10. NESNEYE YÖNELİK PROGRAMLAMA Öğr.Gör. Murat ASLANYÜREK." indir ppt

Benzer bir sunumlar


Google Reklamları