39
Program Yapıyorum Nesne Tabanlı Programlama Hakan Doğan

Program Yapıyorum

  • Upload
    torgny

  • View
    27

  • Download
    0

Embed Size (px)

DESCRIPTION

Program Yapıyorum. Nesne Tabanlı Programlama Hakan Doğan. Nesne Tabanlı Programlama. Gerçek hayatta var olan olguların - PowerPoint PPT Presentation

Citation preview

Program Yapyorum

Program Yapyorum Nesne Tabanl Programlama

Hakan DoanNesne Tabanl ProgramlamaGerek hayatta var olan olgularnprogramlamaya aktarlmasndaki yeni yaklamdr. Klasik prosedrel programlamada verilerimiz ve fonksiyonlarmz vard. Yani her ey veri ve bu veriyi ileyen metotlar etrafnda dnyordu.Nesne tabanl programlamada da iki nemli birim; veri ve veriyi ileyipmantkl sonular reten metotlar bulunur. Ama buradaki fark gerek hayattaki olgularn da daha iyi gzlenip programlama dnyasna aktarlmasndadr.Nesne tabanl programlama modeli

rnekMesela elimizde bir tmz olsun. tnn markas, modeli, rengi, alt elektrik voltaj, ne tr kumalar tleyebildii bu tye ait zelliklerdir (veri). Ayn zamanda tmz stabiliriz, tleme iinde kullanabiliriz ve soumaya brakabiliriz. Bunlar ise tnn fonksiyonlardr (metot).Snf (Class) ve nesne (Object) kavram

Eer t ile ilgili bir program yapm olsak ve nesne tabanl programlama tekniinikullansak hemen bir t snf (class) olutururduk. Bu snfta tye ait bilgiler (veriler) ve t ile yapabileceimiz iler (metot) bulunurdu. O zaman nesne tabanl programlamada bir snfta, snfa ait veriler ve bu verileri ileyip bir takm faydal sonular reten fonksiyonlar (metotlar) bulunur.Nesne tabanl programlama KavramlarKapslleme (Encapslation) : lemlerin ve verilerin gizlenmesine veya bir grup ierisinde toplanmasna kapsllemedenir. Kapslleme sayesinde, snfmz iinde kullandmz alanlarn dardan herhangi bir etki ile dorudan deitirilmelerini engellemi oluyoruz.Nesne tabanl programlama KavramlarKaltm (Inheritance): Tretilen her bir snf, tredii snfn zelliklerini de devralr. Buradan, tretilmi bir snf ierisinden, tredii snfa ait yelere eriilebilecei sonucunu kartabiliriz. Elbette bu eriimin de baz kurallar vardr. rnein eriim belirleyicilerinin etkisi veya ayn yelerin kullanl gibi durumlar.Neden bir snftan baka snflar tretiriz?Bunun cevab udur: Tm snflarda ortakolan zellikleri tek bir snf ierisinde toparlamak. Bu modellerimizi gelitirirken, her snf iin ortak olan yelerin tekrar yazlmasn engellemekle kalmayacak, snflar arasnda dzenli bir hiyerari yapsnn olumasn da salayacaktr.Nesne tabanl programlama Kavramlarok Biimlilik (Polymorphism): Bir metodun farkl nesnelerde veya farkl ortamlarda farkl sonular retmesidir.Mesela konumak insan snfna ait bir metottur.

Ancak bu metot ait olduu insan snfnn rneine gre farkl sonular retir. Arkadamzla konuurken farkl bir tonda, patronumuzla konuurken farkl bir tonda konuuruz, dier bir ifadeyle bu metodun birden fazla biimi vardr.

ALGORTMA MANTIIAlgoritma, herhangi bir sorununzm iinizlenecekyol anlamnagelmektedirAlgoritma Dier bir deyile algoritma verilerin bilgisayara hangi evre biriminden girileceinin ,problemin nasl zleceinin, hangi basamaklardan geirilerek sonu alnacann, sonucun nasl ve nereye yazlacann szel olarak ifade edilmesi biiminde tanmlanabilir. rnein: Verilen iki saynn toplamnn bulunmasnn algoritmas aadaki gibi yazlr:

Adm 1-BalaAdm 2-Birinci sayy okuAdm 3-kinci sayy okuAdm 4-ki sayy toplaAdm 5-DurAdm 6-Sonucu gsterTemel ve En Gerekli Snf KtphaneleriSystem isim alan: .NET alrken gerekli temel snflar ierir. Ayrca dier tm snf ktphaneleri de bunun iinde kmelenmitir. System hiyerarinin tepesinde bulunur.

