Nesne Yönelimli Programlama

Benzer belgeler
Erişim konusunda iki taraf vardır:

7. HAFTA. Erişim Belirleyiciler

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

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

Nesne Yönelimli Programlama

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

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

Java Dersi. Altuğ Bilgin Altıntaş

BİL-142 Bilgisayar Programlama II

BİL-141 Bilgisayar Programlama I (Java)

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

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 9

Programlama Dillerinde Kullanılan Veri Tipleri

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

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

Nesne Yönelimli Programlama

YZM 2105 Nesneye Yönelik Programlama

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6

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 tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

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

Sunum İçeriği. Programlamaya Giriş

NESNE TABANLI PROGRAMLAMA

İç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.

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

Hata Ayıklamanın Ötesi... (Assertion) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1

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

Nesne Yönelimli Programlama

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

Kalıtım (Inheritance)

Java Programlamada Paket Yapısı Ve Import

YZM 2105 Nesneye Yönelik Programlama

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

BTEP243 Ders 3. class Yazım Kuralı:

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

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

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Ders 8 Konu Özeti ve Problemler

JAVA DA GİRİŞ/ÇIKIŞ İŞLEMLERİ. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 1

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

BİL-142 Bilgisayar Programlama II

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;

YZM 2105 Nesneye Yönelik Programlama

Dizi ( Array ) ve Dizgi ( String )

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

YZM 2105 Nesneye Yönelik Programlama

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

public static int Toplam int x, int y

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İ

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Ana sınıf içerisinde tanımlanmış bir yordam, ana sınıftan türeyen bir alt sınıfın içerisinde iptal edilebilir. ()

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

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

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

Klavyeden Basit Giriş/Çıkış İşlemleri

İÇİNDEKİLER VII İÇİNDEKİLER

Nesneye Yönelik Programlama (OOP) 7.Hafta

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

HSancak Nesne Tabanlı Programlama I Ders Notları

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

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

C++ Dersi: Nesne Tabanlı Programlama

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

MPLAB PROGRAM GELİŞTİRME ORTAMINDA CC8E İLE KOD HAZIRLAMA HAZIRLAYAN: DOÇ. DR. HAMİT ERDEM ARAŞ. GÖR. GENCER TULAY

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

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Java Temel Özellikleri

Üst Düzey Programlama

Java da İstemci Tarafı Uygulamalar

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Göstericiler (Pointers)

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

Yeni G/Ç (new I/O) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 1

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

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

Genel Programlama II

NESNEYE YÖNELİK PROGRAMLAMA. Yrd.Doç.Dr. Zeynep ORMAN

HSancak Nesne Tabanlı Programlama I Ders Notları

Java Programlamada Paket Yapısı Ve Import

SINIFLARIN TEKRAR KULLANILMASI

Linux Kurulumu (Sürüm 1.52) İçindekiler

Öğr. Gör. Serkan AKSU 1

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

Üst Düzey Programlama

Üst Düzey Programlama

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

1 PROGRAMLAMAYA GİRİŞ

Ders 8: Metotlar. barisgokce.com

Nesne Yönelimli Programlama

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

JAVA PROGRAMLAMAYA GİRİŞ

İş Parçacıkları (Threads)

Nesneler için torbalar (Collections) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 1

Transkript:

1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Programlama Dili ve Yazılım Tasarımı, Altuğ B. Altıntaş, Papatya Yayıncılık, 2016 kitabı kullanılarak hazırlanmıştır. Konular Paket Varsayılan Paket Paket Oluşturma CLASSPATH Ayarları Çakışma Paket İçindeki Standalone Uygulamalar JAR Dosyaları Kapsülleme

2 Paket Erişimde iki taraf bulunur; kütüphaneyi kullananlar (clients) ve kütüphaneyi oluşturanlar. Java programlama dili dört adet erişim belirleyicisi sunmaktadır: friendly public private protected Paketler kütüphaneyi oluşturan elemanlardır. Bir paket içerisinde çok sayıda sınıf olabilir. 3 Paket Aşağıdaki gösterimde BufferedReader sınıf ismi java.io paketindedir (java.io Java ile gelen standart bir pakettir). Başka paketlerin içerisinde de BufferedReader sınıf ismi tekrar kullanılabilir. Yukarıda java.io paketinin içerisinde bulunan BufferedReader sınıfının kullanılacağı ifade edilmiştir. Paketin içerisindeki tek bir sınıfı kullanmak yerine, ilgili paketin içerisindeki tüm sınıfları kullanmak mümkündür. 4

