algorytm.org

Implementacja w C#



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Budowniczy (builder) - Implementacja w C#
Ocena użytkownikóww: *****  / 9
SłabyŚwietny
Nadesłany przez Kamil Dworak, 05 sierpnia 2010 21:18
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

builder_1_cs.cs:
/****************************************
*   Wzorzec Projektowy Builder          *
*   (budowniczy)                        *   
*   www.algorytm.org                    *
*   Opracowal Dworak Kamil              *
*****************************************/


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
class Program
    {

class ZestawKomputerowy
        {
            private String monitor;
            private String procesor;
            private String grafika;
            private String ram;
            private String hdd;

            public void setMonitor(String monitor)
            {
                this.monitor = monitor;
            }

            public void setProcesor(String procesor)
            {
                this.procesor = procesor;
            }

            public void setGrafika(String grafika)
            {
                this.grafika = grafika;
            }

            public void setRam(String ram)
            {
                this.ram = ram;
            }

            public void setHdd(String hdd)
            {
                this.hdd = hdd;
            }

            public void show(){
        if(monitor!=null) Console.WriteLine("Monitor = " + monitor);
        if(procesor!=null) Console.WriteLine("Procesor = " + procesor);
        if(grafika!=null) Console.WriteLine("Grafika = " + grafika);
        if(ram!=null) Console.WriteLine("RAM = " + ram);
        if (hdd != null) Console.WriteLine("HDD = " + hdd);
    }
}

        /* nasz glowny interface */
abstract class Builder
        {
            protected ZestawKomputerowy zestawKomputerowy;

            public void newZestaw()
            {
                zestawKomputerowy = new ZestawKomputerowy();
            }

            public ZestawKomputerowy getZestaw()
            {
                return zestawKomputerowy;
            }

            public abstract void buildMonitor();
            public abstract void buildProcesor();
            public abstract void buildGrafika();
            public abstract void buildRam();
            public abstract void buildHdd();
        }

class ZestawXT001 : Builder {
    
   
    public override void buildMonitor(){
        zestawKomputerowy.setMonitor("Benq 19");
    }

    public override void buildProcesor()
    {
        zestawKomputerowy.setProcesor("amd");
    }

    public override void buildGrafika()
    {
        zestawKomputerowy.setGrafika("ATI");
}

    public override void buildRam()
    {
        zestawKomputerowy.setRam("DDR3");
}

    public override void buildHdd()
    {
        
        int t;
        while(true){
            Console.WriteLine("Dysk do wyboru: (1) Samsung, (2) Segate, (3) Caviar");
            String s = Console.ReadLine();
            t =int.Parse(s);
            if(t>0 && t<4) break;
        }
        
        String wynik="";
        if(t==1) wynik = "Samsung";
        else if(t==2) wynik = "Segate";
        else if(t==3) wynik = "Caviar";
        
        zestawKomputerowy.setHdd(wynik);
    
}
}


class ZestawABC996 : Builder {

    public override void buildMonitor()
    {
        zestawKomputerowy.setMonitor("LG");
    }

    public override void buildProcesor()
    {
        zestawKomputerowy.setProcesor("INTEL");
    }

    public override void buildGrafika()
    {
        //zestaw nie obejmuje karty graficznej
}

    public override void buildRam()
    {
        zestawKomputerowy.setRam("DDR");
}

    public override void buildHdd()
    {
        zestawKomputerowy.setHdd("Samsung");
}
}

/* keirownik */
class Director
{
    private Builder builder;

    public void setBuilder(Builder builder)
    {
        this.builder = builder;
    }

    public ZestawKomputerowy getZestaw()
    {
        return builder.getZestaw();
    }

    public void skladaj()
    {
        builder.newZestaw();
        builder.buildMonitor();
        builder.buildProcesor();
        builder.buildHdd();
        builder.buildRam();
        builder.buildGrafika();
    }
}


        static void Main(string[] args)
        {

        Director szef = new Director();
        Builder builder = new ZestawXT001();
        Builder builder2 = new ZestawABC996();

        Console.WriteLine("\nZESTAW1");
        szef.setBuilder(builder);
        szef.skladaj();
        ZestawKomputerowy zestaw1 = szef.getZestaw();
        
        
        szef.setBuilder(builder2);
        szef.skladaj();
        ZestawKomputerowy zestaw2 = szef.getZestaw();
        
        
        zestaw1.show();
        Console.WriteLine("\n\nZESTAW2");
        zestaw2.show();

        String s = Console.ReadLine();
        }
    }
}
Dodaj komentarz