rnein tm veri taban ilemleri iin kullanlacak snf ktphanesi System.Datadr.System.IO : Dosyalara bilgi girii, dosyadan bilgi okuma, I/O ilemleri iin kullanlr.

System.Windows.Forms: Windows tabanl uygulamalarda kullanlan zengin grafik arabirimi kontrollerini ierir.System.Math : Matematiksel ilemler iin hazr statik metotlar barndrr. (Mutlak deer alma, karekk hesaplama gibi.)

*Bir snf ktphanesini programa dahil etmek iin using anahtar szc kullanlr.

rnein : using System.Math;Temel Koul fadeleri ve DnglerProgramda mantksal karmlar elde etmek iin kullanlmas gereken art kontrol ifadelerine koul ifadeleri, belirli bir olay snrl yada snrsz tekrarlatmak iin kullanlan ifadelere ise dng denilir.If Else Yapsif (art / koul){koulun dogru olmas durumunda altrlacak olan kodlar}else{koulun yanl olmas durumunda altrlacak olan kodlar}For Dngsfor (a;b;c){a, b durumunu salad mddete buradaki kodlar yinelenerek altrlr}a : deiken.b : ann salamas gereken durum.c : ann deiim ekli (artma azalma gibi)rnek Programlk nce programmz belirleyelim:

* Programmz ekran grntsn almaya yarayan bir program olacak. Ald grnty .bmp formatnda kullancnn istedii yere kaydedecek. Programmzn basite algoritmasn belirliyelim:

Ekran grnts almak iin snf olutur.ek dmesine tkland anda kod blogunda snf kur ve gerekli methodu ar.Ekran grntsn al.Kaydet dmesine tklanrsa dialog penceresini a ve program kaydettir.ptal dmesine tklanrsa programdan k.

C# ile kodlamak iin Visual Studio 2010u AyoruzAna ekrandan New Project sekmesine tklayp yeni bir Class Library oluturalm. smine ise Goruntu diyelim.

Oluan snfn namespace ismi Goruntu olacaktr. Solution Explorer sekmesinden class1 yazan yerin ismini GoruntuAl yapalm.

Alan dialog penceresindeki soruyu Evet olarak yantlayn.Aadaki gibi bir ekran grnts olumu olmal. Burada zaten dikkat ederseniz baz isim alanlar otomatik olarak eklenmitir.

Biz gerekli olaca iin iki ktphane daha ekleyeceiz. Bunun iin Solution Explorer ksmndaki References ksmna sa tklayp Add reference diyelim.

.NET alanndaki u snflar bulup ekleyelim:

* System.Windows.Forms;* System.Drawing;Arkasndan bunlar kod ksmnda kullanmak iin using anahtar szcn kullanarak kodlarmza dahil edelim:

*using System.Drawing;*using System.Windows.Forms;

Kodlarmz Yazalm:Bitmap goruntu = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); public Bitmap GoruntuGetir() { Graphics cizim = Graphics.FromImage(goruntu); cizim.CopyFromScreen(0, 0, 0, 0, new Size(goruntu.Width, goruntu.Height)); return goruntu; }

Yazdmz kodlar kaydedelim. Artk elimizde bize ait bir snf ktphanesi (dll dosyas) var. Bu dosyay ekran grntsn almak iin yazdmz tm programlarda arp kullanabileceiz. Bu da bizi tekrar tekrar kod yazmaktan kurtaracak. (Nesne tabanl programlama mantnn en byk avantaj.)imdi solution umuza sa tklayp yeni bir windows form projesi oluturalm. Oluturmu olduumuz bu projeye de kendi ktphanemizi ekleyelim.

imdi formumuza gerekli elemanlar tools sekmesinden srkleyip brakalm, tasarm size kalm.

*ki tane buton.

*SaveFileDialog elementi.

*PictureBox.imdi ek butonumuza ift tklayp kodlarmz yazalm.

Button1in olayna yazacamz kod sadece u :

{GoruntuAl GrntAl = new GoruntuAl(); pictureBox1.Image =GrntAl.GoruntuGetir();}

Son olarak Button2nin olayna aadaki kodlar yazp programmz altralm.

GoruntuAl GrntAl = new GoruntuAl(); DialogResult cevap= saveFileDialog1.ShowDialog(); if (cevap==DialogResult.OK) {GrntAl.GoruntuGetir().Save(saveFileDialog1.FileName+".bmp", System.Drawing.Imaging.ImageFormat.Bmp); }

Artk programmz kullanma hazr derleyip altrabiliriz:

Kaynaka:

1)MEGEP, Biliim teknolojileri: Nesne tabanl programlama-1, Ankara 2008

2)http://www.godoro.com/Divisions/Ehil/Mecmua/Magazines/Articles/txt/html/article_FlowChart.html