3 Paket 5 Konular Paket Varsayılan Paket Paket Oluşturma CLASSPATH Ayarları Çakışma Paket İçindeki Standalone Uygulamalar JAR Dosyaları Kapsülleme

4 Varsayılan Paket.java uzantılı fiziksel dosya derlendiği zaman buna tam karşılık gelen.class uzantılı fiziksel dosya elde edilir..java dosyasında birden fazla sınıf tanımlanmış ise, tanımlanan her sınıf için ayrı ayrı fiziksel.class dosyaları üretilir..java uzantılı dosya ile public sınıfın ismi birebir aynı olmalıdır. 7 Varsayılan Paket Aşağıdaki dosya javac komutu ile derlendiğinde isimleri Test1.class ve Test2.class olan iki adet.class uzantılı fiziksel dosya elde edilir. Test1.java dosyasının en üstüne herhangi bir paket bildirimi yapılmadığından Java bu sınıfları varsayılan paket (default package) olarak tanımlar. 8

5 Varsayılan Paket Benzer şekilde aşağıdaki dosya aynı dizine Test3.java adıyla kayıt edilebilir. Compile işleminden sonra dizin aşağıdaki gibi olur. 9 Konular Paket Varsayılan Paket Paket Oluşturma CLASSPATH Ayarları Çakışma Paket İçindeki Standalone Uygulamalar JAR Dosyaları Kapsülleme

6 Paket Oluşturma Paketlerde aynı amaca yönelik sınıflar bir çatı altında toplanır. Aşağıdaki Test1.java dosyası herhangi bir dizine yerleştirilemez, tr.edu.kou.util paketine ait bir sınıftır. Test1.java dosyasının bu paket ismiyle aynı dizin yapısına kayıt edilmesi gerekir. 11 Paket Oluşturma Test1.java dosyası içerisinde belirtilen Test1 sınıfının ismi artık tr.kou.edu.util.test1 dir. 12

7 Paket Oluşturma Paket isimleri için kullanılan yapı İnternet alan isim sistemiyle (Internet DNS) aynıdır. İnternet alan adı sistemi, www.kou.edu.tr adresinin dünya üzerinde tek olacağını garantiler. Aynı mantık, paket isimlerine de uygulanarak, paket içerisindeki sınıf isimlerinin çakışması engellenir. 13 Konular Paket Varsayılan Paket Paket Oluşturma CLASSPATH Ayarları Çakışma Paket İçindeki Standalone Uygulamalar JAR Dosyaları Kapsülleme

8 CLASSPATH Ayarları Java yorumlayıcısı CLASSPATH e bakarak import ifadesindeki paketi bulur. math paketi aşağıdaki dizinde bulunsun: Yorumlayıcının import ifadesindeki paketi bulması için aşağıdaki tanımın CLASSPATH e eklenmesi gerekir. 15 CLASSPATH Ayarları 16

9 CLASSPATH Ayarları 17 Konular Paket Varsayılan Paket Paket Oluşturma CLASSPATH Ayarları Çakışma Paket İçindeki Standalone Uygulamalar JAR Dosyaları Kapsülleme

10 Çakışma Ayrı paket içerisinde aynı isimdeki sınıflar uygulamada kullanılırsa karışıklık olur. Aynı adlara sahip sınıflar farklı paketlerde ise açık yolunu yazmak gerekir. tr.edu.kou.util paketinin içerisine kendi ArrayList sınıfımızı oluşturalım. Aynı programda import edilirse java.util.* içindeki ArrayList ile çakışma olacaktır. 19 Çakışma 20

11 Çakışma Aynı adlara sahip sınıflar farklı paketlerde ise açık yolunu yazmak gerekir. 21 Konular Paket Varsayılan Paket Paket Oluşturma CLASSPATH Ayarları Çakışma Paket İçindeki Standalone Uygulamalar JAR Dosyaları Kapsülleme

12 Paket İçindeki Standalone Uygulamalar Paket içerisindeki tek başına çalışabilen uygulamaları (standalone) herhangi bir dizinden çalıştırmak için komut satırına ilgili paket ismi+sınıf ismi girilmesi yeterlidir. Hesaplama.java nın yeni uyarlaması c:\kodlar\bolum4\tr\edu\kou\math dizinine kaydedilsin. 23 Paket İçindeki Standalone Uygulamalar Hesaplama sınıfı tr.edu.kou.math paketinin yeni bir üyesidir. Hesaplama sınıfı java komutu ile çalıştırılabilir. C:\kodlar\bolum4 dizininin CLASSPATH değişkeninde tanımlı olduğu varsayılıyor. Hesaplama sınıfı bulunamaz!!! tr.edu.kou.math sınıfının üyesidir. 24

