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?

Polecenie (command) - Implementacja w C#
Ocena użytkownikóww: *****  / 7
SłabyŚwietny
Nadesłany przez Kamil Dworak, 22 września 2010 22:00
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.

csharp.cs:
/****************************************
*   Wzorzec Projektowy Command          *
*   (polecenie)                         *   
*   www.algorytm.org                    *
*   Kontakt                             * 
*   kamil.dworak.1988[malpka]gmail.com  *
*   Opracowal Dworak Kamil              *
*****************************************/

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

namespace ConsoleApplication6
{
    public interface Polecenie {
        void wykonaj();
        void cofnij();
    }


    /* obiekt wywolujacy */
    class Trener {
        private Polecenie mode;
        public void setMode(Polecenie polecenie) {
            mode = polecenie;
        }

        public void rozkaz() {
            mode.wykonaj();
        }

        public void cofnij() {
            mode.cofnij();
        }
    }

    /* odbiorca */
    class Zawodnik {
        private String id;
        public Zawodnik(String id) {
            this.id = id;
        }

        public void zacznijBiegac() {
		    Console.WriteLine("zawodnik " + id + " biega" );
	    }

        public void przestanBiegac() {
		    Console.WriteLine("zawodnik " + id + " przestal biegac" );
	    }

        public void zacznijPlywac() {
		    Console.WriteLine("zawodnik " + id + " plywa" );
	    }

        public void przestanPlywac() {
		    Console.WriteLine("zawodnik " + id + " przestal plywac" );
	    }

        public void zacznijCwiczyc() {
		    Console.WriteLine("zawodnik " + id + " cwiczy" );
	    }

        public void przestanCwiczyc() {
            Console.WriteLine("zawodnik " + id + " przestal cwiczyc");
	    }
    }

    /* Polecenie */
    class Bieganie : Polecenie {
	    private Zawodnik zawodnik;	//obiekt wykonujacy	
	    public Bieganie (Zawodnik zawodnik) {
	    	this.zawodnik = zawodnik;
	    }

	    public void wykonaj() {
		    zawodnik.zacznijBiegac();
	    }
	
	    public void cofnij() {
	    	zawodnik.przestanBiegac();
	    }
    }
	

    /* Polecenie */
    class Plywanie : Polecenie{
	    private Zawodnik zawodnik;	//obiekt wykonujacy
	    public Plywanie(Zawodnik zawodnik) {
	    	this.zawodnik = zawodnik;
	    }
		
	    public void wykonaj() {
		    zawodnik.zacznijPlywac();
	    }
		
	    public void cofnij() {
	    	zawodnik.przestanPlywac();
	    }
    }

    
    /* Polecenie */
    class Cwiczenie : Polecenie {
	    private Zawodnik zawodnik;	//obiekt wykonujacy
	    public Cwiczenie(Zawodnik zawodnik) {
	    		this.zawodnik = zawodnik;
	    	}
		
	    public void wykonaj() {
		    zawodnik.zacznijCwiczyc();
	    }
	
	    public void cofnij() {
		    zawodnik.przestanCwiczyc();
	    }
    }
	

/* Polecenie */
    class PelnyTrening : Polecenie {
	    private Polecenie[] tab;
	    public PelnyTrening( Polecenie[]tab) {
		    this.tab = tab;
	    }
	
	    public void wykonaj() {
	    	foreach(Polecenie temp in tab) {
	    		temp.wykonaj();
	    	}
	    }
	
	    public void cofnij() {
		    foreach(Polecenie temp in tab){
			    temp.cofnij();
		    }
	    }
}

    class Program {
        static void Main(string[] args) {
            Trener trener = new Trener();
		    Zawodnik z1 = new Zawodnik("Kowalski");
		    Zawodnik z2 = new Zawodnik("Nowak");
		    Zawodnik z3 = new Zawodnik("Brzeczyszczykiewicz");
		
		    Bieganie bieganie = new Bieganie(z1);
		    Plywanie plywanie = new Plywanie(z2);
		
		    trener.setMode(bieganie);
		    trener.rozkaz();
		    trener.setMode(plywanie);
		    trener.rozkaz();
		    trener.cofnij();
		
		    Console.WriteLine();
		
		    Polecenie []tab = { new Cwiczenie(z3), new Bieganie(z3), new Plywanie(z3)};
		    PelnyTrening pelnyTrening = new PelnyTrening(tab);
		    trener.setMode(pelnyTrening);
		    trener.rozkaz();
            Console.ReadLine();
        }
    }
}
Komentarze
photo
+1 # cx3 2014-09-10 00:15
10/10

Prościej się nie da chyba :)
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz