• Sonuç bulunamadı

GÖRSEL PROGRAMLAMA 1 DERSI 1.HAFTA C# nedir?.net Framework nedir? Nesne Yönelimli Programlama Kavramı

N/A
N/A
Protected

Academic year: 2022

Share "GÖRSEL PROGRAMLAMA 1 DERSI 1.HAFTA C# nedir?.net Framework nedir? Nesne Yönelimli Programlama Kavramı"

Copied!
59
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

GÖRSEL PROGRAMLAMA 1 DERSI 1 .HAFTA

C# nedir?

.Net Framework nedir?

Nesne Yönelimli Programlama Kavramı

(2)

C# nedir?

C#, C/C++ ve Java dillerinde türetilmiş,

Bu dillerin dezavantajlarının elenip iyi yönlerinin alındığı,

V. Basic görselliği ve C gücünü bünyesinde barındıran,

Doğrudan değil otomatik bellek yönetimi yapabilen,

Güçlü, basit, esnek, tip-güvenli (type-safe, tür dönüşümlerindeki aldığı önlemler)

.Net platformu için hazırlanmış %100 nesne yönelimli bir dildir.

C#’ ın kaynak dosya uzantısı (soyadı) “.cs” dir.

(3)

C# kullanım alanları

Konsol uygulamaları

Windows için program yazma

Web tabanlı uygulamalar

DLL ile çalışma ve DLL yazma

(4)

C# nedir?

(5)

Visual Studio

Visual Studio, Microsoft tarafından geliştirilen bir tümleşik geliştirme ortamıdır (IDE- Integrated Development Environment). Başta Visual C++ , Visual C#, Visual Basic olmak üzere Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework ve Microsoft Silverlight tarafından desteklenen tüm platformlar için Windows Form uygulamaları, web siteleri, web uygulamaları ve web servisleri ile birlikte konsol ve grafiksel/görsel kullanıcı ara yüzü uygulamaları geliştirmek için kullanılır.

MS Visual Studio: http://msdn.microsoft.com/vstudio/

(6)

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

(7)

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

(8)

.NET Bileşenleri

(9)

.NET Bileşenleri

Java’dan önce, geliştirilen yazılımlar direkt olarak makine koduna çevrilirdi.

Java ile program kodu önce byte code’a çevrilir. JVM (java virtual machine) bu kodu işletim sisteminin istediği koda çevirir.

.Net için de çalışma mantığı benzerdir. .NET kodu ilk önce IL’ye

(Intermediate Language-Aradil) derler, bu IL kodu çalıştırılmak istendiğinde CLR, JIT derleyicilerini kullanarak kodu makine diline çevirir.

.NET uygulama geliştirme aşamasındaki bileşenler aşağıdaki gibi sıralanabilir:

IL

CLR

JIT

CTS

CLS

(10)

Aradil (IL veya MSIL) (Intermediate Language)

Herhangi bir C++ veya Vbasic kodu direkt makine koduna çevrilirdi ve çalıştırılırdı. Makine diline

çevrilen programlar, işlemciye ve işletim sistemine özel olarak derlenirdi.

Örn: 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.

Fakat .NET ortamında kodumuzu derlediğimizde elde ettiğimiz IL (aradil) kodu işlemciye bağlı

olmaz.

(11)

Aradil (IL veya MSIL) (Intermediate Language)

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.

Artık IL ile oluşturduğumuz kodumuzun çalıştırılabilir bir program olması için derlememiz gerekir. Bunun için JIT (Just in Time) derleyici kullanılır.

(12)

