Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Nesneye Dayalı Programlama 1

Benzer bir sunumlar


... konulu sunumlar: "Nesneye Dayalı Programlama 1"— Sunum transkripti:

1 Nesneye Dayalı Programlama 1
Öğretim Görevlisi Alper Talha KARADENİZ

2 Örnek: Yamuğun alanını hesaplayan program
Alan = (taban+tavan)/2*yukseklik İlk olarak Yamuk isimli bir sınıf (class) oluşturup koda dahil edilmelidir. Bir yamuk nesnesi tarif edebilmek için taban, tavan ve yükseliğe ihtiyaç vardır. Bu elemanları sınıfımıza dahil edelim. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace YamukAlaniHesapla { class Yamuk double taban; double tavan; double yukseklik; }

3 Örnek: Yamuğun alanını hesaplayan program
double türünden tanımladığımız taban, tavan, yüksekli bilgilerine eğer sınıf içersinde değer verirsek yamuk nesnesininden ziyade herseferinde ölçüleri belli bir yamuk tanımı yapılmış olur. Halbuki isteğimiz yamuk nesnesi her oluşumunda kendisini tarif edilebilen değerler alabilmesi olmalıdır. Dolayısıyla Yamuk sınıfının bir örneği (instance) oluştuktan sonra değer verilmelidir. Bir sınıfın bir örneğini oluşturma “Nesne” oluşturma denir ve new anahtar söcüğü ile olur ve aşağıdaki şekilde tanımlanır. Sinif_ismi degisken_ismi = new Sinif_ismi();

4 Örnek: Yamuğun alanını hesaplayan program
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace YamukAlaniHesapla { class Program static void Main(string[] args) Yamuk y = new Yamuk(); }

5 Örnek: Yamuğun alanını hesaplayan program
Artık şablonumuz içersinde oluşturduğumuz alanlara değer verebiliriz. Bunun içinde “y” isimli nesne isminden sonra nokta(.) operatörü kullanılır. Bunun nedeni NDP özellikleri olan soyutlama (abstracttion) ve Sarmalamadır(encapsulation, bilgi saklama).

6 NDP Temel Kavram I: Sarmalama (Encapsulation)
Kodu, veriyi veya nesneyi dış müdahalelerden koruyabilmek, oluşturulma amacı dahilinde kullanabilmek ve kullanılmayacağı yerlerde gösterimini engellemek için sarmalamaya ihtiyaç duyulmuştur. Bir sınıf içinde bulunan üyelerin, o sınıfı kullananlar tarafından erişilip, erişilemeyeceğini belirlemeye yarar. Örnek vermek gerekirse arabamızı çalıştırdığımızı düşünelim, biz sadece anahtarı yerine sokup çeviriyoruz değil mi, o anda arka planda olan hiç bir işleme karışmıyor ve müdahale edemiyoruz, yani ben anahtarı çevirince o motora giden enerjiyi açıyor, benzini pompalıyor ve buna benzer bir dizi işlemi sırayla yapıyor ama biz bununla ilgilenmiyoruz ve buna erişemiyoruz, işte bu mekanizma bizim erişmememiz için kapsüllenmiştir. Aksi taktirde kaputu açıp enerjiyi biz vermeye kalksaydık istenmeyen durumlarla karşılaşabilirdik. Bu çok uç bir örnek oldu farkındayım o yüzden daha basit bir örnek vermek gerekirse hepimiz cep telefonu kullanıyoruz, mesaj yazarken birini ararken tuşlara basıyoruz ama telefonun içindeki devrelere erişmemiz engellenmiştir. Bu işlemi yapabilmemiz için tuş takımı geliştirilmiştir. Yani bu devreler bir nevi kapsüllenmiştir. Sarmalama erişim denetleyicileri ile sağlanmaktadır.

7 Erişim Denetleyicileri (Access Modifiers)
Diğer sınıfların veya sınıf gruplarının, sınıf yada sınıf üyelerine erişimi düzenleyen/kısıtlayan anahtar kelimelerdir. Pratikte yaygın olarak kullanılan anlayış, bir programcı bir sınıfı (class) oluşturur ve daha sonra diğer programcılar bu class’ı kendi kodlarında kullanırlar. Nesneye dayalı programlamanın önemli özelliklerinden bir tanesi olan encapsulation, sınıf değişkenlerine erişimi kısıtlayarak sınıfı oluşturan kişinin sınıfını korumasını sağlamaktadır. Aşağıdaki anahtar sözcükler, metot veya değişkenlere erişimi kısıtlamak veya izin vermek için kullanılırlar.

8 Erişim Denetleyicileri (Access Modifiers)
Public :Bu şekilde tanımlanmış bir metot veya değişkene herhangi bir yerden ulaşmak mümkündür. Private :Bu şekilde tanımlanmış bir metot veya değişkene sadece sınıf içinden ulaşmak mümkündür. Protected :Bu şekilde tanımlanmış bir metot veya değişkene tanımlandıkları sınıftan veya bu sınıftan türetilmiş sınıflardan ulaşılabilir. Internal :Bu şekilde tanımlanmış bir metot veya değişkene tanımlandıkları sınıftan ve tanımlandıkları sınıfla aynı assembly’de olan sınıflardan ulaşmak mümkündür. (C#’a ait anahtar kelimedir.) Protected Internal :Bu şekilde tanımlanmış bir metot veya değişken hem protected hem de Internal özelliğindedir. (C#’a ait anahtar kelimedir.)

9 Erişim Denetleyicileri (Access Modifiers)
Bu noktada unutlamaması gereken 5 husus vardır: 1. İşletim sistemleri bir tipin public, protected yada private olmasıyla ilgilenmez. Dolayısıyla hafıza takibi ile üyelerin değerlerine ulaşılabilmektedir. 2. Her programcı kendi yazdığı sınıfın güvenliğinden ve güvenirliğinden sorumludur. Eğer herhangi bir sınıf üyesinin private ile tanımlanması yeterli olduğu halde public ile dış dünyaya açılırsa programcılar bu üyeyi istedikleri gibi kullanılabilirler. Bu durum NDP’nin soyutlama prensibine aykırıdır. 3. Her dilin kabul ettiği default değerleri farklıdır. C# private, Java public olarak kabul etmektedir. Ancak programın okunabilirliği açısından erişim denetleyicilerin default değeri her ne olursa olsun belirtilmesi tavsiye edilmektedir. 4. Sınıf üyelerinden alanların public ile sınıf dışına açılması önerilmemektedir. (Sınıf üyelerinden özellikler konusunda açıklanacaktır.) 5. Bir sınıfın kendisinin private olarak tanımlanmasının hiç bir anlamı yoktur. Dolayısıyla derleyiciler hata vermektedir.

10 Örnek: Yamuğun alanını hesaplayan program
Erişim denetleyicileri ile Yamuk sınıfını tekrar düzenlersek; public class Yamuk { public double taban; public double tavan; public double yukseklik; } class Program { static void Main(string[] args) Yamuk y = new Yamuk(); y.taban = 5; y.tavan = 6; y.yukseklik = 8; double alan = (y.taban + y.tavan) / 2 * y.yukseklik; Console.WriteLine(alan); Console.ReadLine();

11 Örnek: Yamuğun alanını hesaplayan program
İkinci bir yamuk nesnemizi oluşturarak sonuçları ekrana yazdıralım. class Program { static void Main(string[] args) Yamuk x = new Yamuk(); x.taban = 3; x.tavan = 4; x.yukseklik = 5; double alan2 = (x.taban + x.tavan) / 2 * x.yukseklik; Console.WriteLine("X: " + alan2); }

12 Partial class Sadece C# ‘a özgü bir terimdir.
Büyük projelerde sıklıkla kullanılan bir yöntemdir. Normalde herhangi bir sınıfı bir kez oluşturduğumuzda, aynı isim ile tekrar aynı sınıfı oluşturamayız veya herhangi bir şekilde başka bir yerde kullanamayız. Ancak Partial tanımlanan bir sınıfı başka bir yerde aynı isimle oluşturulabilir. Bu sayede bir sınıfta yapacağımız işlemleri ayrı ayrı yerlerde yapabiliriz. Kod derlenirken tek bir sınıfmış gibi beraber derlenmektedir. Büyük projelerde çalışırken özellikleri bir sınıfta, metotları başka bir sınıfta kullanmamızı ve kodun okunmasının kolaylaşmasını sağlar.

13 Partial class public partial class Urun { public int UrunId { get; set; } public string UrunAdi { get; set; } } Public int ekle(int Urunid, string Urunadi) { // komutlar public void yaz()

14 Kaynaklar Öğr. Gör. Özgür Çiftçi
Nesne Tabanlı Programlama Ders Notları


"Nesneye Dayalı Programlama 1" indir ppt

Benzer bir sunumlar


Google Reklamları