Einführung in die objektorientierte Programmierung

Aufgabe 1

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


Seiten im Netz öffnen

 

import java.applet.*;
      import java.awt.*;
      import java.awt.event.*;
      import java.io.*;
    import java.net.*;
public class browser extends Applet
      {
      TextField tf;
      TextArea ta;
      public void init() 
      {
      
      Button b1=new Button("Adresse");
      add(b1);
 tf=new TextField(
      "http://mylinux.rmz.uni-lueneburg.de/index.html");
      tf.setColumns(40);
      add(tf);
      
      ta=new TextArea("Begin",20,60);
      ta.setText("Zeile 1");
      ta.append("\nZeile 2");
      ta.append("\nZeile 3");
      add(ta);
 b1.addMouseListener(
      new MouseAdapter(){
      public void mouseClicked(MouseEvent e){
      String eingabe;
      eingabe=tf.getText();
      lesen(eingabe);
      }
      }
      );
      }
 public void lesen(String args) {
      try{
      URL url=new URL(args);
      if (url.getProtocol().equals("http")){
      ta.append("http");
      Socket so=new Socket(url.getHost(),80);
      ta.append("Socket");
      BufferedReader vomServer=new BufferedReader(
      new InputStreamReader(so.getInputStream()));
      PrintWriter zumServer=new PrintWriter(
      so.getOutputStream(),true);
      zumServer.println("GET "+url.getFile()+" HTTP/1.1\r\nHost: "
      +url.getHost()+"\r\n");
      ta.append("GET");
      // Lesen und Ausgabe der WWW-Seite
      int c= vomServer.read();
      while(c!= -1){
      ta.append(""+(char)c);
      c=vomServer.read();
      }
      so.close();
      }
      
      }
      catch(Exception e){ta.append("fehler"+e);}
 }
      }
 
/*
      public class WWWbrowser {
      public static void main(String[] args) throws IOException {
      URL url=new URL(args[0]);
      if (url.getProtocol().equals("http")){
      Socket so=new Socket(url.getHost(),80);
      BufferedReader vomServer=new BufferedReader(
      new InputStreamReader(so.getInputStream()));
      PrintWriter zumServer=new PrintWriter(
      so.getOutputStream(),true);
      zumServer.println("GET "+url.getFile()+" HTTP/1.0\r\n\r\n");
      // Lesen und Ausgabe der WWW-Seite
      int c= vomServer.read();
      while(c!= -1){
      System.out.print(""+(char)c);
      c=vomServer.read();
 }
      so.close();
      }
      }
      }
      */
 
 

Aufgabe 3

 

class Tier {}

class Fisch extends Tier {}

class Vogel extends Tier {}

class Huhn extends Vogel {}

class Spatz extends Vogel {}

class Karpfen extends Fisch {}

class Super {

public void m(Tier t1, Tier t2)

{ System.out.println("1"); }

public void m(Tier t, Fisch f)

{ System.out.println("2"); }

public void m(Fisch f, Tier t)

{ System.out.println("5"); }

}

class Sub extends Super {

public void m(Tier t1, Fisch t2)

{ System.out.println("3"); }

public void m(Vogel v, Fisch f)

{ System.out.println("4"); }

}

public class TierTest {

public static void main(String[] args) {

Tier t1 = new Tier();

Tier t2 = new Vogel();

Fisch f = new Karpfen();

Vogel v1 = new Vogel();

Vogel v2 = new Spatz();

Huhn h = new Huhn();

Karpfen k = new Karpfen();

Super sup1 = new Super();

Super sup2 = new Sub();

sup1.m(h, v2); // Aufruf #1

sup2.m(v1, k); // Aufruf #2

sup1.m(t1, t2); // Aufruf #3

sup1.m(v1, k); // Aufruf #4

sup1.m(v2, f); // Aufruf #5

sup2.m(v1, f); // Aufruf #6

}

}


Hierarchie:

Referenz

deklarativer Typ

dynamischer Typ

sup1

Super

Super

sup2

Super

Sub

t1

Tier

Tier

t2

Tier

Vogel

f

Fisch

Karpfen

v1

Vogel

Vogel

v2

Vogel

Spatz

h

Huhn

Huhn

k

Karpfen

Karpfen


sup1.m(h, v2); // Aufruf #1

Super.m(Huhn, Vogel); // Aufruf #1

System.out.println("1");

 

sup2.m(v1, k); // Aufruf #2

Super.m(Vogel, Karpfen); // Aufruf #2 (Sub)

System.out.println("3");

 

sup1.m(t1, t2); // Aufruf #3

Super.m(Tier, Tier); // Aufruf #3

System.out.println("1");

 

sup1.m(v1, k); // Aufruf #4

Super.m(Vogel, Karpfen); // Aufruf #4

System.out.println("2");

 

sup1.m(v2, f); // Aufruf #5

Super.m(Vogel, Fisch); // Aufruf #5

System.out.println("2");

 

sup2.m(v1, f); // Aufruf #6

Super.m(Vogel, Fisch); // Aufruf #6 (Sub)

System.out.println("3");