Görsel C # ile Windows Programlama Güz 200 9 ( 7 . Hafta) - PowerPoint PPT Presentation

slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Görsel C # ile Windows Programlama Güz 200 9 ( 7 . Hafta) PowerPoint Presentation
Download Presentation
Görsel C # ile Windows Programlama Güz 200 9 ( 7 . Hafta)

play fullscreen
1 / 59
Görsel C # ile Windows Programlama Güz 200 9 ( 7 . Hafta)
168 Views
Download Presentation
ima-hess
Download Presentation

Görsel C # ile Windows Programlama Güz 200 9 ( 7 . Hafta)

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Görsel C# ile Windows Programlama Güz 2009 (7. Hafta)

  2. Kompozisyon (Composition) • Bir sınıf, üye değişkeni olarak başka sınıfların nesnelerini kullanıyorsa bu durum bir kompozisyondur. • Kompozisyonlar çoğu zaman has-a-relationship olarak da nitelendirilirler.

  3. Date.cs (1 of 5)

  4. Date.cs (2 of 5)

  5. Date.cs (3 of 5) Validates month value

  6. Date.cs (4 of 5) Validates day value

  7. Date.cs (5 of 5)

  8. Employee contains references to two Date objects Employee.cs Implicit calls to hireDate and birthDate’s ToString methods

  9. EmployeeTest.cs Create an Employee object Display the Employee object

  10. Garbage Collection ve Yıkıcılar (Destructors) • Garbage Collection otomatik olarak belleği kontrol eden ve artık kullanımda olmayan nesnelerin işgal ettiği bellek alanlarının yeniden kullanılabilmesini sağlayan bir mekanizmadır. • Nesneler bir daha ihtiyaç duyulmadıklarında yok edilirler. Bu işlemi yıkıcılar yani destructor lar dediğimiz yapılar garbage collector tarafından çağrılarak gerçekleştirirler. Yıkıcılar da yapıcılar (constructor) gibi sınıfın adıyla aynı olurlar. Yapıcılardan tek farkları sınıf adının önüne getirilen ~işaretidir.

  11. Hatırlatma...... • Bir sınıf kullandığı herhangi bir sistem kaynağını (diskten okuyup islem yaptığı bir dosya gibi) işi bittiği zaman serbest bırakmalıdır. Birçok FCL sınıfı bu amaçla CloseveyaDisposemetodlarını kullanır.

  12. staticÜye Değişkenler • staticüye değişkenler bir sınıfın bütün nesnelerinin ortak kullandığı değişkenlerdir. static olmayan üye değişkenler hatırlanacağı üzere herbir nesne için farklı değerlere sahip olabiliyorlardı. • staticüye değişkenlere deklare edildiklerinde muhakkak bir ilk değer ataması yapılmalıdır. Aksi takdirde derleyicinin kendisi bir ilk değer ataması yapar. (Örneğin static bir int değişkenine sıfır değerini atar derleyici.)

  13. Declare a static field Employee.cs (1 of 3) Increment static field

  14. Declare a destructor Employee.cs (2 of 3)

  15. Employee.cs (3 of 3) Declare static property Count to get static field count

  16. EmployeeTest.cs (1 of 3) Create new Employee objects Call static property Count using class name Employee

  17. EmployeeTest.cs (2 of 3) Remove references to objects, CLR will mark them for garbage collection Call static method Collect of class GC to indicate that garbage collection should be attempted Call static property Count using class name Employee

  18. EmployeeTest.cs (3 of 3)

  19. readonlyÜye Değişkenler • readonlyüye değişkenlerin değerleri sonradan değiştirilemez. Bu değişkenlere ya deklare edildiklerinde bir ilk değer ataması yapılır ya da atama işlemi bir constructor içerisinde gerçekleştirilir.

  20. Declare readonly instance variable Increment.cs Initialize readonly instance variable inside a constructor

  21. IncrementTest.cs Create an Increment object Call method AddIncrementToTotal

  22. Hatırlatma.... • readonly tanımlanan üye değişkenleri sınıfın bütün nesnelerinde farklı kopya değerleri ile temsil edilirler. Eğer bütün nesneler için aynı sabit değere sahip bir üye değişken isteniyorsa bu durumda constkullanılmalıdır. constsanki dolaylı olarak tanımlanmış sabit bir statik değişken gibi değerlendirilir.

  23. Class View ve Object Browser • Two features of Visual Studio to facilitate object-oriented applications • Class View Window (Fig. 9.21) • Display the fields and methods for all classes in project • When a class is selected, the class’s members are shown on the lower half of the window • Object Browser (Fig. 9.22) • Lists all classes in the C# library (left frame) • Learn the functionality provided by specific classes • Methods provided on the upper-right frame • Description of members appears in the lower-right frame

  24. Fig. 9.21 | Class View of class Time1 (Fig. 9.1) and class TimeTest (Fig. 9.2).

  25. Fig. 9.22 | Object Browser for class Math.

  26. Kalıtım (Inheritance) • Kalıtım (inheritance) bir yazılımın tekrar tekrar kullanılabilmesine ve mevcut sınıflardan (base class) yeni sınıflar (derived class) oluşturulabilmesine imkan verir. Bu sayede yeni oluşan sınıf eski sınıfın üye değişkenleri ve metodlarını kullanabilmenin yanında kendisinin belirleyeceği yeni veya ek özellikleri de programına eklemiş olur.

  27. Kalıtım Örnekleri

  28. Kalıtım Hiyerarşisi

  29. protected Erişim • protected erişim public ile private arasında bir yerde bulunur. protected üye değişkenleri hem base class ve hem de derived class tarafından erişilebilir. • derived class ın nesneleri base class ın private olarak tanımlanmış üye değişkenlerine erişemezler. Derived class ın nesneleri bu tür üye değişkenlere sadece public tanımlanmış base class metodları ile ulaşabilirler.

  30. base Class-derived Class İlişkisi • CommissionEmployee • First name, last name, SSN, commission rate, gross sale amount • BasePlusCommissionEmployee • First name, last name, SSN, commission rate, gross sale amount • Base salary

  31. class CommissionEmployee • C#’ta bütün sınıflar System.Object sınıfından türetilmiştir. Dolayısıyla bütün sınıflar System.Object sınıfının tüm metodlarını kullanabilirler. Bir sınıfın dolaylı olarak belirtilmese bile ima yoluyla System.Object sınıfından türetildiği bilinmelidir. • Bir base class ın bir metodunun işlevi aynı metod adıyla derived class içerisinde değiştirilmek isteniyorsa metod override anahtar kelimesiyle tanımlanmalıdır. Derived class içerisinde override edilmesi muhtemel metodlar base class içerisinde virtual anahtar kelimesiyle tanımlanmalıdırlar. • Yapıcılar kalıtım kapsamına girmezler. Derived class ların yapıcıları ilk iş olarak base class ın yapıcısını çağırırlar.

  32. Class CommissionEmployee extends class object Declare private instance variables CommissionEmployee.cs (1 of 4) Implicit call to object constructor Initialize instance variables Invoke properties GrossSales and CommissionRate to validate data

  33. CommissionEmployee.cs (2 of 4)

  34. CommissionEmployee.cs (3 of 4)

  35. Override method ToString of class object Calculate earnings CommissionEmployee.cs (4 of 4)

  36. Instantiate CommissionEmployee object CommissionEmployeeTest.cs (1 of 2) Use CommissionEmployee’s properties to retrieve and change the object’s instance variable values

  37. CommissionEmployeeTest.cs (2 of 2) Implicitly call the object’s ToString method

  38. class BasePlusCommissionEmployee • CommissionEmployee sınıfını tanımlarken kullanılan programa çok benzer. Farklı olarak sadece baseSalary adında private bir üye değişkeni ve BaseSalary adında bir üye metodu eklenmiştir.

  39. Add instance variable baseSalary BasePlusCommissionEmployee.cs (1 of 5) Use property BaseSalary to validate data

  40. BasePlusCommissionEmployee.cs (2 of 5)

  41. BasePlusCommissionEmployee.cs (3 of 5)

  42. Validates data and sets instance variable baseSalary Update method Earnings to calculate the earnings of a base-salaried commission employee BasePlusCommissionEmployee.cs (4 of 5)

  43. BasePlusCommissionEmployee.cs (5 of 5) Update method ToString to display base salary

  44. Instantiate BasePlusCommissionEmployee object Use BasePluCommissionEmployee’s properties to retrieve and change the object’s instance variable values BasePlusCommissionEmployeeTest.cs (1 of 2)

  45. Implicitly call the object’s ToString method BasePlusCommissionEmployeeTest.cs (2 of 2)

  46. Hatırlatma....... • Bir sınıftan kod parçası kopyalayıp başka bir sınıfı oluşturmak muhtemel hataları da beraberinde kopyalamak demektir. Böyle bir yaklaşım yerine (kopyala ve yapıştır) kalıtım kullanmak daha doğrudur.

  47. Class BasePluCommissionEmployee2 is a derived class of CommissionEmployee BasePlusCommissionEmployee2.cs (1 of 2) Invoke the base class constructor using the base class constructor call syntax

  48. BasePlusCommissionEmployee2.cs (2 of 2) Compiler generates errors because base class’s instance variable are private

  49. Declare protected instance variables CommissionEmployee2.cs (1 of 4)

  50. CommissionEmployee2.cs (2 of 4)