Übungsaufgabe - Interface

Neue Frage »

Auf diesen Beitrag antworten »
Java_Beginner Übungsaufgabe - Interface

Meine Frage:
Hallo,

ich habe hier (zumindest für mich) eine heftige Übungsaufgabe vor mir liegen.

Drei Entwickler sollen zusammen fu?r die Bundeswehr ein Projekt bearbeiten: Soldaten sollen nach ihrer Größe sortiert werden.
Sie einigen sich auf folgende Arbeitsteilung: Der eine soll den Sortieralgorithmus BubbleSort als stati-sche Funktion sortiere() einer Klasse BubbleSort implementieren. Die beiden vereinbaren folgendes Interface

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
package bubblesort;
public interface Sortierbar
{
    public int istGroesser(Sortierbar element);
}
    public class BubbleSort
{
    public static void sortiere (Sortierbar[] liste)
{
    // muss noch implementiert werden.
}
}




Ein anderer soll in einer Klasse Armee ein Array von (der Einfachheit halber 10) Soldaten mittels des von seinem Kollegen implementierten BubbleSort-Algorithmus sortieren. Ein dritter Entwickler hatte schon vor einiger Zeit eine Klasse Mensch implementiert, welche (wieder der Einfachheit halber) hier nur einen Namen besitzt. Diese Klasse Mensch bietet einen Konstruktor, welcher den Namen initiali-siert, und eine public-Funktion getName(), mit welcher der ansonsten geschu?tzte Name gelesen wer-den kann. Da auch ein Soldat einen Namen hat, entschließt sich Entwickler Nr. 3 einen Soldaten von der Klasse Mensch abzuleiten und nur noch eine Groesse (in cm), nach der sortiert werden kann, hinzuzufu?gen.
Erledigen Sie die Aufgabe von allen drei Entwicklern, die u?brigens in getrennten Packages arbeiten sollen.

Meine Ideen:
Ich habe jetzt ein Package Armee erstellt und darin zwei Klassen mit dem Namen Armee und BubbleSort, sowie ein Interface Sortierbar.

Hier einmal mein Code:

Klasse Armee

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
package armee;

public class Armee 
{
    public static void main(String[] args) 
    {
        Soldat [] sold = new Soldat [10];
        sold[0] = new Soldat ("Meier",186);
        sold[1] = new Soldat ("Meier1",187);
        sold[2] = new Soldat ("Meier2",185);
        sold[3] = new Soldat ("Meier3",184);
        sold[4] = new Soldat ("Meier4",189);
        sold[5] = new Soldat ("Meier5",176);
        sold[6] = new Soldat ("Meier6",143);
        sold[7] = new Soldat ("Meier7",167);
        sold[8] = new Soldat ("Meier8",190);
        sold[9] = new Soldat ("Meier9",165);
    }
}

class Mensch
{
    private String name; 
    
    public Mensch (String name)
    {
        this.name = name; 
    }
    
    public String getName()
    {
        return name; 
    }
}

class Soldat extends Mensch implements Sortierbar
{
    private int groesse; 
    public Soldat (String name, int groesse)
    {
        super (name);
    }

    public int istGroesser (Sortierbar element)
    {
        // Hier hänge ich leider fest! Fehlermeldung,da Rückgabewert 
        // erwartet wird.
    }
}



Die Klasse BubbleSort:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:

package armee;

public class BubbleSort
{
    public static void sortiere (Sortierbar[]liste)
    {
        boolean vertauschen = true;
        int i = 0;
        Sortierbar temp; 
        while (vertauschen)
        {
            vertauschen = false; 
            for( i=0;  i<liste.length-1; i++ )
            {
                if (liste[i].istGroesser(liste[i+1]) > 0 )   
                {
                    temp = liste[i];                
                    liste[i] = liste[i+1];
                    liste[i+1] = temp;
                    vertauschen = true;             
                }
            }
        }
    }
}



Und das Interface Sortierbar:

code:
1:
2:
3:
4:
5:
6:
7:
8:
package armee;

public interface Sortierbar
{
    public int istGroesser (Sortierbar element);
}



Ich weiß jetzt leider nicht, wie ich die Soldaten mittels des BubbleSort - Algorithmus sortieren kann.

Vielen Dank für Eure Hilfe. Ich kann mit meiner Lösung auch voll daneben liegen, aber versuchen wollte ich es auf jeden Fall erst einmal selbst.
 
Auf diesen Beitrag antworten »
eulerscheZahl

So schlecht war das gar nicht smile
Ich musste nur den Vergleich implementieren, die Sortierfunktion aufrufen und die Größe zuweisen.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
package armee;

public class Armee {
	public static void main(String[] args) {
		Soldat[] sold = new Soldat[10];
		sold[0] = new Soldat("Meier", 186);
		sold[1] = new Soldat("Meier1", 187);
		sold[2] = new Soldat("Meier2", 185);
		sold[3] = new Soldat("Meier3", 184);
		sold[4] = new Soldat("Meier4", 189);
		sold[5] = new Soldat("Meier5", 176);
		sold[6] = new Soldat("Meier6", 143);
		sold[7] = new Soldat("Meier7", 167);
		sold[8] = new Soldat("Meier8", 190);
		sold[9] = new Soldat("Meier9", 165);
		BubbleSort.sortiere(sold);
		for (Soldat s : sold) {
			System.out.println(s.getName());
		}
	}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
package armee;

class Soldat extends Mensch implements Sortierbar {
	private int groesse;

	public Soldat(String name, int groesse) {
		super(name);
		this.groesse = groesse; // hattest du vergessen
	}

	public int istGroesser(Sortierbar element) {
		return groesse - ((Soldat) element).groesse;
	}
}
Auf diesen Beitrag antworten »
Java_Beginner

Wow, sehr cool :-) Vielen Dank.

Nur eine Sache verstehe ich noch nicht ganz:

code:
1:
2:
3:
4:
5:
6:
7:

public int istGroesser(Sortierbar element) {
		return groesse - ((Soldat) element).groesse;
	}



Was hat es mit dem Minus - Zeichen bei return groesse - (Minus) auf sich?
Auf diesen Beitrag antworten »
eulerscheZahl

Damit berechne ich die Differenz, was denn sonst? Augenzwinkern
Zum Sortieren ist nur wichtig, ob der eine Wert größer oder kleiner ist. Ist der erste größer, ist das Ergebnis positiv. Ist der zweite größer, dann negativ.
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »