Javada Tasırı Modelleri (Yazılım mimarisi)

byanigli

Hectopat
Katılım
3 Ocak 2014
Mesajlar
541
Yer
İzmir, Turkey, Turkey
Daha fazla  
Cinsiyet
Erkek
Meslek
student of software engineering
1. Tasarım Modeline Genel Bakış
Tasarım modelleri tecrübeli yazılımcılar tarafından kullanılan en iyi uygulamaları temsil eder. Tasarım modelleri yazılım geliştirme sırasında , geliştiricilerin karşılaştıkları genel sorunların çözümlerini bulmaktadır. Bu çözümler geçmişten günümüze kadar yazılım geliştiricileri tarafından deneme-yanılma yolu ile elde edilmiştir.

Gang of Four (Gof)- 4lü çete
1994 yılında , Errich Gamma , Richard Helm ,Ralp Jonhson ve John Vlissides adlı 4 yazılım geliştiricisi tarafından tasarı modelleri kavramını başlatan Desing Patterns - Elements of Reusable Object- Oriented- Software isimli kitabı yayınladılar. Bu geliştiriçiler toplu olarak gang of four türkçesi 4 çete olarak bilinmektedirler. GoF'a göre nesne yönelimli tasarımlar aşağıdaki ilkelere dayanmaktadır.

* Bir arabirim degil , bir uygulama için programlamak
*
Miras üzerinden nesne komposizyonu
Tasarım Modellerinin Kullanımı
Tasarım modellerinin yazılım geliştirmede 2 temel kullanımı vardır.
1. Yazılımcılar için ortak platform
Tasarım modelleri , yazılım geliştiriclerine standart bir terminoloji saglayan senaryolara özgüdür. Örnek vermek gerekirse , Tekbir tasarım modeli tek bir nesnelerinin kullanımını ifade eder. Böylece , bütün yazılım geliştiricileri t
ek bir tasarım deseni ile tek bir nesnenin kullanımı yapmaya aşinadır .
2. En iyi uyugulamalar
Tasarım modelleri çok uzun bir süre içerisinde gelişmiştir ve bir yazılım geliştirme esnasında , onlar bize karşılaştığımız belirli problemler en iyi çözümü sunmaktadır , bu tarz tasarım modellerini öğrenmek deneyimi olamayan yazlım geliştiricileri için hızlı ve kolay yoldan yardım eder.
Tasarım modelli türleri
Tasarım modellerinin referans kitabı Desing Patterns - Elements of Reusable Object- Oriented- Software 'na göre 23 tane tasarım modeli vardır. Bu modeller 3 sınıfta kategorize etmiştir ; Yaratışsal model , Yapısal model ,Davranışsal model olmak üzere. Bizlerde bir diğer kategorisi olan j2EE tasarım modelini tartışmalıyız.
Yaratışsal model : Bu tür tasarım modelleri nesneler yaratmak için yol sağlar. oluşturma mantığını saklarken , nesneler başladığında doğrudan yeni operatörler kullanması . Buda programa belirli bir durumda oluşması gereken nesnelere karar verirken daha çok esneklik sağlar.
Yapısal model : Bu tür tasarım modelleri sınıf ve nesne kompozisyonlarına aittir. Miras kavramı arayüzleri oluşturmakta kullanılır ve yeni fonksiyonlar elde etmek için yeni nesleler oluşturması olarak tanımlanabilir.
Davranışsal model : Bu modeller özellikle nesneler arasında iletişime aittir.
J2EE modelş : Bu tasarım modeli özellikle sunum katmanı ile ilgilidir. Bu modeller sun java tarafından tanımlanır.

2. FABRİKA MODELİ
Fabrika modeli javanın en çok kullanılan tasarım modellerinden bir tanesidir. Bu tür tasarım modelleri yaratışsal modelinden gelmektedir ve bu modeller bir nesne yaratmanın en iyi yolunu sağlar. istemci oluşma mantığı olmadan objeler yaratırız. ortak bir arayüz kullanılarak yeni oluşturulan nesneleri çagırırız.

UYGULAMA
Biz bir şekil arayüz ve şekil ara birimini uygulayan ilişkili sınıfları oluşturacağız. Bir fabrika sınıfı ve bir sonraki adımda fabrika şekli.
Sınıf diyagramı


