Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
1- C# Hello world Nesne Yönelimli Programlama - i
Yunus Özen
2
C# Genel amaçlı Nesne yönelimli Tip güvenli 2000 yılı
Anders Hejlsberg, Scott Wiltamuth ve Peter Golde
3
C# Programlama Dili C#, programlama dillerinin gelişim sürecinde bir sonraki aşamayı temsil eder. Daha önce kullanılan başarılı programlama dilleri gibi C# da bir yandan programlama sanatını daha ileriye taşırken bir yandan da geçmişte geliştirilen konseptlerin üzerine inşa edilmiştir. Microsoft, .net framework altyapısını geliştirmek için C# dilini oluşturdu. C# geliştirilirken diğer programlama dillerinden etkilenilmiştir.
4
C# Dil Ağacı Sintaks olarak ve üzerine inşa edildiği temel itibariyle C#; C ve C++ dillerinden türetilmiştir. Ayrıca benzer sintaksa sahip olan Java ile de ilişkilidir. Bu 3 dilin gelişimini inceleyip C# dilinin sunduğu olanaklara o çerçeveden bakmaya çalışalım.
5
Modern Programlama ve C Dili
C, Dennis Ritche tarafından 1970 yılında UNIX işletim sistemi kullanan DEC PDP-11 üzerinde icat edildi. C dili yapısal programlama (structured programming) yaklaşımının dabaşlangıcı sayılabilir. Yapısal programlama, tanımlanmış kontrol ifadeleri, yerel değişkenler ve fonksiyonlar gibi özellikleri ile büyük programlar yazmayı olanaklı hale getirdi. C dilinin kısa ve öz ama kullanışlı söz dizimi, kontrolün programcıya verilmesi, programcıların C dilini seçerken tercih ettikleri özellikler olarak öne çıkıyor ’lerin en yaygın dili olması da bu yüzdendir. Zamanla, programların büyümesi, kısa zamanda ve büyük ekiplerle program geliştirme gereksinimleri C dilinde programcıları zorlamaya başladı.
6
Nesne Yönelimli Programlama ve C++
Yapısal programlamanın başa çıkmakta zorlanacağı büyüklükte programlar yazma ihtiyacı neticesinde nesne yönelimli programlama yaklaşımı ortaya atıldı. Bjarne Straustrup 1979 yılında C diline nesne yönelimli özellikler eklemek üzere Bell Laboratuvarlarında çalışmaya başladı. Yeni geliştirilen bu dile 1983 yılında C++ adı verildi. 1990’ların başında C++ dili yeterince olgunlaşmıştı ve yagın kullanımı başladı. Bugün hala yüksek performanslı, sistem seviyesinde kod geliştirmek için C++ tercih edilmektedir. C++, yeni bir programlama dili icad etmek için değil, C dilinin yetersiz kaldığı noktada yeni özellikler ekleyerek onu daha gelişmiş bi dil haline getirme girişimi olarak değerlendirilmelidir.
7
Internet ve Java C/C++ ile azılan kodları belirli bir işlemci ve işletim sisteminde çalıştırılmak üzere derlenir. Başka bir işlemci ya da işletim sistemi için yeniden derlenmesi ve farklı çalıştırılabilir versiyonunun oraya kurulması gerekir. Farklı işletim sistemi ve işlemcilerin ortaya çıkması ile birlikte her platformda çalışabilecek taşınabilir kod yazma ihtiyacı kendini gösterdi. 1991’de Sun Microsystems’de James Gosling taşınabilir bir dil ortaya çıkarmak üzere çalışma başlattı. Patrick Naughton, Chris Warth, Ed Fraklin ve Mike Sheridan da bu yeni dilin gelişimine katkıda bulundular.
8
Internet ve Java Yeni ortaya çıkan ve adına Java denilen yeni dil, C dilinin söz dizimi, C++ dilinin nesne yönelimliyapısı üzerine geliştirildi. Java ile yazılan kodlar bytecode adı verilen bir ara dile çevrilir. Üzerinde Java Virtual Machine (JVM) kurulu olan herhangi bir platformda bytecode, JVM tarafından makina koduna çevrilir ve çalıştırılır. Java ilk olarak gömülü sistemlerde yaygın kullanıldı. Internet’in de taşınabilir ve her platformda çalışabilir koda ihtiyaç duyduğu zamanla anlaşıldı.
9
C# Dilinin Doğuşu Microsoft, diller arasında uyum içinde çalışma özelliği de ekleyerek yeni bir platform oluşturmaya karar verdi. Bir dilde yazılan kodun diğer bir dilde de kolayca kullanılabilmesi için bir çözüm geliştirmek istedi. 1990’ların sonlarında C# geliştirildi ve yeni oluşturulan .net platformunun temel bir parçası oldu yılında ilk C# sürümü yayınlandı. C# dilinin baş mimarı Pascal ve Delphi gibi bir çok başarılı programlama dillerini de geliştirmiş olan Anders Hejlsberg’dir. Anders ile birlikte Scott Wiltamuth, Peter Golde, Peter Sollich ve Eric Gunnerson da temel dil tasarımı grubunda yer almaktadır.
10
C# Dilinin Doğuşu C#, C ve C++ dillerini miras alır ama Java’yı miras almaz. Java iel benzerlikleri vardır. Farklı dillerle ortak çalışabilme özelliği ve bileşen yönelimli bir dil olması ile farklılaşmaktadır. C# dilindeki Jenerik tip sistemi Eiffel ve Ada dillerinden miras alınmıştır. LINQ yapısı ve lambda ifadeleri, Haskell ve Lisp dillerinden alınmıştır. Ruby gibi dinamik dillerden ve F# gibi fonksiyonel dillerden de özellikler almaktadır.
11
.Net Framewrok Ortak Dil Çalışma Zamanı :Uygulamaların ihtiyaç duyacağı alt seviye servisleri sağlar. .Net Framewrok ortamında yazılan koda managed code, dışında yazlan koda unmamaged code dedir. Sınıf Kütüphanesi: 4000’den fazla sınıf vardır. Günümüzde bilinen en büyük sınıf kütüphanelerindendir. Paralel Programlama Platformu: Çok işlemcili ortamlarda çalışmanın avantajını kullanabilecek etkin kod yazmayı destekler. Dinamik Dil Çalışma Zamanı: IronRuby ve IronPython gibi dinamik diller için servisler sağlar.
12
Ortak Dil Çalışma Zamanı (Common Language Runtime - CLR)
CLR, .net framework yapısının çekirdeğidir. Birleşik tip sistemi ve yönetilebilen çalışma zamanı sağlar. Dilden ve platformdan bağımsız uygulamalar geliştirme olanağı sağlar.
13
Ortak Tip Sistemi (Common Type System - CTS)
Ortak tip sistemi sayesinde bütün .net dilleri aynı tip tanımlarını kullanır.
14
Ortak Dil Özellikleri (Common Language Specification - CLS)
Ortak tip sisteminin olabilmesi için .net çatısına dahil edilen bütün dillerin bazı ortak özellikleri taşımaları gerekir. Bu ortak özelliklere ortak dil özellikleri denir. Bu sayede farklı dillerde yazılmış yönetilebilir kodlar birlikte çalışabilirler, dilden ve platformdan bağımsız uygulamalar geliştirmek mümkün hale gelir.
16
Ortak Ara Dil (Common Intermediate Language - CIL)
Ortak tip sistemi ve ortak dil özellikleri sayesinde platformdan bağımsız ve dilden bağımsız uygulamala geliştirmek mümkündür ama derleyici kodu belirli bir donanım platformuna göre derlerse problem var demektir. Bu problemi çözmek için yönetilen kod ortak ara dile derlenir. Bu dili assembly dili gibi düşünebilirsiniz. Uygulama çalıştırılacağı zaman da uygun işletim sistemi ve donanım platformuna göre derlenir çalıştırılır. Donanım platformundan bağımsız olma durumu da bu şekilde sağlanır.
17
Sanal Yürütme Sistemi (Virtual Execution System - VES)
Ortak Dil Çalışma Zamanı’nın diğer bir önemli parçası da yönetilen çalışma zamanı ortamı (managed runtime environment) olan Sanal Yürütme Sistemi’dir. Java uygulamaları JVM’ye ihtiyaç duyuyorlarsa .net uygulamaları da CLR’ye ve özellikle VES’e ihtiyaç duyarlar. VES, CIL kodunu yükler, yürütür, bellek kullanımını yönetir. Derlenen ya da yorumlanan bütün .net dilleri için CIL kodu yüklenir ve yürütülür. CIL kodu derlenmiş olur
19
JIT VES tarafından sağlanan servislerden birisi de Just-In-Time Derleyici (JIT)’dir. Just-In-Time derleme işlemi, yarı derlenmiş CIL kodunu çalışma zamanında doğal koda (native code) ya da yürütülebilir koda dönüştürmektir. Derlenen kod yürütülür ve sonraki yürütmeler için önbelleklenir.
20
Bellek Yönetimi ve Çöp Toplama (Garbage Collection)
Yönetilmeyen dillerde bellek kullanımı ve buna bağlı çıkablecekler problemler için bellek yönetimi önem arzeder. .net Framework bellek yönetimini VES’in bir parçası olarak üstlenir. İhtiyaç kalmadığında ilgili bellek bölgesini temizleme işlemine çöp toplama denir ve C# da .net framework içinde böyle bir özelliğe sahiptir.
21
Framewrok Sınıf Kütüphanesi (Framewrok Class Library - FCL)
Java Sınıf Kütüphanesi, C++ Standart Şablon Kütüphanesi, Microsoft Aktif Şablon Kütüphanesi, Microsoft Temel Sınıfları, Borland Windows Nesne Kütüphanesi gibi .net Framework de çok zengin bir sınıf kütüphanesine sahiptir. Yaygın programlama görevlerini yerine getirmek için ihtiyaç olan tipler ve sınıflar .net framework içerisinde hazır olarak gelir.
22
FCL
23
FCL FCL’nin en altında Temel Sınıf Kütüphaneleri (Base Class Libraries - BCL) vardır. BCL içerisinde toplam 172 tane açık erişilebilir tip vardır. Bu tipler ECMA Ortak Dil Altyapısı (Common Language Infrastructure - CLI)standardında tanımlanmıştır. BCL haricinde kalan FCL sınıfları ise xml işlemleri, güvenlik, ağ gibi daha spesifik işlevlere odaklanmıştır.
24
ECMA Nedir ECMA 1961’de kurulan, Bilgi İletişim Teknolojileri’nde standartları belirlemek üzere örgütlenmiş kuruluştur. C# Dil Spesifikasyonları ve CLI, 2001 yılında ECMA tarafından kabul edilmiştir. CLI, CLR’ın açık kanaklı versiyonudur. Mono, Portable .Net gibi açık kanaklı framewrokler bu standartlar temel alınarak geliştirilmiştir. Mono, özellike lnuc platformunda ve diğer işletim sistemlerinde çalışabilen bir framework olarak yaygındır.
25
İsim Uzayları (Namespace)
FCL’nin içerisinde yüzlerce tip tanımı var. Bu sınıfları hiyerarşik olarak gruplamak için namespace mekanizması kullanılıyor. İsimuzayları temel olarak tip koleksiyonlarıdırlar. Hiyerarşik gruplar birbirlerinden (.) ile ayrılırlar. Örneğin System.Printing.PrintDriver ifadesi System.Printing isimuzayının altında bir sınıf ismidir. FCL içerisinde 400 civarında isimuzayı vardır. Bazıları her yazdığımız uygulamada kullanılır, belki bazılarını hiç görmeyeceksiniz bile.
26
Yaygın İsimuzayları System: .net içerisindeki temel isimuzayıdır. Ortak kullanılan veri tipleri, istisna ve olaylar bu isimuzayı altında gruplanmıştır. System.Collections.Generic: Jenerik koleksiyonların, listelerin oluşturulması için gerekli sınıfları içerir. System.Data: ADO.NET kütüphanesinin aşağı yukarı tamamını ve diğer veri erişim sınıflarınıbarındıran isimuzayıdır. Geliştirdiğimiz uygulamada ihtiyaç oldukça bu isimuzaylarından gerekli olanlarını uygulamamıza dahil ederiz.
27
Paralel İşleme Platformu
Çok kanallı ve asenkron uygulamalar geliştirmek hem yönetilen hem de yönetilmeyen kod ile mümkündür. Paralel işleme platformu iş parçacıkları ve kilitler gibi alt seviye işlemlerle uğraşmadan çok kanallı ve asenkron uygulama geliştirmeyi kolay hale getirir.
28
Dinamik Dil Çalışma Zamanı (Dynamic Language Runtime - DLR)
Framework 4.0 ile birlikte dinamik dil çalışma zamanı geliştirilmiştir. Bu sayede dinamik dillere çalışma zamanı servisleri sağlanır. Dinamik dillerin statik .net dilleri ile ortak çalışma imkanı ortaya çıkar. Ayrıca mevcut statik dillere dinamik özellikler kazandırır.
29
Framework Diagram
30
C# Versiyonları
31
C# ile İlk Program DEMO
32
Teşekkürler
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.