Oyuncak sınıfı var. Bundan türemiş araba ve robot sınıfları var. Araba ve robotları tutanda bir tane listem var. List<oyuncak> oyun = new List<oyuncak>(); gibi. Şimdi ben satış fiyatını hesaplattırırken kış aylarında arabalara %25 zam, Yaz aylarında robot lara ise %25 indirim olayını nasıl uygulayabilirim? Olay form uygulaması falan değil basit bir consol uygulaması. Programlama dili olarak java veya C# farketmez. kod olarak yardım istiyorum sizlerden.

soruldu: 09 Nis '13, 02:48

emax_64's gravatar image

emax_64
64590102101
cevap kabul oranı: 20%

değiştirildi: 09 Nis '13, 04:00

CemIkta's gravatar image

CemIkta ♦
19.9k29125190

Eğer bu indirim politikalarına yonelik kullanılan tasarımlar varsa bunları da gösterebilirseniz daha güzel olur.

(09 Nis '13, 02:56) emax_64 emax_64's gravatar image

Tasarım derken neyi kastediyorsunuz. Aslında sizin istediginiz bir tasarım degilde sanki bir uygulama gibi görünüyor. Yani dinamik olarak belirli zaman aralıklarında , belirli işlem yapma aslında bir tasarım değilde bir uygulama oluyor. Ya da ben yanlış anladım...

(09 Nis '13, 03:06) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

ewet siz yanlış anlamışsınız. Tasarım derken tasarım desenlerinden bahsediyorum. Uygulama database, form uygulaması falan değil. normal bir consol app düşünün.

(09 Nis '13, 03:08) emax_64 emax_64's gravatar image
1

sanırım bundan bahsediyorsunuz...

(09 Nis '13, 03:20) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Evet bu gönderdiğiniz link işe yarar bunu okuycam muhakkak. Ancak öncelikle basit bir şekilde yapmak ve daha sonra tasarım desenleri ile yapmak istiyorum. Öncelikle yukarıdaki soruda belirttiğim şekilde yapmam gerekli.

(09 Nis '13, 03:26) emax_64 emax_64's gravatar image

Linkteki örneği sizin isteğine göre uyarlarsak (C# için yazıyorum)

Fiyat hesaplayan interface (IPriceCalculator.cs)

public interface IPriceCalculator
{
    decimal CalculatePrice();
}

Fiyat hesaplayan interface i kullanan ana decorator sınıfı (PriceCalculatorDecorator.cs)

public abstract class PriceCalculatorDecorator : IPriceCalculator
{
    IPriceCalculator priceCalculator;

    protected IPriceCalculator PriceCalculator
    {
        get { return priceCalculator; }
    }

    public PriceCalculatorDecorator(IPriceCalculator pc)
    {
        priceCalculator = pc;
    }

    public virtual decimal CalculatePrice()
    {
        // buraya fiyat hesaplama fonsiyonu
        // yazarsınız örnek olarak 10 yazdım 
        return 10;
    }
}

Mevsime göre fiyat hesaplama (CarSalesDecorator.cs ve ya RobotSalesDecorator.cs)

// araba fiyat dekoratoru
public class CarSalesDecorator : PriceCalculatorDecorator
{
    public CarSalesDecorator(IPriceCalculator pc) : base(pc)
    { }

    public override decimal CalculatePrice()
    {
        decimal total = base.CalculatePrice();
        // kış sezonu ise
        if (DateTime.Now.Month ==12 || DateTime.Now.Month == 1 || DateTime.Now.Month == 2 )
        {
            total = total * 0.25;
        }
        // diger sezonlar
        ...

        return total;
    }
}

ve program

class Program
{
    static void Main(string[] args)
    {
        IPriceCalculator pc = null;
        pc = new CarSalesDecorator(pc);

        Console.WriteLine("{0:0.00}", pc.CalculatePrice());
    }
}
permanent link

cevaplandı: 09 Nis '13, 04:03

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

Evet bu şekilde esnek bir yapıyı görmek istiyordum. Çok tşkler yardımınız için.

(09 Nis '13, 04:32) emax_64 emax_64's gravatar image

Aklıma takılan bir soru oldu. Şimdi ben arabaları oluştururken Oyuncak oyun = new Araba(//..); şeklinde oluşturuyordum. Çünkü daha sonrada polimorfizme uygun olması adına. Ama siz şuan IPriceCalculator pc = null; pc = new CarSalesDecorator(pc); şekilde bi yapı oluşturmuşsunuz. Bunu nasıl polizmorfizme uygun hale getirebiliriz?

(09 Nis '13, 04:34) emax_64 emax_64's gravatar image

Buradaki örnekle benim yazdığımı birleştirirseniz istediginiz olur...

(09 Nis '13, 06:00) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

yukarıda yazmış olduğunuz kodda alt oyuncaklar için, public CarSalesDecorator(IPriceCalculator pc) : base(pc) { } kodunu yazmadan abstract üzerinden hesaplama yapılamaz mı? Eklenen ürünleri oyuncak sınıfı tipinde listede tutuyorum. Bu listedeki ürünleri tek tek gezip sıcak olanlara indirim uygula dediğim zaman bu şekilde bişey olabilir mi?

(09 Nis '13, 08:31) emax_64 emax_64's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079

Soruldu: 09 Nis '13, 02:48

Görüntüleme: 836 kez

Son güncelleme: 09 Nis '13, 08:31

powered by BitNami OSQA