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();
}
}
}


Prościej się nie da chyba :)