Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Übungsaufgabe - Interface » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Übungsaufgabe - Interface
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Java_Beginner
unregistriert
Übungsaufgabe - Interface Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
09.01.2016 21:35
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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;
	}
}


__________________
Syntax Highlighting fürs Board (Link)
10.01.2016 09:39 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Java_Beginner
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?
10.01.2016 10:03
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
10.01.2016 13:11 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Übungsaufgabe - Interface