• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 8/2/2020 11:38:31 PM'Basit' Yazılım Dili
  • 6/25/2020 3:18:13 PMderleme hatası
  • 12/11/2017 4:49:15 PMWindows Hizmeti Hk.
  • 4/23/2016 12:55:33 AMC programlama 2 oyun

Popüler Sorular

  • 5/27/2012 5:49:50 AMAsp.Net ile Date time alana veri ekleyemiiyorum ?
  • 4/2/2012 12:45:18 AM.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 5/12/2012 8:44:49 AMAcil Yardım
  • 5/27/2012 1:46:51 PMveri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LibreOffice
  • LINQ
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

OOP - NESNE TABANLI PROGRAMLAMA- V - POLYMORPHISM

Merhaba değerli Yazılımcı / Programcı arkadaşlar,Bu yazımızda ise Nesne Tabanlı Programlama’nın üç temel prensibinden olan ve sonuncusu olan Polymorphism ( Çok Çeşitlilik) kavramı üzerinde durarak da

22.06.2012

Yazar: Muhammed ÖNAL (Google+)

Kategori: VB.NET

9340

VB.Net & NESNE TABANLI PROGRAMLAMA – V

POLYMORPHISM ( ÇOK ÇEŞİTLİLİK)

Merhaba değerli Yazılımcı / Programcı arkadaşlar,

Bir önceki yazımızda programlama dünyasının en önemli tekniklerinden olan Object Oriented Programming yani Nesne Tabanlı Programlama tekniğinin üç temel prensibinden olan Inheritance (Kalıtım / Miras) konusunu ele alarak bu kavramı anlamaya yönelik gerek günlük hayattan verdiğimiz örneklendirmeler gerekse oluşturduğumuz örnek proje vasıtasıyla modellememizi göstermiştik. Bu yazımızda ise Nesne Tabanlı Programlama’nın  üç temel prensibinden olan ve sonuncusu olan Polymorphism ( Çok Çeşitlilik) kavramı üzerinde durarak daha kolay bir şekilde idrak edebilmemiz için bunu örneklendirmeye çalışacağız.

Polymorphism (Çok Çeşitlilik) kavramının konseptini iyi derecede anlayabilmek için Object-Oriented Programming yani Nesne Tabanlı Programlama ‘da Inheritance ( Kalıtım /Miras) kavramını çok iyi anlamış olmanız gerekir. Makalemizi yeni okumakta olan programcı arkadaşlarımız Nesne Tabanlı Programlama – IV –Inheritance başlıklı makalemize göz atabilirler. Eğer aklınızda Inheritance yani Kalıtım / Miras kavramına ilişkin herhangi bir soru bulunmuyorsa. Çok Çeşitlilik diye adlandırdığımız Polymorphism prensibine geçebiliriz.

 

Polymorphism (Çok çeşitlilik ) ile ilgili örneklendirmelerimize geçmeden önce siz değerli Yazılım üstadlarıyla öncelikle bu kavramın ne olduğuna tekrardan göz atalım ve yeni öğrenmekte olan yazılımcı adaylarımıza hatırlatma da bulunalım. Nedir bu Polymorphism?

POLYMORPHISM ( ÇOK ÇEŞİTLİLİK ):

En basit şekliyle ;

 •Bir nesnenin davranış şekillerinin duruma göre değişebilmesidir.

•Eğer birden çok sınıfın ortak kullanacağı bir metod varsa, bu her birinin temel alacağı bir ana sınıf (base class ) içerisinde tanımlanabilir.

             -       Davranış şekillerindeki farklılıklar her sınıfın kendi yapısı içinde ifade edilir.

 

 

{C}-          {C}Örneğin bir selam() metodu ekrana İngilizler için “hello” Almanlar için “hallo” yazdıracak biçimde çeşitlendirilebilir.

Konumuzu daha anlaşılır hale getirmek için hemen bir önceki makalemizde bahsettiğimiz ( OOP-IV Inheritance adlı makalemizde) gibi. NET ortamında her şey nesnelerden türetiliyordu. O zaman gelin hep beraber bu kuralımıza uygun olarak nesne oluşturalım.

 

Örnek Proje:  

