4.Hafta. this Anahtar Sözcüğü

Benzer belgeler
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 3

Başlangıç Durumuna Getirme ve Temizlik

Başlangıç Durumuna Getirme ve Temizlik. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 1

3.1. Başlangıç Durumuna Getirme İşlemi ve Yapılandırıcılar (Initialization and Constructor)

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BİL-141 Bilgisayar Programlama I (Java)

7. HAFTA. Erişim Belirleyiciler

Sunum İçeriği. Programlamaya Giriş

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

NESNEYE YÖNELİK PROGRAMLAMA

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Nesne Yönelimli Programlama

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

Java String İşlemleri

İki Yöntem. Komposizyon (Composition) Kalıtım (Inheritance)

Sınıfların Tekrardan Kullanılması. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 1

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 4. Yrd.Doç.Dr.Hacer Karacan

Java da İşleçler, Ders #3 (4 Kasım 2009)

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

11- FONKSİYONLAR (FUNCTIONS)

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 7

3.Hafta. . Kontrol Deyimleri/İfadeler

Erişim konusunda iki taraf vardır:

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

BMH-303 Nesneye Yönelik Programlama

public static int Toplam int x, int y

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 9

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA

Nesne Yönelimli Programlama

JAVADA DİZİ İŞLEMLERİ

Bölüm 10 Statik ve Anlık Öğeler

Nesne Tabanlı Programlama

Örnek 1: Programı yazın ve çalıştırın.

C++ Dersi: Nesne Tabanlı Programlama

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

NESNEYE YÖNELİK PROGRAMLAMA

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6

Operator Aşırı Yükleme (Operator OverLoading)

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 9. UYGULAMA

DÖNGÜLER BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA DENEY-4 FÖYÜ GİRİŞ LABORATUARI.

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Lambda İfadeleri (Lambda Expressions)

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

Nesne Yönelimli Programlama

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

BTEP243 Ders 3. class Yazım Kuralı:

Nesne Yönelimli Programlama

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

İçerik. Kapsülleme ( Encapsulation ) Java da Kalıtım: Örnek 2.1. Kalıtım ( Inheritance ) Tekrar Ziyaret. Java da Kalıtım: Örnek 2.2.

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir.

Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 8: Sınıf (Class) Yapılarına Giriş

ÜNİTE. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA İÇİNDEKİLER HEDEFLER METOTLAR

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

İş Parçacıkları (Threads)

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Java ve Yazılım Tasarımı ; Bölüm- 4 PAKET ERİŞİMLERİ

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

C++ Dersi: Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ

YMT219 VERİ YAPILARI ÖDEV-1

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Programlama Dilleri 3

MAT213 Bilgisayar Programlama I

RSA ANAHTAR DAĞITIMI VE RSA İLE DİJİTAL İMZA OLUŞTURMA

DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Doç. Dr. Aybars UĞUR

Statik veri üyeleri sınıf dosyası içerisinde, ancak sınıf bildirimi dışında başlatılmalıdır. Statik üye fonksiyonları

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

D İ Z İ L E R A R R A Y S

Transkript:

