Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Ders Hakkında ► Ders Kredi si : 2+2 ► LAB : 355 ► Değerlendirme:  % 30 - Arasınav  % 20 - Proje  % 6 - Kısa sınav  % 4 - Devam  %40 - Yılsonu sınavı.

Benzer bir sunumlar


... konulu sunumlar: "Ders Hakkında ► Ders Kredi si : 2+2 ► LAB : 355 ► Değerlendirme:  % 30 - Arasınav  % 20 - Proje  % 6 - Kısa sınav  % 4 - Devam  %40 - Yılsonu sınavı."— Sunum transkripti:

1

2

3 Ders Hakkında ► Ders Kredi si : 2+2 ► LAB : 355 ► Değerlendirme:  % 30 - Arasınav  % 20 - Proje  % 6 - Kısa sınav  % 4 - Devam  %40 - Yılsonu sınavı (Uygulamalı) 26.01.20162

4 Ders İçeriği ► ►.NET Framework Mimarisi ► ► Visual Studio Geliştirme Ortamı ve Görsel Programlama ► ► Temel kavramları: değişkenler, veri türleri,kontrol yapıları ► ► Ortak Windows form kontrolleri ► ► Ortak özellikler (properties) ► ► Dizi ve karmaşık veri türleri, ► ► Metod ve fonksiyonlar ► ► Olay (event) metodları ► ► Nesne tanımlama ve DLL kulanımı ► ► Dosya ve klasör işlemleri ► ► Çoklu form kullanımı ve formlararası bilgi değişimi ► ► Hata fırlatma ve yakalama (throw-catch-finally)

5 Kaynaklar Kitaplar  Her yönüyle C#, Sefer Algan, Pusula Yayıncılık Kitap içeriği: C# dilini yapısal olarak konsol uygulama tabanlı anlatmakta  Microsoft Visual C#.NET, Memik Yanık Kitap içeriği: C# dilini görsel uygulama tabanlı anlatmakta ► C# Programlama Dili ve Yazılım Tasarımı: Cilt-2, Ahmet Kaymaz Kitap içeriği: C# dilinin daha çok veritabanı uygulamalarına yönelik anlatımı Kitap içeriği: C# dilinin daha çok veritabanı uygulamalarına yönelik anlatımıSiteler:  www.programlama.com www.programlama.com  www.csharpnedir.com www.csharpnedir.com  www.codeguru.com www.codeguru.com Ders Sitesi:  www.aozcerit.sakarya.edu.tr/ www.aozcerit.sakarya.edu.tr/ 26.01.20164

6 .NET Nedir? ►.NET yeni bir yazılım geliştirme platformu ► WEB, Masaüstü, Gömülü, Kablosuz, Endüstriyel alanlar için çözümler ► Büyük tümleşik sistem tasarımları ► Tüm Internet uygulamalarına destek ► Yeni programlama dili : C# ► Yeni program geliştirme altyapısı ► Yeni programcılık mantığı ► Platformdan bağımsız uygulamalar

7 .NET ve Alternatifler Ölçütler.NET JAVA CFML PHP Derlenmiş ve Önderlenmiş Kod Var Yok Script DillerVarYokKısmiVar Nesne YönelimliVar KısmiVar Desteklenen DillerC++, C#, VB, Pyton, Perl, COBOL, Delphi vb.. 25 Dil JavaCFML ve CFScript PHP Internet Tarayıcı Uyumluluğu Var KısmiVar Açık Kaynak KoduYokVarKısmiVar 26.01.20166

8 .NET Yapısal Bileşenleri ► CLR (Common Language Runtime) ► CTS (Common Type System) ► CLI (Common Language Infrastructure) ► CLS (Common Language Specification) ► FCL (Framework Class Library), namespaces ► Windows and Web Forms 26.01.20167

9 .NET Teknolojileri ► Windows Formları ve Konsol ► WEB Teknolojileri  ASP.NET  WEB Formları  WEB Hizmetleri (XML) ► SOAP (Simple Object Access Protocol) ► UDDI (Universal Description, Discovery and Integration) ► WSDL (Web Services Description Language) ► Veritabanı Teknolojileri  ADO.NET ► Ve diğerleri… 8

10 .NET Program Akışı

11 .NET Bütüncül Yapısı 26.01.201610

12 .NET: Programcı-Program Akışı 26.01.201611