13 Konular Paket Varsayılan Paket Paket Oluşturma CLASSPATH Ayarları Çakışma Paket İçindeki Standalone Uygulamalar JAR Dosyaları Kapsülleme JAR Dosyaları JAR dosya formatı dosyaların arşivlenmesine ve sıkıştırılmasına olanak tanır. JAR dosyaları içerisinde sınıf dosyaları (*.class) bulunur. Applet lerde, yardımcı dosyalar (gif, jpeg...) JAR dosyası içerisine konulabilir. Oluşturulan paketler JAR dosyası içerisine yerleştirilerek daha kolay yönetilebilir bir yapı elde edilmiş olur. 26

14 JAR Dosyaları JAR dosyasının sağladığı yararlar şöyledir: Güvenlik: Dijital olarak JAR dosyasının içeriği imzalanabilir. Sizin imzanızı tanıyan kişiler JAR dosyasının içeriğini kullanabilirler. Sıkıştırma: Bir çok dosya güvenli bir şekilde arşivleyip sıkıştırılabilir. İndirme zamanını azaltması: Arşivlenmiş ve sıkıştırılmış dosyalar İnternet üzerinde daha çabuk indirilebilir. Paket mühürleme: Versiyon uyumluluğunu sağlamak amacı ile JAR dosyasının içerisindeki paketler mühürlenebilir. Paket uyarlama: JAR dosyaları, içindeki dosyalar hakkında bilgiler saklayabilirler, örneğin üretici firmaya ait bilgiler, versiyon bilgileri gibi. Taşınabilirlik: Java Platformunun standart bir üyesi olan JAR dosyaları kolaylıkla taşınabilir. 27 JAR Dosyaları tr.edu.kou.math ve tr.edu.kou.util paketleri tek bir JAR dosyasında birleştirilebilir. JAR dosyası oluşturmak için komutun hangi dizinde yürütüldüğü önemlidir. 28

15 JAR Dosyaları Aşağıda JAR dosyası işlemleri için gerekli olan bazı komutlar verilmiştir: 29 JAR Dosyaları Oluşturulan JAR dosyası CLASSPATH eklenerek, Java nın bu paketleri bulması sağlanabilir. Aşağıdaki ifade kullanılabilir. kou.jar dosyası, C:\kodlar\bolum4 dizininin altındaki dizin yapılarının aynısını kendi içerisinde barındırır. 30

16 JAR Dosyaları Java, CLASSPATH değerlerinden yola çıkarak JAR dosyasını bulup açar. tr\edu\kou\util ve tr\edu\kou\math dizinlerine erişebileceğinden bir sorun yaşanmayacaktır. JAR dosyasının hangi dizinde olduğu önemli değildir, önemli olan ilgili jar dosyasının sistemin CLASSPATH değişkenin tanımlı olmasıdır. Paketlerin içerisindeki sınıflar geliştikçe güncelliği korumak adına JAR dosyasını tekrar oluşturmak (jar cvf,...) gerekebilir. 31 JAR Dosyaları JAR dosyası içindeki bir uygulamayı çalıştırmak JAR dosyası içeriğini dışarı çıkartmadan tek başına çalışabilir (standalone) java uygulamaları çalıştırılabilir. JAR dosyası içerisinde tr.edu.kou.math paketi altındaki Hesaplama sınıfı aşağıdaki gibi çalıştırılır. Eğer kou.jar dosyası, CLASSPATH değişkeninde tanımlı değilse, java komutuna kullanılacak JAR dosyasının adresi classpath parametresiyle birlikte verilebilir. 32

17 Konular Paket Varsayılan Paket Paket Oluşturma CLASSPATH Ayarları Çakışma Paket İçindeki Standalone Uygulamalar JAR Dosyaları Kapsülleme Java dilinde 4 tür erişim belirleyici vardır: friendly public protected private Bu erişim belirleyiciler global alanlar (statik veya değil) ve yordamlar (statik veya değil) için kullanılabilir. Ayrıca, sınıflar için (dahili sınıflar hariç inner class) sadece public ve friendly erişim belirleyicileri kullanılabilir. 34

