Как вызвать метод в Java через промежуточный слой? - PullRequest
0 голосов
/ 04 марта 2020

Это часть сложного задания по программированию для курса разработки программного обеспечения. Цель состоит в том, чтобы добавить уровень безопасности между 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 () выглядит следующим образом в начальной реализации уровня приложения, который выполняет не используйте PresentationLayer в качестве посредника.

@Override
public void start() {
    //TODO: Part 2: Replace with method invocation of the the presentation layer
    networkLayer.openConnection();
}

Метод openConnection () внутри метода start () реализован в файле 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.");
 }

Как вызвать метод start (), если я больше не могу (в соответствии с назначением) сделать это с помощью 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 пользователь, поэтому, пожалуйста, не делайте предположений о предварительном существующие знания.

1 Ответ

2 голосов
/ 04 марта 2020

Мой ответ присоединится к @ codebrane комментарию.

если вы хотите вызвать openConnection() метод из PresentationLayer, вы должны получить объект NetworkLayer для выполнения вызова, поэтому вы нужно позвонить presentationLayer.getNetworkLayer().openConnection()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...