Einführung
in die objektorientierte Programmierung
Aufg1 mit Sockets
Server
import java.net.*;
import java.io.*;
class ZaehlerServer{
int zaehler=0;
public void incr(){
zaehler++;
// return zaehler;
}
public void decr(){
zaehler--;
// return zaehler;
}
public void betrieb(){
try{
ServerSocket serverso= new ServerSocket(1234);
while (true) {
String kommando;
Socket so=serverso.accept();
BufferedReader vomClient = new BufferedReader(
new InputStreamReader(so.getInputStream()));
BufferedWriter zumClient= new BufferedWriter(
new OutputStreamWriter(so.getOutputStream()));
kommando= vomClient.readLine();
if (kommando.equals("incr")) {
incr();
} // end of if
else if (kommando.equals("decr")){
decr();
} // end of if-else
zumClient.write(""+zaehler);
zumClient.flush();
so.close();
} // end of while
}
catch (IOException e){
}
}
public static void main(String[] args){
ZaehlerServer zs = new ZaehlerServer();
zs.betrieb();
}
}
Client
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
/**
*
* Beschreibung
*
* @version 1.0 vom 05.07.2015
* @author
*/
public class Client extends Frame {
// Anfang Attribute
private Button button1 = new Button();
private Button button2 = new Button();
private TextField textField1 = new TextField();
// Ende Attribute
public Client(String title) {
// Frame-Initialisierung
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { dispose(); }
});
int frameWidth = 386;
int frameHeight = 171;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
setResizable(false);
Panel cp = new Panel(null);
add(cp);
// Anfang Komponenten
button1.setBounds(48, 40, 57, 41);
button1.setLabel("<");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
button1_ActionPerformed(evt);
}
});
cp.add(button1);
button2.setBounds(248, 40, 57, 41);
button2.setLabel(">");
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
button2_ActionPerformed(evt);
}
});
cp.add(button2);
textField1.setBounds(128, 40, 89, 41);
cp.add(textField1);
// Ende Komponenten
setVisible(true);
kommando("get");
} // end of public Client
// Anfang Methoden
public void button1_ActionPerformed(ActionEvent evt) {
kommando("decr");
} // end of button1_ActionPerformed
public void button2_ActionPerformed(ActionEvent evt) {
kommando("incr");
} // end of button2_ActionPerformed
public void kommando(String befehl){
try{
String zaehler;
Socket so= new Socket("localhost",1234);
PrintWriter zumServer = new PrintWriter(
so.getOutputStream(),true);
BufferedReader vomServer = new BufferedReader(
new InputStreamReader(so.getInputStream()));
zumServer.println(befehl);
zaehler= vomServer.readLine();
textField1.setText(zaehler);
so.close();
}
catch (IOException e){
textField1.setText("IO-Problem");
}
}
// Ende Methoden
public static void main(String[] args) {
new Client("Client");
} // end of main
} // end of class Client
Aufgabe 3
Programm
sup1.m(h, v2); // Aufruf #1
sup 1 ist vom Typ Super
Aufruf m(Huhn, Vogel)
Methode m(Tier , Tier )
Ausgabe 1
sup2.m(v1, k); // Aufruf #2
sup 2 ist vom Typ Super
Aufruf m(Vogel, Karpfen)
Methode m(Tier , Fisch )
Überschrieben von m(Tier , Fisch ) in Sub
Ausgabe 3
sup1.m(t1, t2); // Aufruf #3
sup 1 ist vom Typ Super
Aufruf m(Tier, Tier)
Methode m(Tier , Tier )
Ausgabe 1
sup1.m(v1, k); // Aufruf #4
sup 1 ist vom Typ Super
Aufruf m(Vogel, Karpfen)
Methode m(Tier , Fisch )
Ausgabe 2
sup1.m(v2, f); // Aufruf #5
sup 1 ist vom Typ Super
Aufruf m(Vogel, Fisch)
Methode m(Tier , Fisch )
Ausgabe 2
sup2.m(v1, f); // Aufruf #6
sup 1 ist vom Typ Super
Aufruf m(Vogel, Fisch)
Methode m(Tier , Fisch )
Überschrieben von m(Tier , Fisch ) in Sub
Ausgabe 3