18 friendly friendly erişim belirleyicisi global alanlara (statik veya değil), yordamlara (statik veya değil) ve sınıflara atanabilir. friendly türünde erişim belirleyicisine sahip olan global alanlar (statik veya değil) içerisinde bulundukları paketin diğer sınıfları tarafından erişilebilirler. Fakat, diğer paketlerin içerisindeki sınıflar tarafından erişilemezler. Diğer paketlerin içerisindeki sınıflara karşı private erişim belirleyici etkisi oluşturmuş olurlar. 35 friendly friendly yordamlara, yalnızca paketin kendi içerisindeki diğer sınıflar tarafından erişilebilir. friendly yordamlara diğer paketlerin içerisindeki sınıflar tarafından erişilemezler. Aynı şekilde, sınıflara friendly erişim belirleyicisi atanabilir. friendly erişim belirleyicisine sahip sınıfa, aynı paket içerisindeki diğer sınıflar erişilebilir. Ancak, diğer paketlerin içerisindeki sınıflar erişemezler. 36

19 friendly Bir global alan veya sınıf friendly yapılmak isteniyorsa önüne hiç bir erişim belirleyicisi konulmaz (default). tr\edu\kou\ dizini altına yeni bir dizin oluşturup, ismini gerekli verelim. Yani tr\edu\kou\gerekli paketini oluşturmuş olduk. Bunun içerisine adları Robot ve Profesor olan 2 adet friendly sınıf yazalım. 37 friendly Asistan sınıfı tr.edu.kou.util paketi altında tanımlandığı için tr.edu.kou.gerekli paketi altında tanımlı olan Robot sınıfına hiç bir şekilde erişemez. 38

20 friendly 39 public public erişim belirleyicisine sahip olan sınıflara, global alanlara ve yordamlara herkes tarafından erişilebilir. public erişim belirleyicisine sahip olan global alanlar veya yordamlar herhangi bir yerden doğrudan çağırılabilir. 40

21 public Örnekte, tr.edu.kou.util paketindeki Makine sınıfının 2 adet global alanı (devir_sayisi ve model) bulunmaktadır. 41 public int türündeki devir_sayisi alanı friendly erişim belirleyicisine sahiptir. Sadece tr.edu.kou.util paketinin içerisindeki diğer sınıflar tarafından erişilebilir. Diğer String tipindeki model alanı ise her yerden erişilebilir (public erişim belirleyicisine sahiptir). degeral() yordamı public erişim belirleyicisine sahiptir yani her yerden erişilebilir. Aynı şekilde degerata(int deger) yordamı da her yerden erişilebilir. calis() yordamı friendly belirleyicisine sahiptir, sadece tr.edu.kou.util paketinin içerisindeki sınıflar erişebilir. 42

22 public Aşağıdaki örnekte tr.edu.kou.util paketinin altındaki tüm sınıfların kullanılacağı belirtilmiştir. Ustabasi sınıfının yapılandırıcısında public olan Makine sınıfına ait bir nesne oluşturulabilir. Oluşturulan nesnenin friendly erişime sahip olan devir_sayisi alanına ve calis() yordamına erişilemez. Ustabasi sınıfı tr.edu.kou.util paketinde değildir. 43 private private olan global alanlara ve yordamlara (sınıflar private olamazlar, dahili sınıflar-inner class hariç) aynı paket içerisinden veya farklı paketlerden erişilemez. private olan global alanlara ve yordamlara ait olduğu sınıfın içinden erişilebilir. 44

23 private Kahve sınıfının yapılandırıcısı private olarak tanımlanmıştır. Başka bir sınıf, Kahve sınıfının yapılandırıcısını çağıramaz. private yapılandırıcı aynı sınıftaki yordamlar tarafından çağırılabilir (siparisgarson()). 45 private private olarak tanımlanmış global alanlara ve yordamlara aynı paket içerisinde olsa bile kesinlikle erişilemez. 46

24 private 47 protected Sadece global alanlar ve yordamlar protected erişim belirleyicisine sahip olabilirler. Sınıflar protected erişim belirleyicisine sahip olmazlar (dahili sınıflar-inner class hariç). Ancak, sınıflar friendly veya public erişim belirleyicisine sahip olabilirler. protected erişim belirleyicisi kalıtım (inheritance) konusu ile ilişkilidir. Kalıtım konusu hakkında kısaca, bir sınıftan başka sınıfların türetilmesi denilebilir. 48

25 protected Yukarıda şu ifade edilmiştir: Her Kedi bir Hayvandır. Hayvan sınıfından Kedi türetilmiştir. Bizim oluşturacağımız her Kedi nesnesi bir Hayvan olacaktır. Her türetilen yeni kedi, kendisine özgü özellikleri de taşıyacaktır. 49 protected Hayvan sınıfından türetilen Kedi sınıfı tr.edu.kou.gerekli paketi içerisine yerleştirilmiş olsun. 50

26 protected 51 Konular Paket Varsayılan Paket Paket Oluşturma CLASSPATH Ayarları Çakışma Paket İçindeki Standalone Uygulamalar JAR Dosyaları Kapsülleme

27 Kapsülleme Kapsülleme (encapsulation), nesneye yönelik programlama özelliklerinden birisidir. Dışarıdaki başka bir uygulama nesnelerle sadece arabirimler (public) sayesinde iletişim kurar. Ancak, arka planda işi yapan esas kısım gizlenir. Olaylara bu açıdan bakıldığında, nesneler iki kısma bölünmelidir: Interface (arabirim): Nesnenin dünya ile iletişim kurabilmesi için gerekli kısımlardır. Implementation: İşlevleri gerçekleştiren kısımlardır. 53 Kapsülleme Makine2 nesnesine get() ve set() yordamları erişebilir. Geriye kalan global alanlara veya calis() yordamına ulaşım söz konusu değildir. Nesne iki kısımdan oluşturulmuştur. 1) interface get() set() 2) implementation calis() 54

28 Kapsülleme Başka bir paket içerisinde olan uygulama, tr.edu.kou.util.makine2 sınıfının sadece iki yordamına erişebilir, get() ve set() 55 Kapsülleme Sınıflar için erişim tablosu (Sınıflar protected veya private olamazlar). Örneğin bir A sınıfı olsun: public A sınıfına aynı paketin içerisindeki başka bir sınıf erişebilir. public A sınıfına ayrı paketin içerisindeki başka bir sınıf erişebilir. public A sınıfına ayrı paketten erişebildiğinden buradan yeni sınıflar türetilebilir. friendly A sınıfına aynı paketin içerisindeki başka bir sınıf erişebilir. friendly A sınıfına ayrı paketin içerisindeki başka bir sınıf erişemez. friendly A ya ayrı paketten erişilemediğinden, buradan yeni sınıflar türetilemez. 56

29 Kapsülleme Statik veya statik olmayan yordamlar için erişim tablosu (Yordamlar public, protected, friendly ve private olabilir). Örneğin, public X sınıfının içerisinde f() yordamı olsun: public f() yordamı, aynı paket içerisinden erişilebilir. protected f() yordamı, hem aynı paket içerisinden hem de X sınıfından türetilmiş ayrı paketteki bir sınıf tarafından erişilebilir. friendly f() yordamı, yalnızca aynı paket içerisinden erişilebilir. private f() yordamına, yalnızca kendi sınıfı içerisinden erişilebilir. Başka bir sınıfın bu yordama erişmesi mümkün değildir. 57 Kapsülleme Statik veya statik olmayan global alanlar için erişim tablosu (Global alanlar public, protected, friendly ve private olabilir). Örneğin public X sınıfının içerisindeki String sınıfı tipindeki uzunluk adında bir alanımız olsun: public uzunluk alanı, aynı paket içerisinden erişilebilir. protected uzunluk alanı, hem aynı paket içerisinden, hem de X sınıfından türetilmiş ayrı paketteki bir sınıf tarafından erişilebilir. friendly uzunluk alanı, yalnızca aynı paket içerisinden erişilebilir. private uzunluk alanı, yalnızca kendi sınıfı içerisinden erişilebilir. Başka bir sınıfın bu alana erişmesi mümkün değildir. 58

30 Araştırma ödevi Procedural programming, structured programming, object based programming, object oriented programming, event-driven programming hakkında araştırma ödevi hazırlayınız. - Ödev bir veya birkaç kaynaktan olduğu gibi alınarak hazırlanmayacaktır. Metin hazırlayanın kendisi tarafından oluşturulacaktır. - Ödevi hazırlarken kullanılan kaynakların tümü ödevin sonunda listelenecektir. - Ödevlerde öğrenci numarası ve adı soyadı yazılı olan bir kapak sayfası olacaktır. 59