Interface, abstract Problem

17/11/2009 - 20:01 von Markus Fischer | Report spam
Hallo Zusammen,

was will ich?
http://de.wikipedia.org/wiki/Manufa...ion_System

Ich muss ein Konzept entwickeln, in dem ich an ein MES System
Daten zukommen lasse.

Dabei ist der physikalische Weg nicht fix, sprich ànderbar.

ZIEL:
Ich wàhle den flexibel den Übertragungsweg BUS aus
Ich wàhle den flexibel das Protokoll MES aus


Das habe ich bis dato gemacht.
- Code
- PDF Datei, sieht man es besser.
http://www.fileuploadx.de/224874


Danke für Tipps und Hinweise was falsch ist

Grüße Markus

private void btnTest_Click(object sender, EventArgs e)
{
//IBussystems IBus = new BusDummy();
//IBussystems IBus = new BusRS232();
//IBussystems IBus = new BusTCP_IP();
// // RS232
// // TCP/IP
//IMES IMES = new MESDummy();
// // Text
// // XML

BusDummy Bus = new BusDummy();
// RS232
// TCP/IP
MESDummy MES = new MESDummy();
// Text
// XML

MES.SetBusSystem(Bus);
MES.SetCode("ID56342542536");
MES.Send();
}

## Problem:
Ich wollte eigentlich eine Instanz der Schnittstelle aufrufen.
Somit könnte ich das konfigurierbar machen.
Geht nicht. Hat hier jemand eine Idee, sieht jemand einen Fehler?
-
Ich habe Schnittstellen definiert.
interface IMES
{
void SetBusSystem(BaseBussystems bussystem);
void SetCode(string content);
bool Send();
}

interface IBussystems
{
void Read(string data, int size, int bytesRead);
void Write(string data, int size);
}

-
public abstract class BaseMES : IMES
{
BaseBussystems Bussystem; // ?? Richtig?

public void SetBusSystem(BaseBussystems bussystem)
{
Bussystem = bussystem;
}

public void SetCode(string content)
{

}

public bool Send()
{
return true;
}
}

public abstract class BaseBussystems : IBussystems
{
public void Read(string data, int size, int bytesRead)
{

}

public void Write(string data, int size)
{

}

}

## Problem: hier bin ichmir nicht sicher, ob ich das so machen darf, kann?
-
Richtige Klassen
public class MESDummy : BaseMES, IMES
{
BaseBussystems ObjectBaseBussystem;
string Code;

/// <summary>
/// Sets the bus system.
/// </summary>
/// <param name="bussystem">The bussystem.</param>
public void SetBusSystem(BaseBussystems bussystem)
{
ObjectBaseBussystem = bussystem;
}

/// <summary>
/// Sets the code.
/// </summary>
/// <param name="content">The content.</param>
public void SetCode(string content)
{
Code = content;
}

/// <summary>
/// Sends this instance.
/// </summary>
/// <returns></returns>
public bool Send()
{
ObjectBaseBussystem.Write(Code, Code.Length);
return true;
}
}

public class BusDummy : BaseBussystems, IBussystems
{
void Read(string data, int size, int bytesRead)
{

}

void Write(string data, int size)
{
for (int i = 0; i < size; i++)
System.Diagnostics.Trace.WriteLine(data[i]);
}
}
 

Lesen sie die antworten

#1 Michael v. Fondern
17/11/2009 - 23:24 | Warnen spam
Hallo Markus,

probiers mal so.

Grüße

- Michael -
-

public interface IMES
{
void SetBusSystem(IBussystems bussystem);
void SetCode(string content);
bool Send();
}

public interface IBussystems
{
void Read(string data, int size, int bytesRead);
void Write(string data, int size);
}

public abstract class BaseMES : IMES
{
protected IBussystems Bussystem;

public virtual void SetBusSystem(IBussystems bussystem)
{
Bussystem = bussystem;
}

public virtual void SetCode(string content)
{

}

public virtual bool Send()
{
return true;
}
}

public abstract class BaseBussystems : IBussystems
{
public virtual void Read(string data, int size, int bytesRead)
{

}

public virtual void Write(string data, int size)
{

}

}

public class MESDummy : BaseMES
{
string Code;

/// <summary>
/// Sets the code.
/// </summary>
/// <param name="content">The content.</param>
public override void SetCode(string content)
{
Code = content;
}

/// <summary>
/// Sends this instance.
/// </summary>
/// <returns></returns>
public override bool Send()
{
Bussystem.Write(Code, Code.Length);
return true;
}
}

public class BusDummy : BaseBussystems
{
public override void Read(string data, int size, int bytesRead)
{
}

public override void Write(string data, int size)
{
for (int i = 0; i < size; i++)
System.Diagnostics.Trace.WriteLine(data[i]);
}
}

Ähnliche fragen