YZM311 Tasarım Kalıpları Egzersizleri

YZM 311 YAZILIM YAPIMI
TASARIM KALIPLARI EGZERSİZLERİ – 11 Kasım 2014
1.
Bu soruya aşağıdaki UML Sınıf Diyagramını dikkate alarak cevap verin:
Bir yazılım geliştirme ekibi yeni tasarlanan sistem içerisinde eski SpecialCircle sınıfını kullanabilmek
istemektedir. Ancak, bu sınıfın arabirimi yeni tasarlanan şekil (Shape) sınıflarıyla uyumlu değildir.
SpecialCircle sınıfını – yeni Circle sınıfı üzerinden – kullabilmek için bir tasarım kalıbı (design
pattern) kullanmanız gerekmektedir.
a. Bu tasarım kalıbını belirleyin.
b. Eğer gerekiyorsa Circle sınıfını değiştirin (Circle sınıfını istediğiniz bir dil kullanarak yazın ve
metodların içini doldurun). SpecialCircle sınıfında herhangi bir şey değiştirmeyin!
c. Varsa (b) maddesindeki değişiklikleri bir UML sınıf diyagramı üzerinde gösterin.
d. Yeni tasarımınızda SpecialCircle sınıfından (nasıl) yararlanıldığını gösteren Client kodunu yazın.
2.
Bu sorunun şıklarına aşağıdaki Java sınıfını dikkate alarak cevap veriniz:
class Printer {
private int format;
public Printer(int format) {
this.format = format;
}
public void output(String s) {
if (format == 1) {
System.out.println(s);
}
else if (format == 2) {
System.out.println("<p>" + s + "</p>");
}
else if (format == 3) {
System.out.println(s + "//");
}
}
}
a. Printer sınıfı format parametresine bağlı olarak farklı bir yazdırma stratejisi kullanmaktadır. Bu sınıfı
farklı yazdırma stratejilerini uygulaması amacıyla Strategy Tasarım Kalıbını kullanarak yeniden
yazınız.
b. Çözümünüzün UML şemasını çiziniz.
c.
Yeni tasarımı nasıl kullandığınızı gösteren Client kodunu da yazınız.