C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com



Benzer belgeler
C# nedir,.net Framework nedir?

GÖRSEL PROGRAMLAMA - I

C #

Bahar. BM 211 Programlama Dilleri 3 1

HSancak Nesne Tabanlı Programlama I Ders Notları

Windows Programlama Güz Dönemi

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1

4. Bölüm Programlamaya Giriş

Programlama Dilleri II. Bilgisayar ve Öğretim Teknolojileri Öğretmenliği

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 1. Bölüm C# Programlamaya Giriş

Java Temel Özellikleri

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

BİL 458 Web Programlama dersi. Yrd. Doç. Dr. Murat YEŞİLYURT

Asp.Net Veritabanı İşlemleri

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

public static int Toplam int x, int y

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

Bölüm1. İlk Bilgiler ISBN

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

ALGORİTMA VE PROGRAMLAMA I

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BİLGİSAYAR ORGANİZASYONU

«BM364» Veritabanı Uygulamaları

Öğr. Gör. Serkan AKSU 1

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dilleri III 1

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

PROGRAMLAMA TEMELLERİ

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

PROGRAMLAMAYA GİRİŞ DERS 2

YZM 2105 Nesneye Yönelik Programlama

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

Sanallaştırma Nedir? Bahadır Demircioğlu. Şubat, 2013

Yrd. Doç. Dr. Caner ÖZCAN

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

WEB İŞLEMLERİ. .NET Platformu:

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

C++ Dersi: Nesne Tabanlı Programlama

Mobil Cihazlardan Web Servis Sunumu

Yrd. Doç. Dr. Caner ÖZCAN

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

Dr. Fatih AY Tel: fatihay@fatihay.net

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Veritabanı İşlemleri

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

Üst Düzey Programlama

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bölüm 1. Ön Hazırlıklar ISBN

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

HSancak Nesne Tabanlı Programlama I Ders Notları

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

HSancak Nesne Tabanlı Programlama I Ders Notları

2 Temel Kavramlar (Devam) Veritabanı 1

KONTROL VE OTOMASYON KULÜBÜ

Bilgisayarda Programlama. Temel Kavramlar

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Yrd. Doç. Dr. Caner ÖZCAN

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

Programlama Yazılımı ile Web Sitesi Oluşturma

BİL-142 Bilgisayar Programlama II

Özyineleme (Recursion)

HSancak Nesne Tabanlı Programlama I Ders Notları

İŞLETİM SİSTEMLERİNE GİRİŞ. Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ

EĞİTİM : .NET UYGULAMA GELİŞTİRME PLATFORMU. Bölüm :.NET Uygulama Geliştirme Platformu. Konu :.NET Framework Nedir? Page 1 of 17

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

T.C. MİLLİ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) BİLİŞİM TEKNOLOJİLERİ NESNE TABANLI PROGRAMLAMA - 1

Üst Düzey Programlama

BİT in Temel Bileşenleri (Yazılım-1)

BİLİŞİM TEKNOLOJİLERİ

PROGRAMLAMA DERSİ 1. İNTERNET

LINQ (Temel Kavramlar)

Programlama Dilleri 3


BİL-142 Bilgisayar Programlama II

Lecture 11: Generics

BTEP243 Ders 3. class Yazım Kuralı:

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Yrd. Doç. Dr. Caner ÖZCAN

5. PROGRAMLA DİLLERİ. 5.1 Giriş

Sunum İçeriği. Programlamaya Giriş

Göstericiler (Pointers)

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

8. İŞARETCİLER (POINTERS)

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Transkript:

C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com

Nesne Yönelimli Programlama Nesne Yönelimli Programlama, 1990 lı yıllarda başlayan ve günümüzde de yoğun olarak kullanılan bir programlama teknolojisidir. Nesne Yönelimli Programlama'da, programlama ortamındaki her şey bir nesne olarak kabul edilir ve nesnelerin özellikleri değiştirilerek onlara yeni biçimler verilebilir. Ayrıca her nesnenin duyarlı olduğu durumlar da mevcuttur. Her nesne üzerine uygulanabilecek farklı metotlar oluşturulmuştur. Yapısal Programlama'da ağırlık programlama komutlarındayken, Nesne Yönelimli Programlama'da yazılımcının ortamdaki nesneler, bunların özellikleri, duyarlı oldukları olaylar ve nesnelere uygulanabilecek metotlar hakkında ayrıntılı bilgi sahibi olması gerekir. Faydaları: Yazılımın Bakım (Maintenance) Kolaylığı Genişletilebilirlik (Extensibility) Üretilen Kodun Yeniden Kullanılabilirliği (Reusability)

C# NEDİR? Microsoft'un geliştirmiş olduğu yeni nesil programlama dilidir. (Microsoft tarafından geliştirilmiş olsa da ECMA ve ISO standartları altına alınmıştır.) C programlama dilinde bir tamsayı değişkeni 1 attırmak için ++ soneki kullanılır. C++ dili adını, C diliyle Nesneye Yönelimli Programlama yapabilmek için eklentiler (C With Classes) almıştır. Benzer şekilde C++ diline yeni eklentiler yapılarak ((C++)++) bir adım daha ileriye götürülmüş ve tamamen nesneye yönelik tasarlanmış C# dilinin isimlendirilmesinde, + karakterlerinin birbirlerine yakınlaşmış hali ve bir melodi anahtarı olan C# Major kullanılmıştır.

Anders Hejlsberg C# programlama dilinin mimari 1990 lı yılların sonlarına doğru Microsoft un programlama dehası Anders Hejlsberg C# dilini yarattı. 2000 yılının ortalarında C# ın ilk alfa versiyonu piyasaya çıktı. C# programlama dili ; C, C++ ve Java ile bağlantılı bir dil olarak yapıldı. Bunun bir tesadüf olduğunu düşünmeyin. Bunlar dünyada en yaygın kullanılan ve sevilen dillerden üçüdür. Hejlsberg de aynı Stroustrup ve Gosling gibi tekerleği yeniden icat etmektense mevcut bir dili geliştirmeyi uygun görmüştür. Eğer bu diller arasında bir bağlantı kurmak gerekirse. C# programlama dili;. C dilinin söz dizimini ve C++ dilinin nesne yönelimli programlama yöntemlerini ve tekniklerini almıştır. C# ın Java ile olan ilişkisi ise özel bir durumdur. Zira C# ta Java gibi C ve C++ dillerinden özellikler almış ama aynı zamanda Java gibi platform bağımsız kod amaçlı tasarlanmıştır. Yani C# dili, Java dilinden türememiştir. En iyi tarafı ise C, C++, C# veya Java dillerinden birinde iyi olmanız diğer tüm dillerde de size büyük kolaylıklar sağlar.

C# ı Neden tercih edelim? C#, C/C++ dilinden farklı olarak tamamıyla nesneye yöneliktir. int, double gibi temel veri türleri dahi birer nesne olarak tanımlanmıştır. Java dilinden farklı olarak C# dilinde işaretçiler (pointer) kullanılabilmektedir. Öğrenilmesi kolaydır. Nesne yönelimli programlamaya tam destek vermektedir. Yüksek verim. Güçlü ve kolaydır. Xml desteği sunmaktadır. Windows Forms mantığını destekler. Internet teknolojilerinin gelişimine uyum sağlayabilmiş modern bir dildir.

.NET BİLEŞENLERİ C#, VB.NET, C++ vb. CLS Temel Dil Tanımlamaları ASP.NET, WİNDOWS FORMLAR CTS TEMEL SINIF KÜTÜPHANELERİ Ortak Dil Çalışma Platformu (CLR) (Common Language Runtime) İŞLETİM SİSTEMİ

Önceden, geliştirilen yazılımlar direkt olarak makine koduna derlenir ve bu şekilde çalıştırılırlardı. Ayrıca bu programlar, her işletim sistemine özel olarak geliştirilmekte ve derleme işlemi işletim sistemine göre belirlenmekteydi. Böyle bir yapıda taşınabilirlikten söz etmek mümkün değildir. Java da ise, program önce byte code a çevrilmektedir. Bu kodu JVM(Java Virtual Machine), işletim sisteminin istediği koda çevirmektedir..net platformunda da temel prensip Java ile benzerdir.

Java nın çalışma prensibini hatırlayalım: TAŞINABİLİRLİK

.Net Derleme ve Çalıştırma C# kodu MSIL veya IL Assembly. NET kodu önce IL (Intermediate Language-Ara dil) ye derler ve bu IL kodu çalıştırılmak istendiği zaman.net CLR (Common Language Runtime Ortak Çalışma Platformu), JIT (Just In Time) derleyicilerini kullanarak makine diline çevirir. CLR.Net Kodu Makine Dili Çalıştırılabilir Makine Kodu IL Kodu Bu işin yöneticisi: CLR, Bu işi Yapan: JIT Derleyicileri

En güzel yanı: Ortak çatı CLS (Common Language Specifications) :Temel Dil Tanımlamaları CTS (Common Type System) :Ortak Tip Sistemi CLS ve CTS ile.net uyumlu dillerin hepsi aynı değişkenleri ve benzer nesne yönelimli özellikleri taşır. Örn: C# ile yazılan programdaki temel veri tipleri, VB.NET tekiler ile aynı özelliklere sahiptir. Böylece farklı dillerde yazılan bileşenler birbiri ile sorunsuz çalışırlar.

CLR (Ortak Dil Çalışma Platformu) Program CLR İşetim Sistemi CLR,.NET altyapısında programların çalışmasını kontrol eden ve işletim sistemi ile programımız arasında yer alan arabirimdir. (Normalde yazılan kodlar makine diline çevrilir ve işletim sistemi ile direkt bağlantı kurup çalışırdı. )

IL kodu, CLR tarafından çağrılınca JIT derleyicileri tarafından makine diline çevrilir ve çalıştırılır. Eğer çok sayıda platform olduğunu düşünürsek, programların bunlar için ayrı ayrı yazılıp derlenmesi gerekir. Bu durum imkansız gibidir. Platformdan bağımsız bir ortam istiyorsak, ihtiyaç duyulan şey CLR dir, hangi platformda iseniz (Linux,Mac,Windows) CLR bu noktada devreye girer ve.net programlarının farklı platformlarda işletim sistemine göre çalıştırır.

Aradil(IL veya MSIL)(Intermediate Language).NET ortamında kodumuzu derlediğimizde elde ettiğimiz IL (ara dil) kodu işlemciye bağlı olmaz. (a ve b sayılarının toplamı için kullanılan bir C++ programı Intel işlemciler için farklı, SunSparc işlemciler için farklı derlenirdi.) IL içerisinde değişken tanımları, değişkenlerin nasıl saklanacağı, metotların nasıl çalıştırılacağı, aritmetik ve mantıksal işlemler, bellek kullanımı gibi birçok işin nasıl yapılacağı açıklanır. KOD Metadata da, programda kullanılan verilerin tiplerinin yanında oluşturulan sınıfların metotlarını ve bunların özelliklerini ve diğer bilgileri içerir. Kod kısmında ise, derleyici tarafından dönüştürülmüş arakodlar vardır. METADATA

Jıt Derleyicileri(Just in Time) C# ile IL ye derlediğimiz programı çalıştırırken JIT derleyicileri devreye girerler. Bu derleyiciler programın çalıştırıldığı sistemin ve işlemcinin anlayabileceği makine kodunu oluştururlar. Windows ortamı için 3 çeşit JIT mevcuttur 1. Normal JIT : IL kodu makine koduna çevrilirken default (varsayılan) olarak kullanılan derleyicidir. IL kodunu orijinal makine koduna çevirir ve önbellekte tutar. Örneğin ; program içindeki bir derlenmiş bir metot program akışı içinde tekrar çağrılırsa önbellekten çekilir. 2. Pre-JIT :Tüm program kodunu makine koduna çevirip sonra çalıştıran JIT. Fazla hafıza gerektirir. Programın daha hızlı çalışmasını sağlar. 3. Eco JIT : Kısıtlı hafıza ve önbellekli sistemlerde.net programlarının daha iyi çalışmalarını sağlamak için kullanılan derleyicidir. Eco JIT de kullanılabilir hafıza belli bir oranın altına düştüğünde, daha önceden derlenmiş ve çalıştırılmış kısımlar hafızadan silinirler.

CTS (Common Type System) Bütün veri tiplerinin tanımlı olduğu bir sistem olarak düşünebiliriz. C# dilindeki veri türleri aslında CTS deki veri türlerine karşılık gelen ara yüzlerdir. CTS sayesinde.net platformu için geliştirilen bütün diller aynı veri tiplerini kullanırlar, tek değişen türlerin tanımlama yöntemi ve söz dizimidir. Geliştirilen bir nesnenin diğer dillerde de sorunsuz çalışmasını garanti eder. Örnek: Int tipi C++.NET ve VB.NET teki tamsayı tiplerinin kapasiteleri aynıdır. Diğer bir deyişle VB de geliştirilen bir dll C# da rahatlıkla kullanılabilir.

CTS sayesinde;.net de tip güvenli, yüksek performanslı ve kullanılan programlama dilinin diğer.net uyumlu diller ile entegre bir şekilde çalışması sağlanır. Birçok programlama dilinin.net mimarisinde tam nesne yönelimli olarak.net için program yazma aracı olmasına imkan verir. Herhangi bir.net uyumlu dilde geliştirilen nesne diğer dillerde de sorunsuz olarak çalıştırılabilir.