Adımlar
Yukarıda sözü edilen tasarım deseni uygulamak için aşağıdaki adımları kullanın.
Adım 1 arayüz oluşturma :
şekil.java
Kod:
[COLOR=#0000ff]Public interface [/COLOR][COLOR=#800080]shape [/COLOR]{
[COLOR=#0000cd]void : [/COLOR][COLOR=#000000]draw[/COLOR][COLOR=#808080] ();[/COLOR]
}
Adım 2 Aynı arayüzü uygulayan ilişkili sınıfları oluşturmak :
dikdörtgen.java
Kod:
[COLOR=#0000cd]public class[/COLOR] [COLOR=#800080]Rectangle[/COLOR] [COLOR=#0000cd]implements[/COLOR] [COLOR=#800080]Shape[/COLOR] { 
[COLOR=#006400] @Override [/COLOR]
 [COLOR=#0000cd]public void[/COLOR] draw() { 
 [COLOR=#800080]System[/COLOR].[COLOR=#0000cd]out[/COLOR].println([COLOR=#008000]"Inside Rectangle::draw() method."[/COLOR]); 
 } 
}
kare.java
Kod:
[COLOR=#0000CD]public class[/COLOR] [COLOR=#800080]Squre[/COLOR] [COLOR=#0000CD]implements[/COLOR] [COLOR=#800080]Shape[/COLOR] { 
[COLOR=#006400] @Override [/COLOR]
 [COLOR=#0000CD]public void[/COLOR] draw() { 
 [COLOR=#800080]System[/COLOR].[COLOR=#0000CD]out[/COLOR].println([COLOR=#008000]"Inside Rectangle::draw() method."[/COLOR]); 
 }
çember.java
Kod:
[COLOR=#0000CD]public class[/COLOR] [COLOR=#800080]Cricle[/COLOR] [COLOR=#0000CD]implements[/COLOR] [COLOR=#800080]Shape[/COLOR] { 
[COLOR=#006400] @Override [/COLOR]
 [COLOR=#0000CD]public void[/COLOR] draw() { 
 [COLOR=#800080]System[/COLOR].[COLOR=#0000CD]out[/COLOR].println([COLOR=#008000]"Inside Rectangle::draw() method."[/COLOR]); 
 }
Adım 3: Verilen bilgilere göre beton sınıfı nesnesi oluşturmak için bir fabrika oluşturalım.
sekilfabrika.java
Kod:
[COLOR=#0000ff]public class [/COLOR][COLOR=#800080]ShapeFactory[/COLOR] { 
 
[COLOR=#a52a2a] // getShape method kullanarak objenin türünü secelim [/COLOR]
[COLOR=#0000ff] public [/COLOR][COLOR=#800080]Shape[/COLOR] getShape([COLOR=#800080]String[/COLOR] shapeType)
{ 
[COLOR=#0000ff] if[/COLOR](shapeType == [COLOR=#0000ff]null[/COLOR])
{ 
[COLOR=#0000ff] return null; [/COLOR]
 } 
[COLOR=#0000ff] if[/COLOR](shapeType.equalsIgnoreCase([COLOR=#008000]"CIRCLE"[/COLOR]))
{ 
 [COLOR=#0000ff]return new [/COLOR][COLOR=#800080]Circle[/COLOR][COLOR=#006400](); [/COLOR]
 } 
[COLOR=#0000ff]else if[/COLOR](shapeType.equalsIgnoreCase([COLOR=#008000]"RECTANGLE"[/COLOR]))
{ 
[COLOR=#0000ff] return new[/COLOR] [COLOR=#800080]Rectangle[/COLOR][COLOR=#006400]();[/COLOR] 
 } 
[COLOR=#0000ff]else if[/COLOR](shapeType.equalsIgnoreCase([COLOR=#008000]"SQUARE"[/COLOR]))
{ 
 [COLOR=#0000ff]return new[/COLOR] [COLOR=#800080]Square[/COLOR][COLOR=#006400](); [/COLOR]
 } 
[COLOR=#0000ff] return null[/COLOR]; 
 } 
} 
[U]
Adım 5 ilgili sınıf objesinin türü geçerken fabrikayi kullanın:
[/U]fabrikamodeligösterimi.java
Kod:
[COLOR=#0000cd]public class[/COLOR] [COLOR=#800080]FactoryPatternDem[/COLOR]o { 
 
[COLOR=#0000cd] public static[/COLOR] [COLOR=#0000cd]void[/COLOR] main([COLOR=#800080]String[/COLOR][] args) { 
 [COLOR=#800080]ShapeFactory[/COLOR] shapeFactory = [COLOR=#0000cd]new[/COLOR] [COLOR=#800080]ShapeFactory[/COLOR](); 
 
[COLOR=#800000] //çember nesne alalım ve onun çermber çizme methodunu çagıralım. [/COLOR]
 [COLOR=#800080]Shape[/COLOR] shape1 = shapeFactory.getShape([COLOR=#008000]"CIRCLE"[/COLOR]); 
 
[COLOR=#800000] //çember çizme methodunu çagıralım.[/COLOR]
 shape1.draw[COLOR=#006400](); [/COLOR]
 
[COLOR=#800000] //[/COLOR][COLOR=#800000]dikdörtgen nesne alalım ve onun methodunu çagıralım[/COLOR]
[COLOR=#800080] Shape[/COLOR] shape2 = shapeFactory.getShape([COLOR=#008000]"RECTANGLE"[/COLOR]); 
 
[COLOR=#800000] //dikdörtgen methodunu çagıralım [/COLOR]
[COLOR=#800000][/COLOR]
 shape2.draw[COLOR=#006400]();[/COLOR] 
 
[COLOR=#800000] //kare nesne alalım ve onun methodunu çagıralım[/COLOR]
 [COLOR=#800080]Shape[/COLOR] shape3 = shapeFactory.getShape([COLOR=#008000]"SQUARE"[/COLOR]); 
 
[COLOR=#800000]//kare methodunu çagıralım[/COLOR]
 shape3.draw(); 
 } 
}
Adım 5 çıkışları doğruluyalım :
Kod:
Inside Circle::draw() method. 
Inside Rectangle::draw() method. 
Inside Square::draw() method.
Soyut Fabrika Modeli
​yazımız güncellenecektir. saygılarımla
 
Son düzenleyen: Moderatör:
Uyarı! Bu konu 11 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı