Bilgisayar Programlamanın Temelleri-I PDF
Document Details
Uploaded by AdvancedSugilite2489
OSTİM Teknik Üniversitesi
Dr.Şahin YAŞAR
Tags
Summary
Bu belge, OSTİM TEKNİK ÜNİVERSİTESİ'nde verilen “bilgisayar programlamanın temelleri-I” dersinin notlarını içermektedir. Erişim düzenleyicileri, kapsülleme ve kapsam kavramları açıklanmaktadır. Ders notları, farklı erişim düzenleyicilerinin kullanımını örneklerle göstermektedir.
Full Transcript
YÖNETİM BİLİŞİM SİSTEMLERİ YBS111 – Bilgisayar ve Programlamanın Temelleri-I ERİŞİM DÜZENLEYİCİLERİ , KAPSÜLLEME VE KAPSAM Dr.Şahin YAŞAR KAVRAMLARA GİRİŞ Erişim düzenleyicileri – Aynı ve farklı sınıfların üyeleri arasındaki etkile...
YÖNETİM BİLİŞİM SİSTEMLERİ YBS111 – Bilgisayar ve Programlamanın Temelleri-I ERİŞİM DÜZENLEYİCİLERİ , KAPSÜLLEME VE KAPSAM Dr.Şahin YAŞAR KAVRAMLARA GİRİŞ Erişim düzenleyicileri – Aynı ve farklı sınıfların üyeleri arasındaki etkileşimleri belirler. Kapsülleme, uygun erişim düzenleyicileri kullanarak verileri (değişkenler) ve davranışları (yöntemler) yetkisiz erişim ve değişikliklere karşı gizler. Kapsam, değişkenlerin, yöntemlerin ve sınıfların görünürlüğünü ve yaşam süresini ifade eder. – Çift küme (süslü) parantezi, { }, sınıf üyelerinin kapsamını/ gövdesini işaretler. 10/27/2024 2 Dr. Şahin YAŞAR ERİŞİM DÜZENLEYİCİLERİ Bir sınıfa ve üyelerine erişilebilirliği kontrol Sözdizimi: [Erişim düzenleyici] Dört tür: – private: sadece aynı sınıf içinde erişilebilir – varsayılan: aynı paket içinde erişilebilir – protected: alt sınıf, farklı paketlerde bulunsa bile üst sınıfın üyelerine erişebilirlik kazanır – public: paketlerden bağımsız olarak tüm sınıflar tarafından erişilebilir 10/27/2024 3 Dr. Şahin YAŞAR ERİŞİM DÜZENLEYİCİLERİNİN UYGULANABİLİRLİĞİ Erişim düzenleyicilerinin sınıf ve üyelerine uygulanabilirliği: Erişim Sınıf Üyeleri Düzenleyicileri İç İçe Sınıf Kurucu Metot Alan Sınıf private Hayır Evet Evet Evet Evet default Evet Evet Evet Evet Evet protected Hayır Evet Evet Evet Evet public Evet Evet Evet Evet Evet 10/27/2024 4 Dr. Şahin YAŞAR public ANAHTAR SÖZCÜĞÜ public anahtar sözcüğü değişkenleri (alanları), kurucuları ve yöntemleri değiştirebilir Bildirim deyimlerinde ve ifadelerde public anahtar sözcüğünü kullanırız. Genel olarak değiştirilen deyim ve ifadelere projenin herhangi bir yerinden erişilebilir/etkileşime girilebilir. – Genel olarak değiştirilen sınıflara ve üyelerine erişilebilirlik sınırı yoktur. – Farklı paketlerde bulunan sınıflardan etkileşime girilebilir. 10/27/2024 5 Dr. Şahin YAŞAR Örnek public Düzenleyicisi package tasaruf; public class BankaHesap{ public double bakiye; } public class Musteri { public double paraCek(double miktar){ BankaHesap bankaHesapNesne = new BankaHesap(); return bankaHesapNesne.bakiye - miktar; } } 10/27/2024 6 Dr. Şahin YAŞAR Varsayılan (anahtar sözcüksüz) ERİŞİM DÜZENLEYİCİ Paket-özel erişimi olarak da bilinen varsayılan erişim düzenleyicisi, belirli bir erişim düzenleyicisi bildirilmediğinde kullanılır. Sınıf üyelerine (alanlar, yöntemler, kurucular) erişimi paket düzeyinde kontrol eder. Aynı paket içindeki diğer sınıflar, varsayılan erişime sahip üyelere erişebilir. Alt sınıf olsalar bile, farklı paketlerdeki alt sınıflara veya diğer paketlerdeki sınıflara görünürlük sağlamaz. Kısaca söylemek gerekirse, anahtar kelimenin olmaması aşağıdakilere erişim sağlar: – Sınıfın kendisine ve – Aynı paket içindeki sınıflara 10/27/2024 7 Dr. Şahin YAŞAR Örnek varsayılan (anahtar sözcüksüz) Düzenleyici package hafta3 class UstSnf { String mesaj = "Merhaba"; // Varsayılan erişim düzenleyici void mesajGoster() { // varsayılan erişim düzenleyici System.out.println(mesaj); } } package hafta3 public class Test { public static void main(String[] args) { UstSnf ustSnf = new UstSnf(); ustSnf.mesajGoster(); // Aynı paket içinde erişilebilir } 10/27/2024 8 Dr. Şahin YAŞAR protected ANAHTAR SÖZCÜĞÜ protected erişim düzenleyicisi, varsayılan (anahtar sözcüksüz) erişim düzenleyicilerine ilave bir erişim ayrıcalığı ekleyerek, alt sınıfların farklı paketlerde olsalar bile üst sınıfın alanlarına ve yöntemlerine erişmesini sağlar. Başka bir deyişle, protected erişim düzenleyicisi, kalıtım ve paket yapısına bağlı olarak sınıf üyelerinin (alanlar, yöntemler, kurucular) görünürlüğünü kontrol eder. Kısaca söylemek gerekirse, protected anahtar sözcüğü aşağıdakilere erişim sağlar: – Sınıfın kendisine ve – Aynı paket içindeki sınıflara. – Paketlerden bağımsız olarak kalıtım yoluyla alt sınıflara. (örneğin, ana sınıfın bir nesnesi değil, alt sınıfın bir nesnesi protected üyelere erişir). 10/27/2024 9 Dr. Şahin YAŞAR Örnek protected Düzenleyicisi -1 package aile; class UstSnf { protected String mesaj = "Merhaba"; protected void mesajGoster() { System.out.println(mesaj); } } package aile; class AltSnf extends UstSnf { public void goster() { mesajGoster(); // Miras yoluyla erişilebilir } } 10/27/2024 10 Dr. Şahin YAŞAR Örnek protected Düzenleyicisi - 2 package tasaruf; public class BankaHesap{ protected double bakiye; } package giderler; public class Musteri extends BankaHesap{ public double paraCek(double miktar){ return super.bakiye - miktar; } } 10/27/2024 11 Dr. Şahin YAŞAR private ANAHTAR SÖZCÜĞÜ private anahtar sözcüğü değişkenleri (alanları), kurucuları ve yöntemleri değiştirebilir. Bildirim deyimlerinde ve ifadelerde private anahtar sözcüğünü kullanırız. Özel olarak düzenlenen deyim ve ifadeler, bildirildikleri sınıf içinde erişilebilir/etkileşime açıktır. – Özel olarak işaretlenmiş üyelere sadece aynı sınıf içinde erişilebilir. – Aynı pakette olsalar bile diğer sınıflar tarafından görülemezler. – Özel üyeler alt sınıflar tarafından miras alınmaz. – Alt sınıflar üst sınıflarının özel üyelerine doğrudan erişemezler. 10/27/2024 12 Dr. Şahin YAŞAR private ANAHTAR SÖZCÜĞÜ ve KAPSÜLLEME private anahtar sözcüğü public anahtar sözcüğünün tersidir, yani private ifadelere yalnızca kendi sınıflarında erişilebilir. private olarak işaretlenmiş sınıf üyeleri yalnızca aynı sınıfın üyeleriyle etkileşime girebilir. Yani, bir sınıf private olarak işaretlenemez. private, kapsüllemeye yardımcı olur ve hangi verilerin dış dünyaya maruz kalacağı üzerinde kontrol sağlar. Örnek alanlarımızı ve örnek yöntemlerimizi private yaparak kapsülleme adı verilen bir mantık demeti oluşturabiliriz. – Gerektiğinde genellikle getter ve setter yöntemleri aracılığıyla erişim sağlarız. 10/27/2024 13 Dr. Şahin YAŞAR Örnek private Düzenleyicisi package tasaruf; public class BankaHesap{ private double bakiye; } public class Musteri { public double paraCek(double miktar){ BankaHesap bankNesne = new BankaHesap(); return bankObj.bakiye - miktar; // hata verir } } 10/27/2024 14 Dr. Şahin YAŞAR KAPSÜLLEME Yöntemleri ve alanları tek bir birim olarak tipik şekilde bir sınıf olarak bir araya getirmeye kapsülleme denir. Kapsülleme, erişim düzenleyicileri (private, public, vb.) kullanılarak uygulanır. – Ana fikir, verileri yetkisiz erişim ve değişikliklerden gizlemek ve korumaktır. – Verilere getter ve setter yöntemleri aracılığıyla kontrollü erişim sağlar. – Kapsüllemenin Temel Faydaları: Veri Gizleme: Dahili veriler dış müdahalelerden gizlenir. Kontrollü Erişim: Sınıf verilerine public metotlar aracılığıyla kontrollü erişim sağlar. Artırılmış Esneklik: Bir sınıftaki değişiklikler onu kullanan diğer sınıfları etkilemez. Geliştirilmiş Bakım Kolaylığı: Koddaki değişikliklerin yönetimi daha kolaydır. 10/27/2024 15 Dr. Şahin YAŞAR Örnek Kapsülleme package tasaruf; public class BankaHesap{ private double bakiye; public double getBakiye() { return bakiye; } } public class Musteri { public double paraCek(double miktar){ BankaHesap bankNesne = new BankaHesap(); return bankNesne.getBakiye() - miktar; } } 10/27/2024 16 Dr. Şahin YAŞAR GETTER ve SETTER YÖNTEMLERİ Getter/erişim yöntemleri – private örnek alanlarının değerini geri alır – Her zaman public olarak işaretlenir ve örnek (instance) değişken/alan ile aynı veri tipine sahiptir. Setter/değiştirici yöntemleri – private örnek alanının değerini sıfırlar. – Örnek değişken/alan ile aynı veri tipine sahip bir parametre alarak metodu geçersiz kılar. 10/27/2024 17 Dr. Şahin YAŞAR Örnek Setter ve Getter Metotları public class Kopek{ private String isim; public Kopek(String isim) { this.isim = isim; } //Diğer metotlar ve kurucular public String getIsim() { return isim; } public void setIsim(String isim) { this.isim = isim; } public static void main(String[] args){ Kopek kopek = new Kopek("Lassie "); kopek.setIsim("Karabaş");//Karabas'a çevirir System.out.println(kopek.getIsim()); //Karabas'ı döndürür ve ekrana yazdırır } } 10/27/2024 18 Dr. Şahin YAŞAR ERİŞİM DÜZENLEYİCİLERİ ÖZETİ Her erişim düzenleyicisi veriye erişim kapsamında farklı senaryolarda nasıl çalışır: Düzenleyici Sınıf Aynı Alt Paket Dış Paket Paket (Diğer Paket) public Evet Evet Evet Evet private Evet Hayır Hayır Hayır protected Evet Evet Evet (kalıtım Hayır yoluyla) Default Evet Evet Evet Hayır 10/27/2024 19 Dr. Şahin YAŞAR KAPSAM Kapsam, değişkenlerin, yöntemlerin ve sınıfların görünürlüğünü ve yaşam süresini ifade eder. Bir değişken veya metodun bir program içinde nereden erişilebileceğini veya kullanılabileceğini belirler. Java'da çeşitli kapsam seviyeleri vardır: – Sınıf Kapsamı (Statik Kapsam) – Örnek (instance) Kapsamı (Nesne Kapsamı) – Yöntem Kapsamı (Yerel Kapsam) – Blok Kapsamı Bu kapsam türlerini teker teker inceleyelim. 10/27/2024 20 Dr. Şahin YAŞAR SINIF KAPSAMI (STATİK KAPSAM) Bir sınıf içinde static olarak bildirilen değişkenler. Sınıfın tüm yöntemleri tarafından erişilebilir (sınıfının her yerinden erişilebilir). Sınıf belleğe yüklendiği sürece var olur. class Ornek { static int snfDegiskeni = 10; // Sınıf düzeyinde değişken public void degeriYaz() { System.out.println(snfDegiskeni);// Buradan erişilebilir } public static void main(String[] args) { Ornek obj = new Ornek(); obj.degeriYaz(); // Çıktı: 10 // ALTERNATİF OLARAK System.out.println(snfDegiskeni); // Buradan erişilebilir } 21 Dr. Şahin YAŞAR 10/27/2024 ÖRNEK KAPSAMI (NESNE KAPSAMI) Bir sınıf içinde bildirilen ancak static olmayan değişkenler. Sınıfın her nesnesi bu değişkenlerin kendi kopyasına sahiptir. Nesne var olduğu sürece var olur. Örnek bir sonraki yansıdadır. 10/27/2024 22 Dr. Şahin YAŞAR ÖRNEK KAPSAMI (NESNE KAPSAMI) class Ornek { int instanceVariable = 20; // Örnek(instance) düzeyinde değişken public void degeriYaz() { System.out.println(instanceVariable); // Örnek yöntemlerde erişilebilir } public static void main(String[] args) { Ornek obj1 = new Ornek(); Ornek obj2 = new Ornek(); obj1.instanceVariable = 25; // obj1 için değişiklik obj2.instanceVariable = 30; // obj2 için değişiklik obj1.degeriYaz(); // Çıktı: 25 obj2.degeriYaz(); // Çıktı: 30 } } 10/27/2024 23 Dr. Şahin YAŞAR YÖNTEM KAPSAMI (YEREL KAPSAM) Bir yöntem içinde bildirilen değişkenler. Yalnızca o yöntem içinde erişilebilir. Yalnızca yöntemin yürütülmesi sırasında var olur ve yöntem bittikten sonra yok edilir. Örnek bir sonraki yansıdadır. 10/27/2024 24 Dr. Şahin YAŞAR ÖRNEK YÖNTEM KAPSAMI (YEREL KAPSAM) class Ornek { public void goster() { int yerelDeg = 50; // Yerel değişken System.out.println(yerelDeg); // Yalnızca kendi yöntemi içinde erişilebilir } public static void main(String[] args) { Ornek obj = new Ornek(); obj.goster(); // Çıktı: 50 System.out.println(yerelDeg); // Hata:yerelDeg burada erişilebilir değil } } 10/27/2024 25 Dr. Şahin YAŞAR BLOK KAPSAMI Bir blok içinde bildirilen değişkenler, {} (örneğin, if, for, while, vb.). Yalnızca o blok içinde erişilebilir. Yalnızca blok süresince var olur. public class Ornek { public static void main(String[] args) { if (true) { int blokDeg = 100; // Blok düzeyinde değişken System.out.println(blokDeg); // Burada erişilebilir } // System.out.println(blokDeg); // Hata: blokDeg burada erişilemez } } 10/27/2024 26 Dr. Şahin YAŞAR Ders Sonu Sorular Laboratuvar Zamanı 10/27/2024 27 Dr. Şahin YAŞAR