JIT Derleyiciler (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 2. Pre-JIT

3. Eco-JIT

(13)

JIT Derleyiciler (Just in Time)

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.

Pre-JIT: Tüm program kodunu makine koduna çevirip sonra çalıştıran JIT. Programın daha hızlı çalışmasını sağlar.Fakat fazla hafıza gerektirir.

(14)

JIT Derleyiciler (Just in Time)

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.

(15)

Ortak Dil Çalışma Platformu(CLR) (Common Language Runtime)

CLR bir platformdur. IL tarafından makine diline çevrilmiş kodları önbellekte tutar, bu işlem performans artışına sebep olurken diğer taraftan sistem hafızasında küçümsenmeyecek bir yer işgal eder.

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

Eğer 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.

(16)

Ortak Dil Çalışma Platformu(CLR) (Common Language Runtime)

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.

Bu durumda çözüm ortak bir ara dil kullanmak ve her bir platform için bu ara dile çevrilmiş kodu

çalıştırmaktır.

(17)

Ortak Dil Çalışma Platformu(CLR) (Common Language Runtime)

Managed Code (Yönetilen Kod): Yalnızca CLR

yardımları altında çalışan koddur. Bir örnek vermek gerekirse; Windows’ta çalışan farklı işlemlere

sahibiz. Uygulamaların izlemesi gereken kural

Windows genel kurallarına uymalarıdır. Managed kod da CLR tarafından (Windows’un yaptığı

şekilde) çalıştırılan koddur.

(18)

Ortak Dil Çalışma Platformu(CLR)

(Common Language Runtime)

(19)

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.

(20)

CTS (Common Type System)

(21)

CLS (Common Language System)

Dil derleyicisinin uyması gereken kuralları içerir.

CLS’ye uyan bir dille yazılmış kod ile diller arası iletişim sağlanmış olur.

(22)

.NET Özellikleri

CLR hangi dil kodunu çalıştırdığını bilmez

Bütün diller IL (Ortak dil) koduna çevrilir

IL kodlar her zaman managed’tir.

IL code ve metadata ayrılamaz, aynı dosyada beraber üretilirler

Sadece C++.NET ile hem managed hem de unmanaged (default) kod üretilebilir

Üretilen dosya PE (Portable Executable)

PE, CLR (.NET Framework) ile çalışır

Managed Modül:

PE Başlık : GUI veya CUI veya DLL, built-time

Sadece IL Kod içerirse: PE başlığı ihmal edilir

Yerel CPU Kod: PE başlık CPU yerel makine dili kodları içerir

CLR Başlık : CLR modeli, bayraklar, Ana fonk. Adresi, module bilgileri

Metadata : Tanımlanmış veya hazır veri türleri, nesnelerin tabloları

IL Kod: Derleyici tarafından üretilen ortak kod, daha sonra CLR tarafından yerel CPU makine komutlarına çevrilir

(23)

Namespaces and .NET Class Library (İsim Alanları Sınıf Kütüphanesi)

Programcıların işlerini kolaylaştırmak için bir takım hazır kütüphaneler vardır fakat C# dili ile gelen hazır bir takım kütüphaneleri yoktur.

Bunun yerine Framework dediğimiz altyapıda bir takım temel türler ve sınıflar mevcuttur. Bu sınıf ve türleri organize

edebilmek için Namespace kavramı kullanılır.

(24)

Namespaces and .NET Class Library (İsim Alanları Sınıf Kütüphanesi)

C# dilinde .NET Framework sınıf kütüphanesi

içerisindeki veri türleri ve sınıflar “using” sözcüğü ile kullanılır. Diğer dillerde de bu isim alanları farklı şekillerde derleyiciye bildirilir.

Fakat temelde yapılan iş, .NET Framework Sınıf Kütüphanelerini kullanma hakkı kazanmaktır.

Program geliştirirken sınıfların birbiri ile ilgili olanlarını aynı isim alanı içine koymalıyız.

(25)

Namespaces and .NET Class Library (İsim Alanları Sınıf Kütüphanesi)

System isim alanı: .NET çalışırken gerekli temel

sınıfları içerir. Ayrıca diğer tüm sınıf kütüphaneleri de bunun içinde kümelenmiştir. System hiyerarşinin tepesinde bulunur.

Örneğin tüm veritabanı işlemleri için kullanılacak sınıf kütüphanesi “System.Data” dır.

Bu sınıf kütüphanesi içindeki SQL ile işlemler için

“System.Data.SqlClient” isim alanı mevcuttur.

(26)

Namespaces and .NET Class Library (İsim Alanları Sınıf Kütüphanesi)

System.Net: HTTP ve ağ protokolleri için kullanılır.

System.Xml: XML verileri ile çalışmak için

System.IO: dosyalara bilgi girişi, dosyadan bilgi okuma, I/O işlemleri için kullanılır.

System.Windows.Forms: Windows tabanlı

uygulamalarda kullanılan zengin grafik arabirimi kontrollerini içerir.

(27)

Nesne Yönelimli Programlama

Yazılım dünyasında karmaşıklığı ya da boyutu artan yazılımların kolayca ve kısa sürede geliştirilebilmesi için özellikle tüm yazılım projelerinde kullanılmaktadır.

Tüm modern programlama dilleri tarafından desteklenmedir.

Nesneye yönelik programlama da 3 temel yapı üzerine durulur. Bunlar;

Veri Soyutlama

Kalıtım

Çok Biçimlilik

(28)

Nesne Yönelimli Programlama

Sınıf (Class) , bir bütünü oluşturacak şekilde ortak özelliklere sahip olan üyelerin bir araya getirdikleri bütün olarak tanımlanabilir.

Nesne (Object) ise, etrafımızda gördüğümüz her şeydir. Örnek olarak; kalem, kağıt, defter vs.

bunların hepsi birer nesnedir diyebiliriz. Nesnelerin iki temel bileşeni bulunur. Bunlar, Özellik (Property) ve Davranış (Behavior)’dır. Nesne tanımlandığı

sınıfın özelliklerini taşımaktadır.

(29)

Nesne Yönelimli Programlama

Buradan anladığımız gibi, sınıf nesneyi tanımlayan bir veri türüdür denilebilir. Nesne ise bir sınıftan türettiğimiz ve onun özelliklerini taşıyan bir modeldir ve daha sonra tekrar tekrar kullanılacak olan parçalardır.

Sınıf ve Nesne Tanımlama Örneği:

public class arac {

arac otomobil = new arac();

}

(30)

Nesne Yönelimli Programlama

Sınıf ve Nesne Tanımlama Örneği:

public class arac {

arac otomobil = new arac();

}

Burada bir sınıftan bir nesne oluşturulmuştur. Yani arac adında açılan bir sınıfın içinde otomobil nesnesi

oluşturulmuştur. Buna benzer farklı nesne ve sınıflar oluşturabilir veya bir sınıfın özelliklerini taşıyan farklı nesneler üretebiliriz.

(31)

Visual Studio Ortamı Başlangıç Sayfası

(32)

Visual Studio Ortamı

(33)

Visual Studio Ortamı

(34)

Visual Studio Ortamı

(35)

C# Programlama: Design/Tasarım

Ortamı

(36)

Visual Studio Ortamı

New Project çalışma ortamında Yeni Proje oluşturmak için kullanılır.

Open Project çalışma ortamında Kayıtlı Projeyi Açmak için kullanılır.

Debug (Projeyi Derleme = F5)

Visual Studio 2019 çalışma ortamında oluşturulan projeyi derlemek için F5 olarak ifade edilir.

(37)

IntelliSense (Kod Tamamlama)

IntelliSense, nesne tabanlı programlama yazılımının kod tamamlama özelliğidir.

Bu özellik daha hızlı ve hatasız kod yazma olanağı sağlar.

Bir intellisense önerisini kabul etmek için açılan listeden ok tuşları yardımıyla seçtikten sonra Tab, Enter ya da boşluk tuşlarından birisine basılarak kullanılabilir.

Bu işlem fare ile de yapılabilir.

NOT: Herhangi bir durumda intellisense öneri listesini görmek için Ctrl + Boşluk tuş kombinasyonu

kullanılabilir.

(38)

Toolbox (Araç Kutusu)

Visual Studio 2019 çalışma ortamında görsel bileşenleri

(label,buton,edit,checkbox vs.) oluşturmak için Toolbox kullanılır.

(39)

Solution Explorer

Visual Studio 2019 çalışma ortamında Solution Explorer paneli açık olan proje ve projeye ait olan dosyaları görüntüler.

(40)

Properties

Visual Studio 2019 çalışma ortamında görsel bileşenlerin

değerlerini değiştirmek ve olay yönetimi için kullanılan ekran Properties olarak ifade edilir.

(41)

C# Windows Form Application

C# Form Uygulamaları, olay tabanlı /hareket bağımlı (event driven) uygulamalardır.

Geleneksel ya da “procedural/yapısal” uygulamalarda, uygulama kendisini belirli bir sıra ile kontrol etmekte ve işlemektedir. Bu tarzda uygulamalar ilk satırdan çalışmaya başlar ve belirli bir sırayla ilerler ve işlemler (procedure/function) gerekli oldukça çağırılarak çalıştırılır.

Hareket/Olay-Bağımlı model uygulamalarda ise uygulama belirli doğrusal bir yol izleyerek çalıştırılmaz. Farklı hareketler için farklı işlemler çalıştırılır ve programın her çalıştırılmasıyla uygulama yeniden farklı farklı yollarla çalışmasını sürdürebilir.

(42)

OLAYLAR (EVENTS)

Bir olay/hareket, kullanıcının faresine tıklaması ya da klavyeden herhangi bir tuşa basmasıyla, program içerisinden yapılan bir kontrol düzeneğiyle ya da başka bir pencerenin neden olacağı bir davranışı nedeniyle oluşmuş olabilir.

Herhangi bir hareketin gerçekleştirilmesi, işletim sistemine bir mesaj gönderilmesine neden olur. Sistem mesajı işler ve diğer pencerelere yayımlar. Her pencere özelikle kendi yapısı ile ilgili (aynı zamanda uygun) mesajları yorumlayarak işler. Örneğin, başka bir pencere kendisi üzerinde yer alacaksa ilgili pencere kendi sınırlarını yeniden düzenler.

(43)

OLAYLAR (EVENTS)

Uygulamanızda, kaynak kodunuz tanımlanmış tetikleme hareketleriyle kontrol edilecek ve çalıştırılacaktır.

Örneğin bir textBox1’ın içeriğinin değişmesiyle birlikte TextChanged olayı (event procedure) ’ü gerçekleşecek ve bu değişikliğe bağlı işlem(ler)

sırasıyla çalışacaktır.

void textBox1_TextChanged(object sender, EventArgs e) {

}

Bir butona tıklanınca (button1_Click) Ekrana “ Merhaba ” yazan program;

void button1_Click(object sender, EventArgs e) {

MessageBox.Show ("Merhaba”);

}

(44)

Özellik, Yöntem ve Hareket (Property, Method,Event)

C# Form ve nesneleri(kontrolleri); özellikleri, yöntemleri ve olayları/hareketleri olan nesnelerdir.

Özellikler (Property) nesnenin ayırıcı nitelik ve nicelikleri,

Yöntemler (Methods)eylem yetenekleri,

Olaylar (Hareketler)- ise tepkileri olarak düşünülebilir.

(45)

Özellikler – Metotlar- Olaylar Nasıl Tanımlanır?

Her bir nesne yada kontrol, özelliklere / properties, metotlara/methods, olaylara/events sahiptir.

Nesne.Ozelligi = deger;

titleLabel.Text = "Görsel Programlama";

Label.Text = "1234 Esentepe";

msgLabel.AutoSize = true;

sayac = 12;

Nesne.Metot();

helloButton.Hide();

messageLabel.Show();

Nesne_Olay(…) {

}

private void Form1_Load(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e) { }

(46)

Örneğin günlük yaşamdan bir nesne BALON seçelim.

ve bu balonun özeliklerini, yöntemlerini ve hareketlerini tanımlamaya çalışalım

Özellikleri ;

genişliği, yüksekliği, hacmi ve rengi, durumu hakkındaki bilgiler (patlak veya patlamamış olması gibi)

Yöntemleri ;

Bir balon gerçekleştirebileceği bir takım doğal yöntemlere veya yetilere sahip olacaktır mesela bunlardan (şişirme veya söndürme) bizim seçtiğimiz balonun yöntemleridir. Yine de ayrıca bütün balonlar bu yöntemlere sahiptir.

Hareketleri ;

Bir balon bir takım durumlara karşılık tepki verirler. İğne batırılırsa yada hava şiştikten sonra hava verilmeye devam edilirse patlayacaktır.

Patlama balonun hareketidir.

(47)

Eğer bir balon programı yapacak olsaydık yazacağımız C# kaynak kodumuz aşağıdaki gibi olacaktı;

Balonun özeliklerini belirlemek için, Balon.Renk = Mavi;

Balon.Basinc = 6;

Balon.Patlak = False;

Balonun metotlarını belirlemek için, Balon.Sis()

Balon.Son()

Balon.Buyu(5) // 5 birim kadar büyüsün

(48)

Balonun olası olayları için, void Balon_Patliyor()

{

Balon.Son(); //balonun bir metotu

Balon.SesCikart(“paaatt”);//balonun bir metotu Balon.Patlak = True; //balonun bir özellliği

Balon.Basinc = 1; //balonun bir özelliği }

(49)

C# ile uygulama geliştirmek için dört temel adım vardır.

Kullanıcı arayüzü oluşturmak.

Özelikleri atamak.

Kod yazmak.

Test etmek.

Private Sub Command1_Click()

Text1.Text = “Merhaba VB!”

End Sub

Şimdi klavyeden F9 tuşuna basarak yada C# IDE deki run tuşuna basarak uygulamamızı çalıştırıp test

edebiliriz. İyi testler

(50)

Bir Form Tasarlamak

Text : Pencerenin başlığı. (window title)

Icon : Pencerenin simgesi.

MaxButton : Pencere büyütme tuşuna sahip mi sorusunun yanıtı.

MinButton : Pencere küçültme tuşuna sahip mi sorusunun yanıtı.

BorderStyle : Pencerenin tipi.

Height : Pencerenin yüksekliği.

Width : Pencerenin genişliği.

Left : Pencere sol kenarı ile monitörün sol kenarı arasındaki uzaklık.

Top : Pencere üst kenarı ile monitörün üst kenarı arasındaki uzaklık.

WindowState : Pencere ilk göründüğünde durumu. (Küçük, büyük, normal)

Name : Program kaynak kodunda penceremizi tanımamıza da yardımcı olacak isim.

(51)

Formun Hareketleri

Resize : Pencerenin çerçevesinin büyüklüğünün değişmesi ile birlikte çağrılan hareket işlemi (event procedure).

Activate : Pencerenin aktif hale gelmesiyle çağrılan hareket işlemi.

Deactivate : Pencerenin pasif hale gelmesiyle çağrılan hareket işlemi.

Formun Yöntemleri

Show : Pencerenin görünmesini sağlayan yöntem.

Print : Pencere üzerine yazı bastırmamızı sağlayan yöntem.

Line : Pencere üzerine çizgi çizmemizi sağlayan yöntem.

Circle : Pencere üzerine çember çizmemizi sağlayan yöntem.

Refresh : Pencerenin yeniden boyanmasını sağlayan yöntem.

(52)

Nesneler / Kontroller

(53)

Properties / Özellikler penceresi

Her kontrol/nesne’nin bir özelliği vardır;

Name

Position (top and left)

Size (height and width)

Text

Özelliğin açıklaması

(54)

Events/Olaylar Penceresi

Events(Olaylar):

Button click

KeyPress

MouseMove

MouseDown

Her nesnenin kendine has bir Olayı olabilir – Form_load, Timer_tick () gibi

(55)

C# Programlama– Kod Editörü

(56)

İsimuzayları (namespaces)

(57)

İlk Form uygulamamız

Çalıştır C#’ı, File New Project /Solution penceresinden Windows Application seçilir.

Name: Dosya ismi yazılır

(58)

İlk Form Uygulamamız

Design/Tasarım saçilir (click form1.cs[Design] tab).

Toolbox tan projemize uygun nesne / kontroller seçilir

(59)

İlk Form Uygulamamız

Form üzerindeki butona Double-click yapılarak

button1’in click olayına kod yazılır. Yazılacak kod:

textBox1.Text=“Merhaba"; Start (F5) yapılır ve butona click yapılır

Referanslar

Benzer Belgeler

Daha sonra formun Properties penceresine giderek Help Provider nesnesini ekledikten sonra gelen özellikleri inceleyelim ve gerekli değişiklikleri yapalım. ¾ ShowHelp on Help

Diğer karakterler harf, rakam veya _ (alt çizgi) olabilir. ¾ TextAlign: Nesne içerisindeki yazının sola, sağa veya ortaya yazılmasını sağlar. ¾ ScollBars:

Resim 2.2’deki gibi daire ve elips çizebilmek için Paint() metodunu aşağıdaki gibi düzenleyiniz.. İçi dolu daire ve elips çizebilmek için FillEllipse()

 Formunuza veri tabanına kayıt girmek ve mevcut kayıtlar üzerinde işlem yapmak için 5 adet Button nesnesi ekleyiniz..  Button nesnelerinin Text özelliklerine Yeni kayıt,

Metin kutularından girilen iki sayı Trace ve Debug sınıfları kullanılarak çeşitli mantıksal işlemlere tabi tutulacaktır.. Bu işlem için formunuza iki metin kutusu ve bir buton

float sbyte, byte, short, ushort, int, uint, long, ulong, char, decimal char sbyte, byte, short.. sbyte byte, ushort, uint, ulong, char ushort sbyte, byte,

1. Formlarda en çok kullandığımız öğe olan butonlar, bir kontroldür. Form içinde kullanılan komponentler görsel bir sunum sağlar. Dock özelliği, herhangi bir kontrolü

Yani siz referans türünden bir değişken tanımladığınızda değişkenin kendisi stack bellek bölgesinde tutulacak ancak değer olarak nesnenin heap bellek bölgesindeki