13 .NET Teknolojisi: CLR (Common Language Runtime) Kaynak Kodu Kaynak Kodu Derleyici DLL veya EXEveya DLL veya EXEveya Sınıf Yükleyici Sınıf Yükleyici JIT Anlık Derleyici JIT Anlık Derleyici Kontrollü Yerel Kod Kontrollü Yerel Kod Sınıf Kütüphane Kodları Sınıf Kütüphane Kodları Çalışma Güvenlik Kontrolü Güvenilir ve ÖnAnlık Kod Derlenmemiş Bir method çağırma CLR 26.01.2016 12

14 .NET Özellikleri ►►C►►CLR hangi dil kodunu çalıştırdığını bilmez ►►B►►Bütün diller IL (Ortak dil) koduna çevrilir ►►I►►IL kodlar her zaman managed’tir. ►►I►►IL code ve metadata ayrılamaz, aynı dosyada beraber üretilirler ►►S►►Sadece C++.NET ile hem managed hem de unmanaged (default) kod üretilebilir ►►Ü►►Üretilen dosya PE (Portable Executable) ►►P►►PE, CLR (.NET Framework) ile çalışır ►►M►►Managed Modül: PPE Başlık : GUI veya CUI veya DLL, built-time ►►S►►Sadece IL Kod içerirse: PE başlığı ihmal edilir ►►Y►►Yerel CPU Kod: PE başlık CPU yerel makine dili kodları içerir CCLR Başlık : CLR modeli, bayraklar, Ana fonk. Adresi, module bilgileri MMetadata : Tanımlanmış veya hazır veri türleri, nesnelerin tabloları IIL Kod: Derleyici tarafından üretilen ortak kod, daha sonra CLR tarafından yerel CPU makine komutlarına çevrilir

15 .NET Özellikleri ► ► Metadata   Intellisense çalışmasını destekler   Başlık ve kütüphane dosyalarına ihtiyacı kaldırır   Güvenli kod üretimine yardım eder   Uzaktaki bilgisayarda nesneleri ve alanlarını oluşturmada   Garbage Collector ‘ün nesneleri takibini sağlar

16 .NET Özellikleri ► ►.NET yüklü testi: MSCorEE.dll %windir%\system32 ► ►.NET model testi:   HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy ► ► IL, makine dilinden daha yüksek seviyelidir ► ► IL, nesne tabanlı makine dili olarak görülebilir ► ► IL kodlama yapılabilir ve ILAsm.exe tarafından derlenir ► ► IL kod güncel CPU’lar ile doğrudan çalıştırılamaz, gelecekte? ► ► JIT (Just In Time) derleyici IL kodları makine kodlarına çevirir

17 .NET Aradili ( MSIL ) Örneği.method private hidebysig instance void button1_Click(object sender, class [mscorlib]System.EventArgs e) cil managed { // Code size 60 (0x3c) // Code size 60 (0x3c).maxstack 2.locals init ([0] bool CS$4$0000) IL_0000: nop IL_0001: ldarg.0 IL_0002: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox SecureApplication.Form1::textBox1 IL_0007: callvirt instance string [System.Windows.Forms]System.Windows.Forms.Control::get_Text() IL_000c: ldstr "password" IL_0011: call bool [mscorlib]System.String::op_Equality(string, string) IL_0016: ldc.i4.0 IL_0017: ceq IL_0019: stloc.0 IL_001a: ldloc.0 IL_001b: brtrue.s IL_0030 IL_001d: ldarg.0 IL_001e: call instance string SecureApplication.Form1::answerToAllLife() IL_0023: callvirt instance string [mscorlib]System.Object::ToString() IL_0028: call valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string) IL_002d: pop IL_002e: br.s IL_003b IL_0030: ldstr "Error" IL_0035: call valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string) IL_003a: pop IL_003b: ret } // end of method Form1::button1_Click 16

18 C# Program Çalışma Akışı

19 .NET Dilleri: C# ve VB.NET //C#Program static public void Main() { StreamWriter sw=new StreamWriter("date.txt ",true); DateTime dt=DateTime.Now; string datestring=dt.ToShortDateString()+" "+ dt.ToShortTimeString(); sw.WriteLine(datestring);sw.Close(); StreamReader sr=new StreamReader("date.txt "); string filetext=sr.ReadToEnd(); sr.Close();Console.WriteLine(filetext);} ' VB..NET shared public sub Main() dim sw as StreamWriter=new StreamWriter("date.txt ",true) dim dt as DateTime=DateTime.Now dim datestring as string=dt.ToShortDateString()+" " __ +dt.ToShortTimeString() sw.WriteLine(datestring) sw.Close() dim sr as StreamRe31.01.2008ader=new StreamReader("date.txt ") dim filetext as string=sr.ReadToEnd() sr.Close() Console.WriteLine(filetext) end sub 18

20 .NET’in Zayıf Yönleri ► Daha fazla sistem kaynağı kullanma ► JIT Derleyici Geri-Mühendisliğe izin verir  Obsfuscation (gizleme/örtme) araçları ► GC (Garbage Collector) ‘nin periyodik çalışmasının performansa etkisi ► Yer kaplama (.NET 3.5 SP1 =250MB) ► SSE güvenli kod desteği yok (Pentium-III) ►.NET versiyon uyumsuzlukları 26.01.201619

21 SORULAR 26.01.201620 ?

22 2. Hafta.NET MİMARİSİ-2

23 Hangisi daha Performanslı Kontrollü, Kontrolsüz? Önyargı: Kontrolsüz kod daha hızlı çalışır Genellikle Kontrollü Kod Hızlıdır, Neden? ► ► JIT, kontrollü kod platformunu tanır ► ► İşlemciye ait özel komutlar kullanılır ► ► Çok işlemcili sistemleri verimli kullanır ► ► CLR dinamik kod optimizasyonu yapar ► ► Windows’ta her işlem (process) sanal belleğe sahiptir ► ► Kontrollü işlemler tek bir windows sanal belleğinde çalışabilir, daha az sistem kaynağı kullanır ► ► NGen.exe: Kontrollü kod düşük performanslı ise kullanılır

24 IL Kod Çalışması ► ► IL kod stack (yığın) tabanlı çalışır ► ► İşlem verileri (operands) yığına atılır (push) ► ► Sonuçlar da yığından çekilir (pop) ► ► Derlemede kayıtçılar kullanılmaz (istisna var) ► ► Doğrulama (verification) IL kodun güvenli olduğunu test eder ► ► PEVerify.exe managed kodları doğrular ► ► IL kodlar veri türü ayrımı yapmaz, yığın veri boyutunu belirler

25 .NET Sınıf Kütüphanesi CLR ve FCL aşağıdaki uygulamaları geliştirmeyi sağlar: ► ► WEB hizmetleri ► ► WEB formları ► ► Windows formları ► ► Windows konsol ► ► Windows hizmetleri ► ► Bileşen (component) kütüphanesi

26 İsimuzayları (namespaces) SystemBütün uygulamaların kullandığı temel veri türleri: int, long, float, string System.CollectionsStack, Queue, Hashtable System.DiagnosticsDebugging System.DawingWeb ve Windows formlarda kullanılan 2-Boyutlu grafik nesnleri System.IOKlasör, dosya ve stream nesneleri System.ManagementWMI ile çoklu bilgisayar yönetimi System.NetAğ haberleşmesi System.SecurityVeri ve kaynak koruması System.TextKodlama karakterleri: ASCII, Unicode System.ThreadingEşzamansız işlemcikler, kaynaklara eşzamanlı erişim

27 CTS (Common Type System) Görevleri 26.01.201626  Çoklu dil bütünleşmesi, tip güvenliği ve yüksek başarımlı kod çalışması için bir çerçeve  Çoklu diller için nesne yönelimli bir model  Farklı dillerde yazılan nesnelerin izleyeceği kurallar Ortak Tip Sisteminin Görevleri

28 CTS Tipleri 26.01.201627  Değer : integer, float, bool, double, …..  Sınıf : class  Temsilci: delegate  Dizi: array  Arayüz: interface  İşaretçi: pointer

29 CLS (Ortak Dil Tanımlamaları)   Önlemler ► ► Büyük-küçük harf ayrımı ► ► İşaretsiz sayılar ► ► Çokamaçlı işleçler ► ► Değişken sayıda parametreleri destekleyen metotlar

30 CLR/CTS/CLS İlişkisi

31 3. Hafta C# Diline Giriş Kaynak İ. Karagülle: s57-s385 26.01.201630

32 Değişken Tanımlama int a=1; string konu=“C# Programlamaya Giriş”; decimal büyükSayı=12345678912345678; byte birBayt=255; // 0..255 bool birBit=true; // ya da false sbyte birbayt=-128; // -128..127 long büyükTamsayı=1234567890;

33 Temel Veri Türleri C# Type.Net FWork (System) type Signed?BytesPossible Values sbyteSystem.SbyteYes1 -128 to 127 shortSystem.Int16Yes2 -32768 to 32767 intSystem.Int32Yes4 -2147483648 to 2147483647 longSystem.Int64Yes8 -9223372036854775808 to 9223372036854775807 byteSystem.ByteNo1 0 to 255 ushortSystem.Uint16No2 0 to 65535 uintSystem.UInt32No4 0 to 4294967295 ulongSystem.Uint64No8 0 to 18446744073709551615 floatSystem.SingleYes4 Approximately ±1.5 x 10 -45 to ±3.4 x 10 38 with 7 significant figures doubleSystem.DoubleYes8 Approximately ±5.0 x 10 -324 to ±1.7 x 10 308 with 15 or 16 significant figures decimalSystem.DecimalYes12 Approximately ±1.0 x 10 -28 to ±7.9 x 10 28 with 28 or 29 significant figures charSystem.CharN/A2 Any Unicode character (16 bit) boolSystem.BooleanN/A1 / 2 true or false

34 Sabit Tanımlamaları const int x = 0; public const double gConstant = 6.673e-11; private const string language = "Visual C#"; public const double x = 1.0, y = 2.0, z = 3.0; ► static kelimesi kullanılmaz ► Tanımlandığında değer atanmalı ► readonly: atama constructor ‘da veya const gibi 26.01.201633

35 Basamak Hassasiyeti float x=1234567890123456789; x=x+5; // x=1,234568E+18 // x=1234568000000000000 decimal y=1234567890123456789; y=y+5;// y=1234567890123456794 decimal, 29 basamak hassasiyetine sahiptir.

36 Sınır Aşımı ► ► Sınır aşımı istisnai (exception) durum byte x=256; // derleme hatası, sınır aşımı byte z; z=250; z=z+10;// derlenir ancak sonuç yanlış

37 Sayıları Yazdırma byte x=10; MessageBox.Show(x.ToString()); int y=905323345577 textbox1.Text=y.ToString(“+## (###)### ## ##”); int z=15; textbox2.Text=z.ToString(“X”); //16 lık sistem textbox3.Text=z.ToString(“X4”); //16 lık sistem

38 Tip Dönüştürme:Parse ► ► Parse : string->sayı string sayı1=“1234”; int x=Int32.Parse(sayı1); string sayı2=“12.345”; int y=Int32.Parse(sayı2);//derleme hatası long s; s=long.Parse(textbox1.Text);

39 Tip Dönüştürme:Convert ► ► Convert: string->sayı VE sayı->string string sayı1=“1234”; int x=Convert.ToInt32(sayı1); string sayı2=“12.345”; int y=Convert.ToInt32(sayı2);//derleme hatası long s; S=Convert.Tolong(textbox1.Text);

40 Değişkenler ► C# ‘ta yeni türler: bool, decimal ► Herşey nesne: System.Object ► object tüm değişkenlerin ortak kalıbı ► Reference ve Value Reference ve Value Reference ve Value ► Value tipler Stack (yığın) bellekte ► Reference tipler Heap (öbek) bellekte 26.01.201639

41 Değişkenler Value tiplerbool, byte, sbyte, char, decimal, double, float, int, uint, long, ulong, short, ushort, struct ve enum Reference tiplerclass, interface, delegate, object ve string StackHeap x=5 int x=5; object y=1; StackHeap x=5 &yy=1 Soru: Hangisi daha hızlı?

42 Boxing-Unboxing ► ► Boxing: Stack alanından Heap alanına taşıma object x; int i=10; x=i; ► ► Unboxing: Heap alanından Stack alanına taşıma object x; int i=10, j=20; x=j; i=(int)x;

43 4. Hafta Nesne Yönelimli Programlama 26.01.201642

44 Nesne Yönelimli Programlama (Object Oriented Programming) Nesne yönelimli programlama ilkeleri: Kılıflama (encapsulation)   Nesne yapısı ve erişim hiyerarşisi   Veri üyeleri (data field/member), fonksiyon üyeleri Çok biçimlilik (polymorphism)   Aynı isimli fakat farklı parametreli metot tanımlama Kalıtım (Inheritance)   Nesne türetme   Nesnelerin çoklu davranış ve erişim izinleri

45 Nesne Özellikleri ÜYELER ► ► Alan (field): Nesne durmunu yansıtan veri ► ► Yöntem (method):Nesne fonksiyonu ► ► Özellik (property): Kontrollü Alan, ► ► Olay (event): Olay ve uyarı bildirme yolu ► ► İşleçler (operators): İşlemleri gerçekleştirmek için gerekli işaretler ► ► Dizinleyiciler (Indexers): Nesnelerin dizileri ► ► Constructor/Destructor (Varedici ve Yokedici) ERİŞİM ► ► Public: Farklı isim uzaylarından erişim ► ► Private: Nesne içi erişim ► ► Protected: Türetilen nesnelerden ► ► Internal: Geçerli projeden ► ► Protected Internal: Geçerli proje veya türetilmiş nesnelerden

46 Sınıf Kavram Kelimeleri ► ► this : İlgili sınıfın aynı isimli yerel değişken ve üyelerini birbirinden ayırmak için ► ► constructor: Sınıfın ismi ile aynı, ilk çalışan ► ► destructor :Constructor’ın önüne “~” işareti, son çalışan ► ► new : yeni bir nesne oluşturmak için

47 Değişken Kapsamları ► ► Global değişkenler metotların dışında tanımlanır, değer ataması hemen yapılmalıdır ve sınıf içindeki tüm metotlardan erişilir ► ► Yerel değişkenler metotların içinde tanımlanır, sadece metot içerisinden erişilir ► ► public static: Diğer sınıflardan da erişilir, tüm kopyalarda ortak kullanılır ► ► private: Sadece tanımlandığı sınıftan erişilir ► ► protected: Sadece ilgili sınıftan ya da o sınıftan türetilen sınıflardan erişilir ► ► internal: Sadece aynı isim uzayından

48 Sınıf Türleri ve Metot Erişimleri ► ► sealed : Sınıf türetilemez (son ürün) ► ► abstract: Sınıf oluşturulamaz (soyut) ► ► “:” işleci : Sınıf türetme operatörü ► ► override: Temel sınıftaki metodu bastırma ► ► virtual : Temel sınıftaki metodun bastırılması için gerekli ► ► base : Türetilen sınıftan, temel sınıftaki sanal metoda erişim

49 Sınıf Tanımlamaları-1 class Araç { Özellikler (properties) Renk; Motor_hacmi; Teker_adedi; Kapı_sayısı; Tip; Yolcu_adedi; İşlevler (methods) Hareket(); Yakıt_tüketme(); Fren_yapma(); Sinyal_verme(); } Properties tanımı public class araç { private string renk; public string Renk { get {return renk;} set {renk=value;} } Neden public bir değişken tanımlamadık? Public değişkenin değerinin kontrolü anlık yapılmaz, oysa set ile istenen değer sınırları kontrol edilir.

50 Sınıf Tanımlamaları-2 metod tanımı class X { ………….. public void Selam( string slm) { MessageBox.Show(slm); } private int Alan(int x, int y) { return x*y; } public int maliyet(int gider, int a, int b) { return gider*Alan(a,b); } }; constructor ve destructor tanımı class X { public X(){;}//constructor ~X(){;} //destructor public void Selam( string slm) { MessageBox.Show(slm); } private int Alan(int x, int y) { return x*y; } public int maliyet(int gider, int a, int b) { return gider*Alan(a,b); } };

51 Statik Yöntemler (static methods) class işlem { public static int topla( params int [] dizi) { int toplam=0; for(int i=0;i<dizi.Length;i++) toplam+=dizi[i]; return toplam; } class hesap { static void Main () { int i; i=işlem.topla(5,6,7,8); Console.WriteLine(“Toplam {0}”,i); //işlem iş1=new işlem(); //c.topla(4,5); }

52 Statik Yapıcı class word { public word() { Console.WriteLine(“Normal Yapıcı”); } static word() { Console.WriteLine(“static yapıcı”); }

53 Static Üye Değişkenler public class Automobile { public static int NumberOfWheels = 4; public static int NumberOfWheels = 4; public static int SizeOfGasTank{ public static int SizeOfGasTank{ get{return 15;} get{return 15;} } public static void Drive() { } public static void Drive() { }} 26.01.201652 class Program { static void Main(string[] args) { Console.WriteLine(Automobile.NumberOfWheels); }

54 Static Üye Örneği public class Automobile{ public static int NumberOfWheels = 4; public static int NumberOfWheels = 4; public static int objectCount = 0; public static int objectCount = 0; public Automobile() { objectCount++; } public Automobile() { objectCount++; } public static int SizeOfGasTank{ public static int SizeOfGasTank{ get{return 15;} get{return 15;} } public static int objectPop() { return objectCount; } public static int objectPop() { return objectCount; }} 26.01.201653 class Program { static void Main(string[] args) { Automobile a1=new Automobile(); Automobile a2=new Automobile(); Automobile a3=new Automobile(); Console.WriteLine(Automobile.NumberOfWheels); Console.WriteLine(Automobile.objectPop()); }

55 Kopya Yapıcı (Copy-Constructor) class kordXY { public int x; public int y; public kordXY(int x, int y) { this.x=x; this.y=y; } public kordXY(kordXY kord) { x=kord.x; y=kord.y; } } class static Main() { kordXY koor1=new kordXY(5,6); kordXY koor2= new kordXY(koor1); }

56 5. Hafta Polymorphism 26.01.201655

57 Çok biçimlilik (Polymorphism) (Overloaded Methods) class İnsan { public string isim; public byte yaş; public İnsan(){;} public İnsan(string ad) { isim=ad; } public İnsan(string ad, byte yaş) { isim=ad; this.yaş=yaş; } } using System; namespace ÇokBiçimli { class Program { static void Main(string[] args) { İnsan adem =new İnsan(); İnsan havva= new İnsan(“Havva”); İnsan akif=new İnsan(“Akif”,63); Console.WriteLine( adem. yaş ); }

58 ÇokBiçimli Metodlar using System; using System.Collections.Generic; using System.Text; namespace ÇokBiçimli { class Program { static void Main(string[] args) { Hesap hesap1=new Hesap(100,100100); C onsole.WriteLine(hesap1.ToString()); hesap1.İsim="Attila"; //set Console.WriteLine(hesap1.İsim); //get } } class Hesap { public decimal hesNo; public decimal miktar; private string isim; public Hesap(decimal miktar, decimal hesNo) { this.miktar = miktar; this.hesNo = hesNo; } public string İsim { get { return isim ; } set { isim= value; } } public override string ToString() { return miktar.ToString()+" YTL"; }

59 Kalıtım-Inheritance C# ‘da kalıtım modelleri   Yürütme (Implementation)   Arayüz Kalıtım Yürütme Kalıtımı: Türetilen bir nesne, bastırılanlar (override) hariç tüm üye fonksiyon ve verileri temel sınıftan devralır. Arayüz Kalıtımı: Sadece belirtilen fonksiyonların arayüzleri devralınır. Fonksiyon içi işlemler devralınmaz. Yapılar sadece arayüz kalıtımı kullanırlar. Not: C#’da C++ ‘daki gibi çoklu kalıtım YOKTUR

60 Kalıtım-2 Sınıflarda Durum: class TüNesne : TemelNesne { // fonksiyon ve veri üye tanımları } class TüNesne : TmlNesne, IArayüz1 { // fonksiyon ve veri üye tanımları } Yapılarda Durum: class TüretilenStruct : IArayüz1 { // fonksiyon ve veri üye tanımları } 26.01.201659 C#’ da Kalıtımdan Kaçmak İmkansız class Nesne1 { // fonksiyon ve veri üye tanımları } class Nesne1 :Object { // fonksiyon ve veri üye tanımları }

61 Sanal Fonksiyonlar (Virtual Methods) static void main() { parent objParent = new child(); objParent.hello(); //Hello from Child. objParent.bye(); // Bye from Parent. } 26.01.201660 class parent{ virtual void hello(){ Console.WriteLine(“Hello from Parent”); } void bye(){ Console.WriteLine("Bye from Parent"); }} Class child : parent{ override void hello(){ //overriding method Console.WriteLine(“Hello from Child”); } void bye() { //hiding method Console.WriteLine("Bye from Child"); }}

62 Temel sınıfa erişim: base class TemelSınıf { public virtual string VirtualMethod() { return “Sanal ve temel sınıf"; }} class TürtlnSınıf : TemelSınıf { public override string VirtualMethod() { return base.VirtualMethod(); return base.VirtualMethod();}} 26.01.201661 using System; namespace baseÖrneği { class Program { static void Main(string[] args) { TemelSınıf temel1=new TemelSınıf(); TürtlnSınıf türet1=new TürtlnSınıf(); C onsole.WriteLine(temel1.VirtualMethod()); C onsole.WriteLine(türet1.VirtualMethod()); }

63 Fonksiyon Gizleme class TemelSınıf { public int Fonk1() { return 0; return 0;}} class TürtlnSınıf : TemelSınıf { public int Fonk1() public int Fonk1(){ return 0; return 0;}} 26.01.2016 62 Yandaki kod uyarı (warning) verir class TürtlnSınıf : TemelSınıf { public new int Fonk1() public new int Fonk1(){ return 0; return 0;}}

64 6. Hafta Soyut (Abstract) Sınıf ve Yöntemler 26.01.201663

65 Abstract Sınıflar ve Metotlar ► abstract sınıf, soyuttur ve örneği oluşturulamaz ► abstract sınıf ancak türetilerek çoğaltılır ► abstract metot, soyuttur ve kod içermez ► abstract metot, türetilen sınıfta override edilir ► abstract metot, doğal olarak sanaldır (virtual) 26.01.201664

66 Abstract Sınıf ve Metot Uygulaması abstract class araç { private string mesaj=“Depo Dolu”; public byte yaş; public string yakıtDoldur(){ return mesaj;} public abstract int hızOku(); } 26.01.201665 using System; Namespace abstractÖrneği { class Program { static void Main(string[] args) { araç araç1=new araç(); otomobil oto1=new otomobil(); C onsole.WriteLine(oto1.hızOku(); C onsole.WriteLine(oto1.yakıtDoldur()); } class otomobil:araç class otomobil:araç{ public otomobil(){hız=100;} private int hız; public int hızOku(){return hız;} }

67 Ödev ► protected ► internal ► protected internal ► sealed 26.01.201666

68 Arayüzler: Interfaces ► Arayüzler sadece metot, özellik (property), dizinleyici (indexers) ve olayları (event) tanıtmak içindir ► Tanıtımda herhangi bir çalışan kod eklenemez. ► Bir arayüz hiçbir zaman başlatılamaz ► Yapıcı (Constructor) fonksiyonuna sahip olamaz ► Üyeleri,doğal olarak public tir, static veya virtual olarak tanıtılamaz ► Arayüzler farklı nesneler için ortak kalıptır 26.01.201667

69 Arayüz Örneği public interface IBankaHesabı { void ParaYatırma(decimal miktar); bool ParaÇekme(decimal miktar); decimal B akiye {get;}} 26.01.201668 public class VadeliHesap : IBankaHesabı { private decimal bakiye; public void ParaYatırma(decimal miktar) { bakiye += miktar; } public bool ParaÇekme(decimal miktar) { if (bakiye >= miktar) { bakiye -= miktar; bakiye -= miktar; return true; return true;} Console.WriteLine(“Para Çekimi Yapılamadı"); return false; } public decimal Bakiye { public decimal Bakiye { get { return bakiye; } } public override string ToString() { public override string ToString() { return String.Format(“Bakiye= {0:c}", bakiye); }} class Program { static void Main() { IBankaHesabı vadeli = new VadeliHesap(); vadeli.ParaYatırma(200); vadeli.ParaÇekme(100); Console.WriteLine(vadeli.ToString()); }

70 İşleç Aşırı Yüklemsi (operator overloading) int a=3; int b=4; int c=a+b; class elma{ ….. } static void main() { elma e1=new elma(); elma e2=new elma(); elma e3=new elma(); e3=e1+e2;//? }

71 İşleç Aşırı Yüklemesi: Örnek class Karmaşık { private double mgerçek; private double msanal; public Karmaşık (double a, double b) { mgerçek=a; msanal=b; } public Karmaşık (Karmaşık a) { mgerçek=a.gerçek; msanal=a.Sanal; } public double gerçek { get{ return mgerçek;} set{ mgerçek=value;} } public double sanal { get{ return msanal;} set{ msanal=value;} } public void Yazdır( ) { if(msanal>0) Console.WriteLine(“{0} +j{1}”,mgerçek,msanal); else Console.WriteLine(“{0} -j{1}”,mgerçek,msanal); } public static Karmaşık operator+(Karmaşık kar1, Karmaşık kar2) { double GerçekTop=kar1.gerçek+ kar2.gerçek; double SanalTop=kar1.sanal+kar2.sanal; return new Karmaşık(GerçekTop,SanalTop); } static void Main() { Karmaşık k1=new Karmaşık (-10,9); Karmaşık k2=new Karmaşık(7,3); Karmaşık k3=k1+k2; k3.Yazdır(); }

72 7. Hafta Diziler ve ArrayList 26.01.201671

73 Dizi Tanımlama ve Kullanma ► Tek Boyutlu diziler  int [] dizi=new int[10];  int [] dizi; dizi=new int[10];  string []dizi={“Sakarya”,”Üniversitesi”,”Teknik”};  int[]dizi={1,2,3};  char [] s=“merhaba”;  int[] dizi=new int[giriş]; 26.01.201672

74 Çok Boyutlu Diziler ► Düzenli Çok Boyutlu Dizi  int [,]dizi=new [3,3];  int [,] dizi={{1,2},{3,4},{10,11}};  int [,,]dizi=new dizi[5,5,5]; ► Düzensiz Çok Boyutlu Diziler (Jagged Arrays)  int [][] dizi=new int[3][]; //satır sayısı belli ► dizi[0]=new int[3]; ► dizi[1]=new int[4]; ► dizi[2]=new int[2]; 26.01.201673

75 Düzensiz Dizi İşlemleri class jagged { static void Main() { int [][]dizi=new int [3][]; dizi[0]=new int []{1,2,3}; dizi[1]=new int []{6,7,8,9}; dizi[2]=new int []{10,11}; for(int i=0;i<dizi.GetLengt h (0);i++) for(int j=0;j<dizi[i].GetLengt h (0);j++) for(int j=0;j<dizi[i].GetLengt h (0);j++) Console.WriteLine("dizi[{0}][{1}]={2}",i,j,dizi[i][j] ) ; }} 26.01.201674

76 System.Array Sınıfı  Array.Copy ()  Array.Sort()  Array.BinarySearch()  Array.Reverse()  Array.Clear() 26.01.201675

77 Komut-satırı parametrelerini Kullanma class CommandLine { static void Main(string[] args) { System.Console.WriteLine("Number of cmd-line pars = {0}", args.Length); foreach (string s in args) { System.Console.WriteLine("Number of cmd-line pars = {0}", args.Length); foreach (string s in args) {System.Console.WriteLine(s);}}} 26.01.201676

78 8. Hafta Temsilciler(Delegates) 26.01.201677

79 Temsilciler ► Metotları diğer metotlara parametre olarak kullandırmayı sağlar ► Metotlara referansta bulunur, adreslerini tutarlar ► Temsilciler System.Delegate temel sınıfından türetilir TANIMLAMA: delegate void İşlem (uint x); delegate double İkiParametreli (long i, long k); delegate string DizgeAL(); 26.01.201678

80 Temsilci Örneği-Basit 26.01.201679 using System; class Temsilciler { public delegate void MetotTemsilci(); public static void metot1() { Console.WriteLine(“metot1”); } public static void metot2() { Console.WriteLine(“metot2”); } public static void Main() { MetotTemsilci temsilci=new MetotTemsilci(metot1); temsilci(); temsilci=new MetotTemsilci(metot2); temsilci(); }

81 Temsilciler-İleri Seviye using System; class Temsilciler { public delegate void KomutMetodu(); public struct KomutYapısı { public KomutMetodu KomutMetot; public string Komut; } public static void Dir() { Console.WriteLine(“Dosyalar listelenir”); } public static void Edit() { Console.WriteLine(“Edit komutu çalıştı”); }} 26.01.201680 public static void Main() { KomutYapısı[] komutlar=new KomutYapısı[2]; komutlar[0].Komut=“dir”; komutlar[0].KomutMetot=new KomutMetodu(Dir); komutlar[1].Komut=“edit”; komutlar[1].KomutMetot=new KomutMetodu(Edit); string GirilenKomut; while(true) { Console.Write(“DOS:>”); GirilenKomut=Console.ReadLine(); for(int i=0;i<komutlar.Length;i++) { if(GirilenKomut==komutlar[i].Komut) komutlar[i].KomutMetot(); }

82 9. Hafta Olaylar(Events) 26.01.201681

83 10. Hafta İstisnai Durum Yapıları (Exception Handling) 26.01.201682


"Ders Hakkında ► Ders Kredi si : 2+2 ► LAB : 355 ► Değerlendirme:  % 30 - Arasınav  % 20 - Proje  % 6 - Kısa sınav  % 4 - Devam  %40 - Yılsonu sınavı." indir ppt

Benzer bir sunumlar


Google Reklamları