Projemiz bir e-ticaret sitesi olsun. Bu e-ticaret sitemizde ürün satışımız gerçekleşsin.  Bu e-ticaret sitesinde satacağımız ürünler Kitap ve Elektronik Eşya satabileceğimiz bir web site olsun. Web site kullanıcısı, satın alacağı ürüne karar verdikten sonra bunu sepete ekler. Ve site kullanıcısı satın almak istediği ürünü sepete ekledikten sonra, site arka planında, yani yazılım tarafında kullanıcılar için;
 Siparişi vermeden önce, sepetteki tüm ürünlerin fiyatları toplanacak ve ödenmesi gereken miktar belirlenecektir. Ve gereken ödeme ne kadar ise kullanıcı bu ödemeyi bu e-ticaret vasıtasıyla yapacaktır. Projemize bir de şunu ek yapalım, Sistemde kayıtlı bulunan tüm ürünlerin KDV oranları farklı olarak belirlenecek ve fiyat buna göre hesaplanacak.

Evet değerli yazılımcı arkadaşlarımız, örnek projemiz böyleydi ve adım adım Sınıflarımızı yazarak projemize çözüm getirelim. Ve projemiz üzerinde Polymorphism ( Çok çeşitlilik ) konusunu güzelce bir irdeleyelim.

Ve şimdi Visual Studio ‘muzu açarak Vb.net kod geliştirme ortamımızda istediğimiz özellikleri elde edelim.

Adım 1:  

Site üzerinden satacağımız ürünleri ve bu ürünlerin ortak özelliklerini gösterebileceğimiz, Urun adında bir sınıf oluşturalım.

Oluşturduğumuz Urun adlı sınıfımıza ait kodlarımız aşağıdaki gibidir.

 

Gördüğünüz gibi KDVUygula metodunda ürün fiyatına default olarak  %7 oranında KDV uyguladık.

Evet, Urun adlı sınıfımızı oluşturduk ve bu sınıf içinde satacağımız ürünlere ait ortak alanları burada belirttik. Şimdi de diğer sınıflarımızı oluşturalım.

Urun sınıfından; Kitap, Bilgisayar ve MobilPhone ürünlerini gösterecek sınıflar türetmemiz lazım.         ( türetme kavramından da anlayacağınız gibi iş Inheritance yani Kalıtım / Miras konusuna geliyor J zaten Polymorphism ve Inheritance bir bütündür J makalemizin başında da dile getirmiştik, Polymorphism iyi derecede anlamak için Inheritance ile ilgili aklınıza takılan soruların olmaması gerekir.)

Evet, şimdi başlayalım kodlarımızı göstermeye;

Urun.vb  sınıfından Kitap.vb adlı bir sınıf türetelim:

 

 

 

Ve gördüğünüz gibi türettiğimiz Kitap sınıfımıza ait kodlarımız yukarıdaki gibidir. Uyguladığımız yöntemler aynıdır.

 

Ve şimdide türettiğimiz Bilgisayar  ve MobilePhone Sınıfımıza ait kodlarımızı görelim.


MobilePhone.vb Sınıfı

 

 

 

Sınıflarımızı yazdıktan sonra bizim için gerekli bir diğer sınıf ise kullanıcı tarafından satın alınan ürünler sepete eklenecekti ve Sepete eklenen ürünlerde bu Sepet Sınıfı tarafından gerekli hesaplamaları yaparak kullanıcıya ödemesi gereken hesabı verecekti. Hadi oluşturalım:

 

 

Evet, değerli yazılımcı arkadaşlar, bizim için gerekli kodlamaları yaptıktan sonra şimdi örnek uygulamalarımız üzerinde kullanacağımız KDV yüzdelerini verelim.

MobilePhone :  %20
Bilgisayar         : %25
Kitap                 : %3

Şimdi bu noktada biraz basit işlemlerle KDV fiyatlarını dâhil ederek gösterilecek fiyatları inceleyelim. Örneğin; KDV hariç Kitap fiyatı 20 TL olsaydı,%3’lük KDV’yi de dâhil edersek fiyatı 20 x 1.03 = 20,6 TL olacaktır.

Bunu programatik olarak gösterelim ve bakalım yazdığımız Sınıflar bu işlemi gerçekleştirme yeteneğine sahipler mi? J

Kitap adlı türettiğimiz sınıfa ait kodlarımızı yukarıda vermiştik ve bu sınıfa ait sepete eklenen ürün  hesaplamaları gerçekleştirmesi için yazdığımız kodlar aşağıdaki gibidir.

 

 

Sepete eklediğimiz Kitaba ait özellikler : Kitap Adı, fiyatı, Türü, Yazar Adı, ISBN Numarası ve son olarak kaçıncı Edition olduğu.

Kodumuzu çalıştırdığımız zaman MessageBox tarafından bize verilen sonuç şu şekildedir.

BÜYÜK PROBLEM!!! Yukarıda kodlamaya geçmeden önce yaptığımız küçük örnekte KDV dâhil ettiğimizde kitabın fiyatı 20,6 TL olması gereken yerde sonuç olarak ekrana yansıyan 21,4 TL oldu.

