Rechnernetze / Kommunikationssysteme

SW-Klassendiagramm

classDiagram
  direction BT
  class ARQ {
  <<Interface >>
    + data_req(byte[], int, boolean) boolean
    + data_ind_req(int[]) byte[]
    + closeConnection() void
     int retryCounterStat
     int backData
     int retransmissionCounter
     int MTU
  }
  class ARQAbst {
    + ARQAbst(Socket) 
    + ARQAbst(Socket, int) 
    # int MTU
    # int retransmissionCounter
    # int retryCounterStat
    # int backData
    + data_req(byte[], int, boolean) boolean
    + data_ind_req(int[]) byte[]
    ~ sendAck(int) void
    ~ generateAckPacket(int) byte[]
    ~ checkStart(DatagramPacket) boolean
    # getPacketNr(DatagramPacket) int
    # getAckData(DatagramPacket) void
    # getSessionID(DatagramPacket) int
    # waitForAck(int) boolean
    # generateDataPacket(byte[], int) byte[]
     int retryCounterStat
     int backData
     int retransmissionCounter
     int MTU
  }
  class Channel {
    ~ Channel(DatagramSocket, double, int) 
    + sendPacket(DatagramPacket) void
    + setChannelSimulator(double, int) void
    + receivePacket(DatagramPacket) DatagramPacket
    - simulateLoss() boolean
  }
  class FT {
  <<Interface >>
    + file_init() boolean
    + file_req() boolean
  }
  class FileCopy {
    + FileCopy() 
    + main(String[]) void
    - handleConnection(int) void
    - sendFile(String, int, String, byte) void
  }
  class FileTransfer {
    + FileTransfer(Socket, String) 
    + FileTransfer(String, Socket, String, byte) 
    + file_init() boolean
    + file_req() boolean
    - setFileOut() CheckedOutputStream
    - printTime(boolean) void
    - generateStartPacket(String, long) byte[]
    - printCRC(byte[]) boolean
    - printVersion() void
    - readStartPacket(byte[]) boolean
    - getDataFromArq(ARQ, byte[], int[]) boolean
  }
  class SW {
    + SW(Socket, int) 
    + SW(Socket) 
    + data_ind_req(int[]) byte[]
    + data_req(byte[], int, boolean) boolean
    + closeConnection() void
    ~ generateAckPacket(int) byte[]
    ~ sendAck(int) void
    ~ checkStart(DatagramPacket) boolean
    # generateDataPacket(byte[], int) byte[]
    # getAckData(DatagramPacket) void
    # getPacketNr(DatagramPacket) int
    # getSessionID(DatagramPacket) int
    # waitForAck(int) boolean
    - extractData(DatagramPacket, int) byte[]
  }
  class Socket {
    + Socket(String, int) 
    + Socket(int, double, int) 
    + sendPacket(byte[]) void
    + receivePacket() DatagramPacket
     int timeout
  }
  class TimeoutCalculation {
    + TimeoutCalculation() 
    - long startTime
    - int rto
    + checkRto(long) boolean
    + updateRto(int) void
    + setStartTime() void
    + updateRto() void
    - calculateRto(long) void
     int startTime
     int rto
  }
  
  ARQAbst  ..|>  ARQ 
  ARQAbst "1" *--> "socket 1" Socket 
  FileCopy  ..>  FileTransfer : «create»
  FileCopy  ..>  Socket : «create»
  FileTransfer "1" *--> "myARQ 1" ARQ 
  FileTransfer  ..|>  FT 
  FileTransfer  ..>  SW : «create»
  FileTransfer "1" *--> "socket 1" Socket 
  SW  --|>  ARQAbst 
  SW  ..>  Socket 
  SW  ..>  TimeoutCalculation 
  Socket "1" *--> "channel 1" Channel 
  Socket  ..>  Channel : «create»
  

Letzte Änderung: 17. September 2025 12:14