Değer Tipleri Veri Tipleri Referans Tipleri C# da toplam 15 veri tipi vardır bunlardan 13 ü değer tipindedir, 2 si ise referans tipindedir. Değişkenler bellekte bulunan verilerdir. Bir değişkeni kullandığımız zaman o değişkenin bellekte bulundu yerdeki bilgiyi kullanırız. Değer tipleri veriyi direk olarak bellek bölgesinden alırken referans tipleri başka bir nesneye referans gösterirler. Yani referans tipleri içinde veri değil adres bilgisi tutarlar. Veri tipleri stack dediğimiz bellek bölgesinde tutulurlar, referans tipleri ise heap bellek bölgesinde saklanırlar. int, double, float gibi veri tipleri değer tiplerine örnek gösterilebilir. Herhangi bir sınıf türü ise referans tipine örnek gösterilebilir. Değer tipleri birbirine eşitlenirken değişkenin barındırdığı değer bir diğer değişkene kopyalanır. Böylece iki farklı bağımsız değişken oluşur. Referans tipleri ise eşitleme sırasında değişkenlerin taşıdıkları veri değil heap bölgesinde işaret ettikleri adres kopyalanır. Böylece eğer iki referans değişkeni birbirine eşitledi isek ve daha sonra bunlardan birinde bulunan veriyi değiştirdi ise otomatik olarak diğer referans değişkeninin değeri de değişir. Çünkü adreste bulunan veri değişince bu adresi işaret eden iki değişkende yeni veri bilgisine ulaşır.

CLS (Common Language Specification CLS ye uyan bir dille yazılmış kod ile diller arası iletişim sağlanmış olur. CLS uyumlu bir dil ile geliştirilen bir program ile farklı diller arasında etkileşim sağlanabilir..net in temel sınıf kütüphanelerinin içerisinde yer alan kodların büyük bir bölümü CLS uyumludur.

CLS için

CLS nin avantajları Kod yönetimi(code Management ): Loading ve Execution *Uygulama belleginin izolasyonu *Tip güvenliginin(type safety ) dogrulanmasi IL(Intermediate Language ) kodunun dogal makina koduna(native code ) dönüsümünün saglanmasi *Metadata(tipe ait detaylandirilmis bilgiler ) bilgisine erisimin saglanmasi *Yönetilebilir nesnelerin(managed object ) bellek yönetiminin saglanmasi *Kod erisim güvenliginin(code access security ) uygulanmasi *Istisna yönetimi(exception Management ) *Yönetilebilir kodlar, COM nesneleri ve hazir DLL lerin birbirleri arasinda isletimlerinin saglanmasi *Nesne otomasyonunun saglanmasi *Uygulama gelistiriciler için servislerin saglanmasi(debugging vb. )

Namespaces and.net Class Library (İsim Alanları ve.net Sınıf Kütüphanesi).NET teki sınıf kütüphaneleri bir dilden bağımsız bir yapıdadır. Bütün bu sınıfları ve türleri iyi organize edebilmek için.net, isim alanı (namespace) kavramını kullanmaktadır. C# dilinde.net Framework sınıf kütüphanesi içerisindeki veri türleri ve sınıflar using anahtar sözcüğü ile kullanılır. Diğer dillerde de bu isim alanları farklı şekillerde derleyiciye bildirilir. (Java da import, C de include gibi)

.NET sınıf kütüphanesinde bulunan ve en sık kullanılan sınıf kütüphaneleri şunlardır: System:.NET ile çalışırken gerekli temel sınıfları içerir. Ayrıca diğer tüm sınıf kütüphaneleri bu isim alanı içinde kümelenmiştir. Konsol temelli uygulamalarda temel giriş çıkış işlemleri için gerekli temel sınıf Console, bir çok matematiksel fonksiyonu içinde barındıran Math sınıfı da System isim alanı içersinde yer alır. System hiyerarşinin tepesinde bulunur. System.Data: Veritabanı işlemlerinin tamamı için hazır gelen sınıf kütüphanesine bu isim alanı ile erişilir. Bu sınıf kütüphanesi içindeki SQL ile işlemler için System.Data.SqlClient isim alanı mevcuttur. System.Xml: Veri biçimlendirme ve internetten veri paylaşımı için en çok kullanılan teknolojilerden biri olan XML ile çalışmak için gerekli sınırları içerir. System.Net: Dağıtık uygulama geliştirmek için gerekli olan ağ bileşenlerini içeren isim alanıdır. HTTP ve ağ protokolleri için kullanılır.

System.IO: Dosyalarla çalışmak (okuma/yazma) için gerekli işlemlerini içerir. System.Windows.Forms: Windows temelli uygulamalarda kullanılan görsel kontrolleri barındıran isim alanıdır

Kaynaklar Yrd.Doç.Dr. Erkan Tanyıldız, Nesne Tabanlı Programlama ders notları https://gelecegiyazanlar.turkcell.com.tr http://tr.wikipedia.org/wiki/ Beni dinlediğiniz için teşekkürler. Haftaya daha somut şeylerle görüşmek üzere Melih Hilmi Uludağ www.melihhilmiuludag.com adresinden bu dökümana erişebilirsiniz.