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ı.

Slides:



Advertisements
Benzer bir sunumlar
.NET FRAMEWORK -MASAÜSTÜ VE SUNUCU YAZILIMLARI
Advertisements

Yazılım Geliştirme ve Java
C# - Metotlar.
JAVA TEMELLERİ GİRİŞ JAVA TEMELLERİ GİRİŞ signalsec.com & mialkan.com.
Nesnelerin Özellikleri. - Üye nesneler - friend belirtesi - Nesnelerin operatörlere yüklenmesi - this yerel (lokal) değişkeni - inline tanımlı üye fonksiyonlar.
WEB SERVİCE İDRİS YÜRÜK MAHMUT KAYA.
.NET FRAMEWORK.
Tuğba DEMİREL
Yığın ve Kuyruk.
Programlama-II (Java ile Bilgisayar Programlama)
Nesneye Dayalı Programlama
BPR151 ALGORİTMA VE PROGRAMLAMA - I
Namespaces and .NET Class Library (İsim Alanları Sınıf Kütüphanesi)
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
Nesneye Yönelik Programlama Dr. Pelin GÖRGEL
DELEGATE OOP-UYG.
Erişim Denetimi, Fonksiyon
METODLAR.
İSİM UZAYLARI (NAMESPACE)
Nesneye Yönelik Programlama
NESNEYE DAYALI PROGRAMLAMA
.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.
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
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.
Nesne Yönelimli Programlama Dersi
SABİT NESNE VE ELEMAN FONKSİYONLAR VE ELEMAN NESNELER
METOTLAR.
ÇOK BİÇİMLİLİK POLYMORPHISM
Önceki Dersi Hatırlama !!
Nesneye Yönelik Programlama (12. Sunu). İsim Uzayları (Namespaces) Sınıfınızda Deniz adında iki öğrenci olduğunu kabul ediniz. Böyle bir durumda bu öğrencileri.
Kalıtım , Sınıf Asli Ergün.
Demet AYDIN METODLAR Demet AYDIN
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Nesneye Dayalı Programlama
JAVA’DA DİZİLER Dr.Galip AYDIN.
Chapter 1: A First Program Using C#
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.
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ VE SINIFLARIN DİĞER ÖZELLİKLERİ Yılmaz Kılıçaslan.
Ders İçeriği Liste Soyut veri yapısı (ADT)
VERİ TİPLERİ VE DEĞİŞKENLER
Visual Basic Windows Programlama.
Değişken Türleri.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
JAVA PROGRAMLAMA ORNEKLER
Görsel C# ile Windows Programlama
Microsoft Windows Server 2003 © Yenilikler ERCAN SAPMAZ.
BTP206– Görsel Programlama II
Modül 1: Giriş. Genel Bakış Temel.NET kavramları Geliştirme ortamında gezinti Bir C# projesi oluştur Use Visual Studio.NET Veriye eriş Hata ayıkla ve.
KALITIM(INHERITANCE) Öğr.Gör. Murat ASLANYÜREK. KALITIM KAVRAMINA GİRİŞ  Kalıtım, sınıflardan yeni sınıflar türetmeyi sağlar.  Türetilen yeni sınıflar,
Sakarya Üniversitesi Bilgisayar ve Bilişim Bilimleri Fakültesi Bilgisayar Mühendisliği Prof. Dr. Ümit Kocabıçak Prof. Dr. Cemil Öz Doç. Dr. Ahmet Turan.
JAVA 1. GİRİŞ & TARİHÇE Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmıştır. Açık kodlu. Nesneye yönelik. Düzlemden.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
GÖRSEL PROGRAMLAMA C# UYGULAMALARI Araş. Gör. Sefa TUNÇER.
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
C Programlama Dili Bilgisayar Mühendisliği.
Nesneye Dayalı Programlama
1- C# Hello world Nesne Yönelimli Programlama - i
5- class & object Nesne Yönelimli Programlama - i
Nesneye Dayalı Programlama Temel Kavramlar Hüseyin ESKİ.
3- VERİ TİPLERİ - OPERATÖRLER Nesne Yönelimli Programlama - i
YAPISAL PROGRAMLAMA Hafta-6
Veri Tipleri 12/4/2018.
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Kurucular(Yapıcılar), Yıkıcılar
Nesneye Dayalı Programlama 1
Nesneye Dayalı Programlama 1
MTM216 GÖRSEL PROGRAMLAMA
Nesneye Dayalı Programlama 1
MTM216 GÖRSEL PROGRAMLAMA
Sunum transkripti:

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ı)

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)

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:    Ders Sitesi: 

.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

.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

.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

.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

.NET Program Akışı

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

.NET: Programcı-Program Akışı

.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

.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

.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

.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

.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

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

.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 StreamRe ader=new StreamReader("date.txt ") dim filetext as string=sr.ReadToEnd() sr.Close() Console.WriteLine(filetext) end sub 18

.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ı

SORULAR ?

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

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

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

.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

İ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

CTS (Common Type System) Görevleri  Ç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

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

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

CLR/CTS/CLS İlişkisi

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

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

Temel Veri Türleri C# Type.Net FWork (System) type Signed?BytesPossible Values sbyteSystem.SbyteYes to 127 shortSystem.Int16Yes to intSystem.Int32Yes to longSystem.Int64Yes to byteSystem.ByteNo1 0 to 255 ushortSystem.Uint16No2 0 to uintSystem.UInt32No4 0 to ulongSystem.Uint64No8 0 to floatSystem.SingleYes4 Approximately ±1.5 x to ±3.4 x with 7 significant figures doubleSystem.DoubleYes8 Approximately ±5.0 x to ±1.7 x with 15 or 16 significant figures decimalSystem.DecimalYes12 Approximately ±1.0 x to ±7.9 x with 28 or 29 significant figures charSystem.CharN/A2 Any Unicode character (16 bit) boolSystem.BooleanN/A1 / 2 true or false

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

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

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ış

Sayıları Yazdırma byte x=10; MessageBox.Show(x.ToString()); int y= 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

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);

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);

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

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ı?

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;

4. Hafta Nesne Yönelimli Programlama

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

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

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

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

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

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.

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); } };

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); }

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

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() { }} class Program { static void Main(string[] args) { Console.WriteLine(Automobile.NumberOfWheels); }

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; }} 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()); }

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); }

5. Hafta Polymorphism

Ç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ş ); }

Ç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"; }

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

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ı } 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ı }

Sanal Fonksiyonlar (Virtual Methods) static void main() { parent objParent = new child(); objParent.hello(); //Hello from Child. objParent.bye(); // Bye from Parent. } 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"); }}

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();}} 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()); }

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;}} 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;}}

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

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)

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(); } 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;} }

Ödev ► protected ► internal ► protected internal ► sealed

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

Arayüz Örneği public interface IBankaHesabı { void ParaYatırma(decimal miktar); bool ParaÇekme(decimal miktar); decimal B akiye {get;}} 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()); }

İş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;//? }

İş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(); }

7. Hafta Diziler ve ArrayList

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ş];

Ç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];

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] ) ; }}

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

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);}}}

8. Hafta Temsilciler(Delegates)

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();

Temsilci Örneği-Basit 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(); }

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ı”); }} 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(); }

9. Hafta Olaylar(Events)

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