Einführung in die objektorientierte Programmierung

Vererbung durch Klassen und Interfaces

interface Drueber{
   void soundso();
 }
interface NameUmdrehen extends Drueber {
   void umdrehen(String n);
   }

public class Person{
String name ;
int alter;

public void drucken(){
System.out.println(name+" "+alter);
}
}
class Student extends Person implements NameUmdrehen{
   //  String name;
   //  int alter;
   String mtrnr;
   
   Student(String m, String n, int a){
   name=n;
   alter=a;
   mtrnr=m;
   }
   
   public void drucken(){
   System.out.print(mtrnr+": ");
   super.drucken();
   }
   
   public void soundso(){
   
   }
   
   public void umdrehen(String s){
   for (int i= s.length()-1; i>-1; i--) {
   System.out.print(s.substring(i,i+1));
   } // end of for
   }
   
   public static void main(String[] args){
   Student st1=new Student("12345","Meier",26);
   st1.drucken();
   st1.umdrehen(st1.name);
   System.out.println();
   
   Person p1= new Person();
   
   p1=st1;
   
   // !!! druckt mit Methode der Subklasse
   p1.drucken();
   
   Object o= new Object();
   
   int j=7;
   
   o = st1;
 o=j;
   System.out.println(o);
   System.out.println(st1);
   
   //    System.out.println(p1.mtrnr);
   
   //    st1=p1;
   
   }
   
   }
 

Aufgabe 1

public class GraphException extends Exception {}

public class Graph {
protected boolean[][] adjacencyMatrix;
protected String[] nodes;
protected int indexOf(String node) throws GraphException {
for (int i = 0; i < nodes.length; i++) {
if (node.equals(nodes[i])) {
return i;
}
}
throw new GraphException();
}
public Graph(int nodeNumber) {
nodes = new String[nodeNumber];
adjacencyMatrix = new boolean[nodeNumber][nodeNumber];
}
public Graph(String[] nodes) {
this(nodes.length);
for (int i = 0; i < nodes.length; i++) {
this.nodes[i] = nodes[i];
}
}
public String getNode(int index) throws GraphException {
// ...liefert den Namen des Knotens an der
// durch den Wert des Parameters bezeichneten Position,
// wenn diese einen Knoten bezeichnet; sonst eine GraphException.
if ((index<0) || (index >(nodes.length-1)) ) {
throw new GraphException();
} // end of if
else {
return nodes[index];
} // end of if-else
}
public int getNumberOfNodes() {
// ...liefert die Anzahl der Knoten zurueck.
return nodes.length;
}
public void setNodes(String[] nodes) {
// ...weist den ersten k Elementen des Attributs nodes die
// entsprechenden Werte des Parameters nodes zu. k ist dabei das
// Minimum aus der Laenge des Attributs und des Parameters.
int k = nodes.length;
if (this.nodes.length < k) {
k= this.nodes.length ;
} // end of if
for (int i=0; i< k ;i++ ) {
this.nodes[i]= nodes[i];
} // end of for
}
public boolean isAdjacent(int index1, int index2) throws GraphException {
// ...liefert "wahr", wenn die Knoten mit Index
// index1 und index2 benachbart sind, sonst "falsch".
if (index1<0 || index2 <0 || index1>=nodes.length || index2>=nodes.length ) {
throw new GraphException();
} // end of if
return adjacencyMatrix[index1][index2];
}
public boolean isAdjacent(String node1, String node2) throws GraphException {
// ...liefert "wahr", wenn die Laender mit Namen
// node1 und node2 benachbart sind, sonst "falsch".
int index1=-1;
int index2=-1;
for (int i=0;i<nodes.length ; i++) {
if (nodes[i].equals(node1)) {
index1=i;
} // end of if
} // end of for
for (int i=0;i<nodes.length ; i++) {
if (nodes[i].equals(node2)) {
index2=i;
} // end of if
} // end of for
if ((index1==-1) || (index2==-1) ) {
throw new GraphException();
} // end of if
return adjacencyMatrix[index1][index2];
}
public void addEdge(int index1, int index2) throws GraphException {
// ...fuegt Kante zwischen den Knoten mit
// Index index1 und index2 ein, wenn diese
// Indizes von Laendern sind; sonst eine GraphException.
}
public void addEdge(String node1, String node2) throws GraphException {
// ...fuegt Kante zwischen den Knoten mit
// Laendernamen node1 und node2 ein, wenn diese
// Knoten des Graphen bezeichnen; sonst eine GraphException.
}
}


Aufgabe 3

funktioniert jetzt. istVorgesetzterVor ist jetzt als Methode in die Aufzählung aufgenommen worden.

class THW{

static public enum dienstgrad{
HELFER, TRUPPFUEHRER, GRUPPENFUEHRER, ZUGTRUPPFUEHRER, ZUGFUEHRER;
public boolean istVorgesetzterVor(dienstgrad d){
return (this.ordinal() > d.ordinal());
}
};

void printAll(){
for ( dienstgrad dg: dienstgrad.values()) {
System.out.println(dg);
} // end of for
}

public static void main(String[] args) {
THW truppe= new THW();
truppe.printAll();
System.out.println(dienstgrad.HELFER.istVorgesetzterVor(dienstgrad.GRUPPENFUEHRER));
System.out.println(dienstgrad.TRUPPFUEHRER.istVorgesetzterVor(dienstgrad.HELFER));
System.out.println(dienstgrad.GRUPPENFUEHRER.istVorgesetzterVor(dienstgrad.GRUPPENFUEHRER));
}
}