これは、ソフトウェア工学コースのための挑戦のプログラミング割り当ての一部です。目的はNetworkLayerInterfaceとApplicationLayerInterface間のセキュリティの層を追加することです。この中間の層がPresentationLayerInterfaceと呼ばれています。
ネットワーク層のためのUML図の一部である抽象メソッドは、次のとおりです。
openConnection()
closeConnection()
sendMessage(String)
receiveMessage(String)
getPresentationLayer()
setPresentationLayer()
アプリケーション層のためのUML図の一部である抽象メソッドは、次のとおりです。
start()
stop()
sendMessage(String)
receiveMessage(String)
getPresentationLayer()
setPresentationLayer()
プレゼンテーション層のためのUML図の一部である抽象メソッドは、次のとおりです。
start()
stop()
sendMessage(String)
receiveMessage(String)
getNetworkLayer()
setNetworkLayer()
getApplicationLayer()
setApplicationLayer()
仲介者としてプレゼンテーション層を使用していないアプリケーション層の初期の実装では、次のようにstart()メソッドのルックス。
@Override
public void start() {
//TODO: Part 2: Replace with method invocation of the the presentation layer
networkLayer.openConnection();
}
OpenConnectionメソッド(開始)メソッドの内部では、()メソッドは、ネットワーク層インターフェイスを実装TCPNetwork.javaファイルに実装されています。以下のようになります:
@Override
public void openConnection() {
System.out.println("Connecting to server ...");
try {
socket = new Socket(host, port);
socketInput = new Scanner(new InputStreamReader(socket.getInputStream()));
socketOutput = new PrintWriter(socket.getOutputStream(), true);
waitForIncommingMessages();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Connection established.");
}
どのように私はもはや(割り当てに応じて)ことができればやる私はそうは使用しない方法の開始を()を呼び出していないnetworkLayer.openConnectionを(); その中の?
私は、例えば以下のものを試してみました:
public void start() {
//TODO: Part 2: Replace with method invocation of the the presentation layer
//networkLayer.openConnection(); Originally this
//presentationLayer.start();
//presentationLayer.openConnection(); Can't add method to Presentation Interface
}
私は本当に素人Javaユーザーだので、既存の知識についての仮定をしないでください。
私の答えは参加します@codebraneコメントを。
あなたが呼び出したい場合はopenConnection()
プレゼンテーション層からMethodeのをあなたが呼び出す必要があるので、あなたは、電話をかけるためにあなたのNetworkLayerオブジェクトを取得する必要がありますpresentationLayer.getNetworkLayer().openConnection()