Bu problemin kaynaklanma sebebi:

Urun sınıfında KDVUygula() metodunda default olarak KDV %7 olarak alınmasından kaynaklandı. Şu an şu soruyu sorduğunuzu duyar gibiyim J Peki, oluşan bu problemi nasıl çözeceğiz?

Evet, değerli arkadaşlar;  çözümün temelinde elbette ki makale başlığımız olan POLYMORPHISM yatmaktadır.  Gördüğünüz gibi tüm Ürünlerimizde ( Kitap, Bilgisayar ve MobilePhone) KDVUygula() metodu mevcut. Ve her ürüne uygulayacağımız KDVUygula() metodu  farklı bir prensipte çalışmalı. Bu durum bizim için gereksinim duyacağımız Polymorphism yani çok çeşitlilik prensibiyle çalışan KDVUygula() metodur. Peki, nasıl elde edebiliriz? Ya da, nasıl oluşturabiliriz? Ya da bu prensibi oluşturduğumuz sınıflarımıza nasıl uygularız?

Urun sınıfındaki KDVUygula() metodunu aşağıda ki gibi düzeltelim;  (Urun. vb)

 

Kırmızı çizgiyle altını çizdiğim "Overridable" anahtar kelimesini ekleyerek metodumuzun Polymorphism (Çok Çeşitli ) bir metod olduğunu gösterdik. Şimdi bir bakalım, bu metodun yapısını, türemiş sınıflarımızda nasıl değiştireceğimize hep birlikte bakalım. Hemen Kitap sınıfına gidelim ve Overrides kelimesini yazdıktan sonra neler geldiğine bir bakalım:


Evet, istediğimiz KDVUygula() metodu orda
JBuradan şu sonucu çıkarabiliriz: “ Sadece Overridable anahtar kelimesi ile tanımlanan sınıf üyeleri Overrides edilebilirler.”

Ve hemen metodumuzun gövde kısmını değiştirerek; Yapmak istediğimiz sonucu ekrana Messagebox olarak verelim.

 

Ve istediğimiz sonuç aşağıdaki gibi doğrulanmış oldu J hayırlı olsun cümlemize J

 

Sonucumuzu gördükten sonra; dilerseniz hep birlikte birde Class Diagramımıza bakalım. ( Bir önce ki makalemizde Class Diagrama nasıl bakacağımızı anlatmıştık. Oradan nasıl bakılacağına bakabilirsiniz )

İşte Class Diagram ve sonuç :

Ve işte Object-Oriented Programming yani  Nesne Tabanlı Programlama’nın temel prensiplerinden olan Polymorphism ( Çok çeşitlilik) prensibi’nin sonuna gelmiş bulunmaktayız.

 

NOT:


Bu makalemizde de gerek yerli gerek yabancı kaynakları tarayarak Programlama dünyasının en önemli konularından ve tekniklerinden olan OOP (Object-Oriented Programming) yani  Nesne Tabanlı programlama  için örnek bir projede üzerinde Polymorphism(Çok Çeşitlilik)  prensibini açıklayan bir yazıyı sizinle paylaşmış olduk… Bir sonraki makalemizde farklı bir konu üzerinde duracağız. Programlama dünyasının bu büyülü dünyasına adım atan arkadaşlara yol gösterici olması amacıyla faydalı olması dileğiyle. Bir sonraki makalemizde görüşmek dileğiyle şimdilik hoşça kalın.

Saygılarımla;

 

Muhammed ÖNAL
Bilgisayar Mühendisi
RFID Sistemleri Uzmanı
BT Yönetişimcisi

Blog:  http://www.muhammedonal.com
Web : http://www.yazilimdilleri.net


copyright © Muhammed ÖNAL , 2012 EUL
 

Kaynak:

Türkay Ürkmez OOP,with C#
Dr.Manuel Carcenac OOP with JAVA
Deitel , VB 2010 how to Program

Yazar Hakkında

Muhammed ÖNAL

Muhammed ÖNAL

www.muhammedonal.com

Bilgisayar Mühendisi | RFID Sistemleri Uzmanı | BT Yönetişimcisi | Strateji Planlama ve İş Geliştirme 2015 itibariyle sağlık sektöründe Bilgi Sistemleri Yöneticisi ve Üst yönetim Stratejik Planlama ve İş Geliştirme Koordinatörü pozisyonunda çalışmaktadır.

Sosyal Medya

ORANLAR

  • 9340izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Merhaba, ellerinize sağlık çok yardımcı ol...
  • Merhaba Bu uygulama örneğinden ASP.net ...
  • Hocam Link başka sayfaya yönlendiriyor.

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 124113
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 71306
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 51908
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