1 / 39

Program Yapıyorum

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

torgny
Download Presentation

Program Yapıyorum

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Program Yapıyorum Nesne Tabanlı Programlama Hakan Doğan

  2. Nesne Tabanlı Programlama Gerçek hayatta var olan olguların programlamaya aktarılmasındaki yeni yaklaşımdır. Klasik prosedürelprogramlamada verilerimiz ve fonksiyonlarımız vardı. Yani her şey veri ve bu veriyi işleyen metotlar etrafında dönüyordu.

  3. Nesne tabanlı programlamada da iki önemli birim; veri ve veriyi işleyip mantıklı sonuçlar üreten metotlar bulunur. Ama buradaki fark gerçek hayattaki olguların da daha iyi gözlenip programlama dünyasına aktarılmasındadır.

  4. Nesne tabanlı programlama modeli

  5. Örnek Mesela elimizde bir ütümüz olsun. Ütünün markası, modeli, rengi, çalıştığı elektrikvoltajı, ne tür kumaşları ütüleyebildiği bu ütüye ait özelliklerdir (veri). Aynı zamanda ütümüzü ısıtabiliriz, ütüleme işinde kullanabiliriz ve soğumaya bırakabiliriz. Bunlar ise ütünün fonksiyonlarıdır (metot).

  6. Sınıf (Class) ve nesne (Object) kavramı

  7. Eğer ütü ile ilgili bir program yapmış olsak ve nesne tabanlı programlama tekniğini kullansak hemen bir ütü sınıfı (class) oluştururduk. Bu sınıfta ütüye ait bilgiler (veriler) ve ütü ile yapabileceğimiz işler (metot) bulunurdu. O zaman nesne tabanlı programlamada bir sınıfta, sınıfa ait veriler ve bu verileri işleyip bir takım faydalı sonuçlar üreten fonksiyonlar (metotlar) bulunur.

  8. Nesne tabanlı programlama Kavramları Kapsülleme (Encapsülation) : İşlemlerin ve verilerin gizlenmesine veya bir grup içerisinde toplanmasına kapsülleme denir. Kapsüllemesayesinde, sınıfımız içinde kullandığımız alanların dışarıdan herhangi bir etki ile doğrudan değiştirilmelerini engellemiş oluyoruz.

  9. Nesne tabanlı programlama Kavramları Kalıtım (Inheritance): Türetilen her bir sınıf, türediği sınıfın özelliklerini de devralır. Buradan, türetilmiş bir sınıf içerisinden, türediği sınıfa ait üyelere erişilebileceği sonucunu çıkartabiliriz. Elbette bu erişimin de bazı kuralları vardır. Örneğin erişim belirleyicilerinin etkisi veya aynı üyelerin kullanılışı gibi durumlar.

  10. Neden bir sınıftan başka sınıflar türetiriz? Bunun cevabı şudur: Tüm sınıflarda ortak olan özellikleri tek bir sınıf içerisinde toparlamak. Bu modellerimizi geliştirirken, her sınıf için ortak olan üyelerin tekrar yazılmasını engellemekle kalmayacak, sınıflar arasında düzenli bir hiyerarşi yapısının oluşmasını da sağlayacaktır.

  11. Nesne tabanlı programlama Kavramları Çok Biçimlilik (Polymorphism): Bir metodun farklı nesnelerde veya farklı ortamlarda farklı sonuçlar üretmesidir. Mesela “konuşmak” insan sınıfına ait bir metottur.

  12. Ancak bu metot ait olduğu insan sınıfının örneğine göre farklı sonuçlar üretir. Arkadaşımızla konuşurken farklı bir tonda, patronumuzla konuşurken farklı bir tonda konuşuruz, diğer bir ifadeyle bu metodun birden fazla biçimi vardır.

  13. ALGORİTMA MANTIĞI Algoritma, herhangi bir sorunun çözümü için izlenecek yol anlamına gelmektedir

  14. Algoritma « Diğer bir deyişle algoritma verilerin bilgisayara hangi çevre biriminden girileceğinin ,problemin nasıl çözüleceğinin, hangi basamaklardan geçirilerek sonuç alınacağının, sonucun nasıl ve nereye yazılacağının sözel olarak ifade edilmesi biçiminde tanımlanabilir. »

  15. Örneğin: Verilen iki sayının toplamının bulunmasının algoritması aşağıdaki gibi yazılır: Adım 1-Başla Adım 2-Birinci sayıyı oku Adım 3-İkinci sayıyı oku Adım 4-İki sayıyı topla Adım 5-Dur Adım 6-Sonucu göster

  16. Temel ve En Gerekli Sınıf Kütüphaneleri Systemisim 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. Systemhiyerarşinin tepesinde bulunur. Örneğin tüm veri tabanı işlemleri için kullanılacak sınıf kütüphanesi System.Data’dır.

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

  18. System.Math: Matematiksel işlemler için hazır statik metotlar barındırır. (Mutlak değer alma, karekök hesaplama gibi.) *Bir sınıf kütüphanesini programa dahil etmek için using anahtar sözcüğü kullanılır. Örneğin : usingSystem.Math;

  19. Temel Koşul İfadeleri ve Döngüler Programda mantıksal çıkarımlar elde etmek için kullanılması gereken şart kontrol ifadelerine koşul ifadeleri, belirli bir olayı sınırlı yada sınırsız tekrarlatmak için kullanılan ifadelere ise döngü denilir.

  20. If – Else Yapısı if (şart / koşul) { koşulun dogru olması durumunda çalıştırılacak olan kodlar… } else { koşulun yanlış olması durumunda çalıştırılacak olan kodlar… }

  21. For Döngüsü for (a;b;c) { a, b durumunu sağladığı müddetçe buradaki kodlar yinelenerek çalıştırılır… } a : değişken. b : a’nın sağlaması gereken durum. c : a’nın değişim şekli (artma – azalma gibi)

  22. Örnek Program

  23. İlk önce programımızı belirleyelim: * Programımız ekran görüntüsünü almaya yarayan bir program olacak. Aldığı görüntüyü .bmp formatında kullanıcının istediği yere kaydedecek.

  24. Programımızın basitçe algoritmasını belirliyelim: Ekran görüntüsü almak için sınıf oluştur. Çek düğmesine tıklandığı anda kod blogunda sınıfı kur ve gerekli methodu çağır. Ekran görüntüsünü al. Kaydet düğmesine tıklanırsa dialog penceresini aç ve programı kaydettir. İptal düğmesine tıklanırsa programdan çık.

  25. C# ile kodlamak için Visual Studio 2010’u Açıyoruz

  26. Ana ekrandan «New Project» sekmesine tıklayıp yeni bir «Class Library» oluşturalım. İsmine ise «Goruntu» diyelim. Oluşan sınıfın namespace ismi Goruntu olacaktır. Solution Explorer sekmesinden class1 yazan yerin ismini «GoruntuAl» yapalım. Açılan dialog penceresindeki soruyu «Evet» olarak yanıtlayın.

  27. Aşağıdaki gibi bir ekran görüntüsü oluşmuş olmalı. Burada zaten dikkat ederseniz bazı isim alanları otomatik olarak eklenmiştir.

  28. Biz gerekli olacağı için iki kütüphane daha ekleyeceğiz. Bunun için Solution Explorer kısmındaki References kısmına sağ tıklayıp Addreference diyelim. .NET alanındaki şu sınıfları bulup ekleyelim: * System.Windows.Forms; * System.Drawing;

  29. Arkasından bunları kod kısmında kullanmak için using anahtar sözcüğünü kullanarak kodlarımıza dahil edelim: *usingSystem.Drawing; *usingSystem.Windows.Forms;

  30. Kodlarımızı Yazalım: Bitmap goruntu = newBitmap(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)); returngoruntu; }

  31. Yazdığımız kodları kaydedelim. Artık elimizde bize ait bir sınıf kütüphanesi (dll dosyası) var. Bu dosyayı ekran görüntüsünü almak için yazdığımız tüm programlarda çağırıp kullanabileceğiz. Bu da bizi tekrar tekrar kod yazmaktan kurtaracak. (Nesne tabanlı programlama mantığının en büyük avantajı.)

  32. Şimdi solution’ umuza sağ tıklayıp yeni bir windows form projesi oluşturalım. Oluşturmuş olduğumuz bu projeye de kendi kütüphanemizi ekleyelim.

  33. Şimdi formumuza gerekli elemanları tools sekmesinden sürükleyip bırakalım, tasarım size kalmış. *İki tane buton. *SaveFileDialog elementi. *PictureBox.

  34. Şimdi «çek» butonumuza çift tıklayıp kodlarımızı yazalım.

  35. Button1’in olayına yazacağımız kod sadece şu : { GoruntuAlGrntAl = newGoruntuAl(); pictureBox1.Image =GrntAl.GoruntuGetir(); }

  36. Son olarak Button2’nin olayına aşağıdaki kodları yazıp programımızı çalıştıralım. GoruntuAlGrntAl = newGoruntuAl(); DialogResult cevap= saveFileDialog1.ShowDialog(); if (cevap==DialogResult.OK) { GrntAl.GoruntuGetir().Save(saveFileDialog1.FileName+".bmp", System.Drawing.Imaging.ImageFormat.Bmp); }

  37. Artık programımız kullanıma hazır derleyip çalıştırabiliriz:

  38. Kaynakça: 1)MEGEP, Bilişim teknolojileri: Nesne tabanlı programlama-1, Ankara 2008 2)http://www.godoro.com/Divisions/Ehil/Mecmua/Magazines/Articles/txt/html/article_FlowChart.html

More Related