this Anahtar Sözcüğü this anahtar sözcüğü, içinde bulunulan nesneye ait bir referans döndürür; bunun sayesinde nesnelere ait global alanlara erişme fırsatı bulunur. Şöyle ki: Örnek: TarihHesaplama.java public class TarihHesaplama { int gun, ay, yil; public void gunekle(int gun) { this.gun += gun ; public void gunuekranabas() { System.out.println("Gun = " + gun); public static void main(string[] args) { TarihHesaplama th = new TarihHesaplama(); th.gunekle(2); th.gunekle(3); th.gunuekranabas(); Gun = 5 Peki, gunekle() yordamının içerisinde this.gun ifadesi yerine sadece gun ifadesi kullanılsaydı sonuç nasıl değişirdi? Örnek: TarihHesaplama2.java public class TarihHesaplama2 { int gun, ay, yil; public void gunekle(int gun) { gun += gun ; public void gunuekranabas() { System.out.println("Gun = " + gun); public static void main(string[] args) { TarihHesaplama2 th = new TarihHesaplama2(); th.gunekle(2); th.gunekle(3); th.gunuekranabas(); Uygulamanın çıktısı aşağıdaki gibi olur:. 1

Gun = 0 TarihHesaplama nesnesine ait olan global gun alanına herhangi bir değer ulaşmadığı için sonuç sıfır olacaktır. Yordam Çağrımlarımda this Kullanımı Gösterim: class Uzum { void sec() { /*... */... void cekirdeginicikar() { sec(); /*... */ Bir yordamın içerisinde diğer yordamı çağırmak gayet basit ve açıktır ama sahne arkasında derleyici, çağrılan bu yordamın önüne this anahtar kelimesini gizlice yerleştirir: yani, fazladan this.sec() denilmesinin fazla bir anlamı yoktur. Aşağıdaki örnek this anahtar kelimesinin, içinde bulunduğu nesneye ait nasıl bir referansın alındığını çok net bir biçimde göstermektedir. Örnek: Yumurta.java public class Yumurta { int toplam_yumurta_sayisi = 0; Yumurta sepetekoy() { toplam_yumurta_sayisi++; return this; void goster() { System.out.println("toplam_yumurta_sayisi = " + toplam_yumurta_sayisi); public static void main(string[] args) { Yumurta y = new Yumurta(); y.sepetekoy().sepetekoy().sepetekoy().goster(); sepetekoy() yordamı Yumurta sınıfı tipinde değer geri döndürmektedir. return this diyerek, oluşturulmuş olan Yumurta nesnenin kendisine ait bir referans geri döndürülmektedir. sepetekoy() yordamı her çağrıldığında Yumurta nesnesine ait, toplam_yumurta_sayisi global alanın değeri bir artmaktadır. Burada dikkat edilmesi gereken husus, this anahtar kelimesi ancak nesnelere ait olan yordamlar içinde kullanılabilir. Nesnelere ait olan yordamlar ve statik yordamlar biraz sonra detaylı bir şekilde incelenecektir. Uygulama sonucu aşağıdaki gibi olur: toplam_yumurta_sayisi = 3 2

Bir Yapılandırıcıdan Diğer Bir Yapılandırıcıyı Çağırmak Bir yapılandırıcıdan diğerini çağırmak this anahtar kelimesi ile mümkündür. Örnek: Tost.java public class Tost { int sayi ; String malzeme ; Public Tost() { this(5); // this(5,"sucuklu");!hata!-iki this kullanılamaz System.out.println("parametresiz yapilandirici"); public Tost(int sayi) { this(sayi,"sucuklu"); this.sayi = sayi ; System.out.println("Tost(int sayi) " ); public Tost(int sayi,string malzeme) { this.sayi = sayi ; this.malzeme = malzeme ; System.out.println("Tost(int sayi,string malzeme) " ); public void siparisgoster() { // this(5,"kasarli");!hata!-sadece yapılandırıcılarda kullanılır System.out.println("Tost sayisi="+sayi+ "malzeme =" + malzeme ); public static void main(string[] args) { Tost t = new Tost(); t.siparisgoster(); Bir yapılandırıcıdan this ifadesi ile diğer bir yapılandırıcıyı çağırırken dikkat edilmesi gereken kurallar aşağıdaki gibidir: Yapılandırıcılar içerisinden this ifadesi ile her zaman başka bir yapılandırıcı çağrılabilir. Yapılandırıcı içerisinden, diğer bir yapılandırıcıyı çağırırken this ifadesi her zaman ilk satırda yazılmalıdır. Yapılandırıcılar içerisinde birden fazla this ifadesi ile başka yapılandırıcı çağrılamaz. Uygulama sonucu aşağıdaki gibi olur: Tost(int sayi,string malzeme) Tost(int sayi) parametresiz yapilandirici Tost sayisi =5 malzeme =Sucuklu Statik Alanlar (Sınıflara Ait Alanlar) 3

Sadece global olan alanlara statik özelliği verilebilir. Yerel değişkenlerin statik olma özellikleri yoktur. Global alanları tür olarak iki çeşide ayırabiliriz: statik olan global alanlar ve nesnelere ait global alanlar. Statik alanlar, bir sınıfa ait olan alanlardır ve bu sınıfa ait tüm nesneler için ortak bir bellek alanında bulunurlar, ayrıca statik alanlara sadece bir kez ilk değerleri atanır. Örnek: StatikDegisken.java public class StatikDegisken { public static int x ; public int y ; public static void ekranabas(statikdegisken sd ) { System.out.println("StatikDegisken.x = " + sd.x + " StatikDegisken.y = " + sd.y ); public static void main(string args[]) { StatikDegisken sd1 = new StatikDegisken(); StatikDegisken sd2 = new StatikDegisken(); x = 10 ; // sd1.x = 10 ; // x = 10 ile ayni etkiyi yapar // sd2.x = 10 ; // x = 10 ile ayni etkiyi yapar sd1.y = 2 ; sd2.y = 8; ekranabas(sd1); ekranabas(sd2); Bu uygulamada StatikDegisken sınıfına ait iki adet nesne oluşturulmaktadır; daha sonradan StatikDegisken sınıfının statik olan x alanına 10 değeri atanmaktadır. Artık oluşturulacak olan tüm StatikDegisken tipindeki nesneler için bu x değeri ortaktır. Yalnız dikkat edilecek olursa StatikDegisken nesnelerine ait olan global y alanı her bir StatikDegisken nesnesi için farklıdır. Uygulamanın çıktısı aşağıdaki gibidir. StatikDegisken.x = 10 StatikDegisken.y = 2 StatikDegisken.x = 10 StatikDegisken.y = 8 Statik Yordamlar (Static Methods) Statik yordamlar (sınıf yordamları) nesnelerden bağımsız yordamlardır. Statik bir yordamı çağırmak için herhangi bir nesne oluşturulmak zorunda değildir. Statik olmayan yordamlardan (nesneye ait yordamlar) statik yordamları rahatlıkla çağırabilmesine karşın, statik yordamlardan nesne yordamlarını doğrudan çağrılamaz. () Örnek: StatikTest.java () public class StatikTest { public static void hesapla(int a, int b) { /*static yordam doğrudan nesneye ait bir yordamı çağıramaz */ // islemyap(a,b); //!Hata! public void islemyap(int a, int b) { 4

/*doğru, nesneye ait bir yordam, static bir yordamı çağırabilir*/ hesapla(a,b); Örnek: Toplama.java () public class Toplama { public static double topla(double a, double b ) { double sonuc = a + b ; return sonuc ; Bu örneğimizde görüldüğü üzere topla() yordamının amacı sadece kendisine gelen iki double değerini toplamak ve sonucu geri döndürmektir. topla() yordamı Toplama sınıfına ait bu nesnenin durumu ile ilgili herhangi bir görev üstlenmediği için statik yordam (sınıf yordamı) olarak tanımlanması gayet mantıklıdır. Ayrıca topla() yordamını çağırmak için Toplama sınıfına ait bir nesne oluşturmak da çok gereksiz durmaktadır. Şimdi Toplama sınıfı içerisindeki statik olan topla() yordamını kullanan bir uygulama yazalım. () Örnek: ToplamaIslemi.java () public class ToplamaIslemi { public static void main(string args[]) { if (args.length < 2) { System.out.println("Ltf iki adet sayi giriniz"); System.exit(-1); // uygulama sonlanacaktır double a = Double.parseDouble(args[0]); double b = Double.parseDouble(args[1]); double sonuc = Toplama.topla(a,b); // dikkat System.out.println("Sonuc : " + sonuc ); ToplamaIslemi sınıfı, kullanıcıdan aldığı parametreleri öncelikle double tipine dönüştürmektedir. Daha sonra bu değerleri Toplama sınıfının topla() yordamına göndererek, toplatmaktadır. Dikkat edileceği üzere topla() yordamını çağırmak için Toplama sınıfına ait bir nesne oluşturma zahmetinde bulunmadık. Yukarıdaki uygulamamızı aşağıdaki gibi çalıştıracak olursak, () > java ToplamaIslemi 5.5 9.2 14.7 5

Uygulama Çalışmaları: 1- Kullanıcıdan aldığı sayının asal olup olmadığını kontrol eden bir java programı yazınız. 2- Aşağıda çalışma adıyla verilen uygulama çalışmalarını yapınız 6

7

8

9

Kaynaklar 1- Papatya Yayıncılık Java Yazılım Tasarımı 2- Murathan Yayıncılık- Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR 10