DELEGATE OOP-UYG.

Slides:



Advertisements
Benzer bir sunumlar
Programlama-II (Java ile Bilgisayar Programlama)
Advertisements

Saatte V km hız ile giden bir aracın t zamanda aldığı yolu bulan metodu yazınız. Metodu kullanacak bir program yazınız. ( yol=hız*zaman, x=V*t) — Metot.
C# - Metotlar.
Fonksiyonlar.
Nesnelerin Özellikleri. - Üye nesneler - friend belirtesi - Nesnelerin operatörlere yüklenmesi - this yerel (lokal) değişkeni - inline tanımlı üye fonksiyonlar.
LINQ { C# 3.0 ve Language Integrated Query }
Tuğba DEMİREL
SINIFLAR Yılmaz Kılıçaslan.
NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR
Programlama-II (Java ile Bilgisayar Programlama)
Nesneye Dayalı Programlama
OOP UYGULAMA 5.
BPR151 ALGORİTMA VE PROGRAMLAMA - I
BPR152 ALGORİTMA VE PROGRAMLAMA - II
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Namespaces and .NET Class Library (İsim Alanları Sınıf Kütüphanesi)
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR, NESNE DİZİLERİ Yılmaz Kılıçaslan.
Nesne Tabanlı Programlama
SINIFLAR GİRİŞ Yılmaz Kılıçaslan.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
NESNEYE YÖNELİK PROGRAMLAMA
DİZİLER.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Erişim Denetimi, Fonksiyon
METODLAR.
C# Metot Overloading (Aşırı yükleme)
İSİM UZAYLARI (NAMESPACE)
NESNEYE DAYALI PROGRAMLAMA
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
.Net teknolojisi ve C# Yasin Gedik Dokuz Eylül Üniversitesi (4. Sınıf) Microsoft Danışman Öğrenci
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
LINQ (Language Integrated Query)
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
Net Class Framework ’ ün en üst yapısına İsim Uzayı denir. İsim uzayları ; pascal programlama dilinde 1990 ve hatta öncesinden beri varolmuş, C’de yer.
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Metotlar.
METOTLAR.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller Aslı Ergün.
Önceki Dersi Hatırlama !!
METODLAR Esra SARI.
C# ile Seri İletişim Aslı Ergün.
JAVA’DA DÖNGÜLER.
Numaralandırmalar(Enumaration)
Kalıtım , Sınıf Asli Ergün.
Demet AYDIN METODLAR Demet AYDIN
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Sınıflar ve Nesneler Sınıf: bir nesnenin şablonunu, kalıbını, şeklini, davranışını, kalıtımını değişkenleri, metodları ve ebeveynleri vasıtasıyla tanımlar.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Bölüm 5 Nesneler ve Metotlar
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller
ODTU-SEM Copyright (c) 2011 Kalıtım(Inheritance) Subclass lar tüm method ve attributes larının superclass ından alırlar. Bu işlem için extends keyword.
SINIFLAR ve NESNELER. İlk sınıfımızı ekleyelim class KrediHesap { public ulong HesapNo; public double Limit; public string KartSahibi; }
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Hafta2 Rekürsif Algoritmalar
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
C dili kullanıcıya kendi ihtiyacı olan bir fonksiyonu yazma imkanı vermiştir. Bir sayının faktöriyelini almaya ihtiyaç duyduğumuzu ve aynı zamanda asal.
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Kurucular(Yapıcılar), Yıkıcılar
Nesneye Dayalı Programlama 1
Nesneye Dayalı Programlama 1
ÇOK BİÇİMLİLİK(POLYMORPHİSM)
Sunum transkripti:

DELEGATE OOP-UYG

Delegate en basit anlamıyla metod referansıdır Delegate en basit anlamıyla metod referansıdır. Yani delegate metod referansını tutar. Delegate tanımlanırken metodun geri dönüş değeri ve parametreleri belirlenir. Geri dönüş değerini void ve parametresiz tanımlamak da mümkündür. Kullanılacak metod, tanımlanmış olan delegate geri dönüş ve parametrelerine uygun olmalıdır. Delegenin(delegate) başvurduğu bir metodu dinamik olarak değiştirebiliriz. Dolayısıyla bir delegeyi çağıran kod her çalıştığında farklı bir metod çalıştırabilir. Delegate kullanılması metodları daha rahat kontrol etmemizi sağlayacak ve uygulamamızın performansını artıracaktır. http://www.erenguvercin.com/2013/05/c-delegate-kullanm.html

Delegateler de nesne referanslarına benzerler, fakat aradaki temel fark bir nesneye değil metoda referans etmeleridir. Not: Delagateler C++ da kullanılan fonksiyon pointerlarına benzerler.

ÖRNEK1 Markette satın alınan ürünler için fiş çıkaracaksınız. Satın alınan ürünün kaç tane olduğunu biliyorsunuz. Bu ürünler için hem KDV dahil hem de KDV hariç fiyatlarını göstereceksiniz. Bunun için iki ayrı metod tanımlayabilir ve bunları delegate yardımıyla kullanabilirsiniz. Örneğimizin kodları ve açıklamaları aşağıdaki gibi.

using System; using System. Collections. Generic; using System using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program public delegate decimal Hesaplama(int adet); static void Main(string[] args) Hesaplama del = Fiyat; Console.WriteLine("KDV Hariç 5 Ürün" + " Fiyatı: {0}", del(5)); del = KDVFiyat; //delegate değiştiriliyor Console.WriteLine("KDV Dahil 5 Ürün" + Console.ReadLine(); } static decimal Fiyat(int sayi) { //Fiyat 10.5 kabul edilerek hesaplandı. (KDV Hariç) return sayi * 10.5m; } static decimal KDVFiyat(int sayi) decimal kdvharicfiyat = sayi * 10.5m; //KDV %18 düşünüldü return kdvharicfiyat + kdvharicfiyat * 0.18m; http://www.erenguvercin.com/2013/05/c-delegate-kullanm.html

ÖRNEK2 delegate int MathOperation(int x, int y);" ile basit bir delege tanımı yapalım. Tanımı yaparken saklayacağı metodların dönüş tiplerinin int olması gerektiğini ve bu metodların int tipinde 2 parametre alması gerektiğini belirtelim. Daha sonra ise "MathOperation mathOp = new MathOperation(SimpleMath.Add)“ ile mathOp delege nesnesi oluşturalım. Nesne örneği oluşturulurken construtor üzerinden bu delege nesnesine SimpleMath.Add metodunu saklaması için eklenecek. delegemiz bu metodu saklar hale gelecek. "mathOp(5,3)" bu şekilde delege nesnemiz üzerinden sakladığı metot olan SimpleMath.Add metoduna 5 ve 3 değerlerini verip bu metodu çalıştıralım. Program çalıştığında çıktı 5+3'ten "Add : 8" şeklinde olacaktır.

public static int Subtract(int x, int y) { int retVal = x - y; Console public static int Subtract(int x, int y) { int retVal = x - y; Console.WriteLine("Subtract : " + retVal); return retVal; } static void Main(string[] args) MathOperation mathOp = new MathOperation(SimpleMath.Add); mathOp(5, 3); Console.ReadKey(); using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program delegate int MathOperation(int x, int y); public class SimpleMath public static int Add(int x, int y) int retVal = x + y; Console.WriteLine("Add : " + retVal); return retVal; } http://safakunel.blogspot.com.tr/2013/12/c-delegate-kullanimi-delege-nedir.html

ÖRNEK3 public delegate int hesap(int sayi1,sayi2); dikdörtgenin alanı hesaplanacak bunu için yukarıda yazdığımız delegate tanımlamasını kullanacağız hesap isimli bir delegate tanımlanacak, aynı özelliklere sahip alan isimli bir metot tanımlanacak program kısmında hesap isimli delegate kullanmak için temsilci değişkeni ile 5 ve 3 bilgilerini göndererek hesaplama işlemini gerçekleştirilecektir.

static void Main(string[] args) { hesap temsilci = new hesap(alan); Console.WriteLine("Dikdörtgenin alanı=" + temsilci(5, 3)); Console.ReadKey(); } using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication4 { class Program public delegate int hesap(int sayi1, int sayi2); static int alan(int s1, int s2) return s1 * s2; } http://www.bilisimogretmeni.com/visual-studio-c/visual-studio-c-dersleri-c-delegate-temsilci-kullanimi-2.html

ÖRNEK4 Birden fazla metod olduğunda;

static void Main(string[] args) { hesap temsilci = new hesap(alan); temsilci += cevre; Delegate[] dizi = temsilci.GetInvocationList(); Console.WriteLine("Dikdörtgenin alanı=" + dizi[0].DynamicInvoke(5, 3)); Console.WriteLine("Dikdörtgenin cevresi=" + dizi[1].DynamicInvoke(5, 3)); Console.ReadKey(); } using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication4 { class Program public delegate int hesap(int sayi1, int sayi2); static int alan(int s1, int s2) return s1 * s2; } static int cevre(int s1, int s2) return 2 * s1 + 2 * s2;

Önceki örneğimizde olduğu gibi direk temsilci(5,3) yazarak programı çalıştırırsanız sadece cevre metotu çalışır çünkü çoklu metot kullanan temsilcilerde en son tanımlanan metot ilk çalıştırılıyordu.Biz tüm metotların aynı çalışmasını istediğimiz için delegate içinde tanımlı her metotda ayrı ayrı bilgileri göndermemiz gerekiyor bunun için Delegate[] dizi = temsilci.GetInvocationList(); satırı ile tanımlı metotların listesini dizi isimli değişkene aktarıp dizi[0].DynamicInvoke(5,3) ve dizi[1].DynamicInvoke(5,3) satırları ile metotlara ayrı ayrı bilgileri göndermiş olduk

ÖRNEK5 OrnekDelegate ismi ile tanımladığımız delegateimiz hem Topla hemde Cikar fonksiyonlarına aynı anda işaret ederek tek bir seferde ile ikisini birden çağırabilir. Aşağıdaki örneğimiz de göreceğiniz gibi += ile delegate’e yeni metot eklerken -= ilede daha önce eklediğimiz metodu çıkarabiliriz.

static void Main(string[] args) { OrnekDelegate aritmetikMetodlar; aritmetikMetodlar = new OrnekDelegate(Topla); aritmetikMetodlar += new OrnekDelegate(Cikar); aritmetikMetodlar(2, 5); aritmetikMetodlar -= new OrnekDelegate(Topla); aritmetikMetodlar(3, 9); Console.ReadLine(); } using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication4 { class Program delegate void OrnekDelegate(int a, int b); static void Topla(int a, int b) Console.WriteLine("a + b = {0}", a + b); } static void Cikar(int a, int b) Console.WriteLine("a - b = {0}", a - b); http://www.yazilimmutfagi.com/10165/dersler/cSharp/yazilim-mutfagi-dersleri-cSharp-ders-8-cSharp-da-delegate-tanimlama-ve-kullanimi.aspx