Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ADO.NET/SQL
C / Sys Prog.
Genel
Mono ve .NET
Silverlight
XML / Web Serv.
X86 Assembly
C++ / C++.NET
J#.NET / Java
.NET 3.x
UML / Analiz
Yazılım Müh.
ASP.NET
C# / VC#/.NET
Mobil Prog.
PHP 5
YAZAR HAKKINDA
Eylem Uğurel
http://www.csharpnedir.com/
İletişme geçmek için
tıklayın
.
4
Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için
tıklayın
.
Yayınlanan diğer makaleleri için
tıklayın
.
İlgili etiketler:
cfactory
cfactory*
cproductbase’
fabrikada
farkli
metodlara
nesneler
nesnemiz
nesnenin
play()
public
stop()
taraftan
virtual
yerine
C++ / C++.NET
Eylem Uğurel
YAZI HAKKINDA
Türü
:
Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi
:
Başlangıç
Kategori
:
C++ / C++.NET
Yayınlanma Tarihi
:
4.10.2004
Okunma Sayısı
:
32826
Yorum Sayısı
:
0
yorum yaz
SİTE İÇİ ARAMA
Üye
GİRİŞİ
Üye girişi için
tıklayın
.
Kullanıcı Adı
Şifre
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
Şifremi / Kullanıcı Adımı unuttum.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
Serbest KÖŞE
(?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Turhal Temizer
Conda install environment.yml Package
2.4.2025
Turhal Temizer
Mac OS/X Removing CUDA
2.4.2025
Burak Selim Şenyurt
Rust ve Güvenli Bellek Yönetimi Hakkında
2.4.2025
Burak Selim Şenyurt
Enum Veri Türünün Rust Tarafında Etkili Bir Kullanımı
2.4.2025
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
C++ / C++.NET
/
Fabrika Deseni(Factory Pattern) - 1
Fabrika Deseni(Factory Pattern) - 1
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
Bu yazı dizisinde sizlere C++ ile kod yazarken kolaylıkla uygulayabileceğiniz bir yöntem setinden bahsedeceğim. Bu yöntem setini kullanarak, daha sağlıklı kod yazabilir ve yazdığınız kodları daha anlaşılır hale getirebilirsiniz. Bir taraftan da, bu yöntemlerin sizin
OOP
becerinizi daha da arttıracağı düşüncesindeyim. Bunun öncesinde sizlerin,
inheritence
,
pure-virtual
method
,
ve
static method
kavramlarına hakim olduğunuzu varsayıyorum.
Bir fabrika düşünelim; bu fabrikada çeşitli nesneler üretilsin. Bir taraftan ham madde girsin, diğer taraftan üretilen nesneler çıksın. Sizin göreviniz ise hangi türden nesnenin ne miktarda ve ne özellikte üretileceğine karar vermek olsun. Fabrikada üretimin CFactory nesnesinin Create metodu ile yapıldığını farzedelim:
CFactory* pakProduct1 = CFactory::Create(PRODUCTID_VCDPLAYER);
CFactory* pakProduct2 = CFactory::Create(PRODUCTID_DVDPLAYER);
Yukarıdaki örnekte iki farklı türden nesnenin üretildiğini görüyoruz. Burada dikkat edilecek nokta, nesnelerimizin bazı ortak özellikler taşıyor olmaları; öncelikle hepsi birer disk oynatıcısı, dolayısı ile Play() ve Stop() isimli gibi ortak metodlara sahip olduklarını varsayalım.
pakProduct1->Play();
pakProduct2->Stop();
Dikkat edelim ki, CFactory adlı nesnemiz aslında, bahsi geçen disk oynatıcılarından biri olmaktan çok, farklı türden olan disk oynatıcılarına ev sahipliği yapan bir arayüz nesnesidir. C++ terminolojisinde, ortak bir arayüz ile farklı olmasına rağmen ortak özellikler içeren nesnelere dolaylı yoldan ulaşma kavramına
polymorphism
diyoruz. Şimdi CFactory nesnemize biraz daha yakından bakalım:
class CFactory
{
public:
static CFactory* Create(const int nProductID);
~CFactory();
private:
CFactory(CProductBase* pkProductBase, const int nProductID);
public:
void Play();
void Stop();
private:
CProductBase* m_pkProductBase;
int m_nProductID;
};
CFactory adlı nesnemiz bir arayüz olduğundan bahsettik. Demek ki bu arayüzün arkasında gerçek işi yapan başka nesneler bulunmakta; yani bir VCD, bir de DVD oynatıcısı. Bu örneği daha da geliştirecek olsaydık, bunların yanına Divx, MP3, VHS, vb. gibi diğer bilinen formatların oynatıcılarını da ekleyebilirdik. O zaman gelin şimdi, arka planda bulunan bu oynatıcıları
inheritence
kavramı altında, CProductBase adlı ana bir sınıf altında toplayalım. Bu sayede CFactory arayüzümüz,
sayısız formatı destekleyen oynatıcılar yerine, sadece bir ana sınıf nesnesi ile iletişim halinde olsun
.
class CProductBase
{
public:
CProductBase();
virtual ~CProductBase();
public:
virtual void Play() =0;
virtual void Stop() =0;
};
CProductBase adlı ana sınıfımız,
pure-virtual
bazı metodlara sahiptir: Play() ve Stop(). Nasıl ki arayüz nesnemiz CFactory bize bu metodlar için birer arayüz sağlamış ise, CProductBase’ den türemiş tüm sınıflar da, bu metodları yerine getirmek zorundadır. Eğer bunu yerine getirmezsek, Visual C++’ ın “error C2259” ve “warning C4259” uyarıları ile karşılaşırız. Aşağıdaki örnekde, CProductBase’ den türetilmiş CProductVcdPlayer ve CProductDvdPlayer sınıfları ilan edilmiştir:
class CProductVcdPlayer: public CProductBase
{
public:
CProductVcdPlayer();
~CProductVcdPlayer();
private:
void Play();
void Stop();
};
class CProductDvdPlayer: public CProductBase
{
public:
CProductDvdPlayer();
~CProductDvdPlayer();
private:
void Play();
void Stop();
};
Bunu izleyen bir sonraki yazımızda, yukarıda anlatılan sınıfların uygulamalarına geçeceğiz. O zamana kadar, kendinize iyi bakın ve güzel yazın.
Eylem Uğurel
eylemugurel@hotmail.com
Makale:
Fabrika Deseni(Factory Pattern) - 1 C++ ve C++.NET dili Eylem Uğurel
Yazılan Yorumlar
Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için
tıklayın
.
Üye değilseniz
Üyel Ol
linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
Bu Konuda Son 10
Eklenen Son 10
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl