Unverständliche HA 10

netzwerkarchitekt
Neuling
Neuling
Beiträge: 6
Registriert: 5. Nov 2007 18:49

Re: Unverständliche HA 10

Beitrag von netzwerkarchitekt » 27. Jan 2008 15:16

hallo,

ich bin SEHR frustriert!
1. ich kann mir nicht erklären, warum der quellcode für die stocktree klasse zwar in der mulö ist, aber nicht als quelltextdatei auf der homepage bereitgestellt wird.
2. wenn ich mir schon den quellcode für die stocktree klasse aus dem pdf ziehe, dann sollte dass dank pdf doch wenigstens funktionieren und nicht so aussehen:

[code] package S t o c k k e e p i n g ;
1
2
p u b l i c c l a s s S t o c k T r e e <T e x t e n d s S t o c k I t e m > {
3
private T data ;
4
p r i v a t e S t o c k T r e e <T> l e f t ;
5
p r i v a t e S t o c k T r e e <T> r i g h t ;
6
7
private int height = 0;
8
p r i v a t e s t a t i c i n t maxHeight ;
9
10
/∗ ∗
11
∗ c o n s t r u c t s a new S t o c k T r e e u s i n g t h e l e f t a n d r i g h t s u b − t r e e p l u s
12
∗ a s i n g l e i t e m . N o t e t h a t l e f t T r e e , r i g h t T r e e may b e n u l l .
13

14
∗ @param l e f t T r e e t h e l e f t s u b t r e e ( i f a n y )
15
∗ @param r i g h t T r e e t h e r i g h t s u b t r e e ( i f a n y )
16
∗ @param i t e m D a t a t h e d a t a o f t h e c u r r e n t i t e m
17
∗/
18
[/code]
etc.

dieses problem wurde mir auch von anderen berichtet.

ps.
(natürlich hätte ich den code so oder ähnlich ja selbst in der übung programmieren sollen, aber wie gesagt habe ich mit der übung auch noch sehr viel gravierendere probleme und nicht ewig zeit)

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Unverständliche HA 10

Beitrag von Stumpf.Alex » 27. Jan 2008 15:20

Ja das Problem habe ich auch wenn ich Code von den pdfs raus kopieren will. :cry:

Dafür können die aber auch nichts, außer die Codes seperat zum download zur Verfügung stellen.

netzwerkarchitekt
Neuling
Neuling
Beiträge: 6
Registriert: 5. Nov 2007 18:49

Re: Unverständliche HA 10

Beitrag von netzwerkarchitekt » 27. Jan 2008 15:29

[quote]Ja das Problem habe ich auch wenn ich Code von den pdfs raus kopieren will. :cry:

Dafür können die aber auch nichts, außer die Codes seperat zum download zur Verfügung stellen.[/quote]

mir ist schon fast klar dass ich damit ungerecht bin. aber ich habe keine chance außer abtippen.
@Alex: hast du die stocktree klasse als code? wenn ja dann fände ich es super die hier mal zu posten.

Benutzeravatar
C0RNi666
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 114
Registriert: 8. Jan 2008 12:51

Re: Unverständliche HA 10

Beitrag von C0RNi666 » 27. Jan 2008 15:33

ich bin mir nicht sicher, ob der code nich schonmal irgendwo gepostet wurde oder sonstwo zum download bereit steht.

im anhang findet ihr die StockTree.java
Dateianhänge
StockTree.java
(2.04 KiB) 21-mal heruntergeladen
Win32: Reboot!
Unix: Be root!

netzwerkarchitekt
Neuling
Neuling
Beiträge: 6
Registriert: 5. Nov 2007 18:49

Re: Unverständliche HA 10

Beitrag von netzwerkarchitekt » 27. Jan 2008 15:37

vielen dank!

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Re: Unverständliche HA 10

Beitrag von Osterlaus » 27. Jan 2008 16:55

Wofür braucht ihr einen StockTree? Bei mir klappt alles ohne, wir haben doch die Vektoren als Speichermöglichkeit.

Und trotzdem sind noch zwei Dinge unklar. Denn sowohl beim Filtern als auch beim Maximum habe ich noch Probleme mit den Generics. Zum max: Wie schreibe ich mir am besten den Comparator zum Testen? Der müsste doch unter Umständen eine AudioCD mit einem Video vergleichen können, oder? Der Funktion übergebe ich einen Comparator<Type1>, Type1 extended StockItem, aber dann bekomme ich beim Aufruf des Comparators die folgende Fehlermeldung:
The method compare(Type1, Type1) in the type Comparator<Type1> is not applicable for the arguments (StockItem, AudioCD)
Dieselbe Fehlermeldung erhalte ich, wenn ich in meiner Filterfunktion check aufrufe:
The method check(Type) in the type IFilterPredicate<Type> is not applicable for the arguments (AudioCD)
Wie umgehe ich das nun?

//Nachtrag: Problem in beiden Fällen gelöst, indem eben weder IFilterPredicator noch Comparator mit generischem Typ übergeben werden....

S. Oelmann
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 7. Okt 2007 14:25
Wohnort: Dieburg
Kontaktdaten:

Re: Unverständliche HA 10

Beitrag von S. Oelmann » 27. Jan 2008 18:54

Der StockTree wird in der Testklasse verwendet.

Benutzeravatar
C0RNi666
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 114
Registriert: 8. Jan 2008 12:51

Re: Unverständliche HA 10

Beitrag von C0RNi666 » 27. Jan 2008 20:00

Osterlaus hat geschrieben://Nachtrag: Problem in beiden Fällen gelöst, indem eben weder IFilterPredicator noch Comparator mit generischem Typ übergeben werden....
hmm sollen IFilterPredicator und Comparator nicht laut template generisch übergeben werden?
das template sorgt nur für verwirrungen..

bei mir funzt das auch ohne generische parameter, allerdings bin ich mir nicht sicher, ob wir hier wirklich das template so abändern dürfen. schließlich hat sich der autor was dabei gedacht oder nich ( zumindest bei mergeInventory)?
Win32: Reboot!
Unix: Be root!

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Unverständliche HA 10

Beitrag von Stumpf.Alex » 27. Jan 2008 20:26

Wie meinst du das? Benutzt du comperator als raw-Typ? Also einfach:

Code: Alles auswählen

public <T extends Comparator> StockItem max(T comparator)
oder meinst du bei den Paramenter?

Code: Alles auswählen

public <T extends Comparator<StockItem>> StockItem max(StockItem comparator)

Benutzeravatar
C0RNi666
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 114
Registriert: 8. Jan 2008 12:51

Re: Unverständliche HA 10

Beitrag von C0RNi666 » 27. Jan 2008 21:44

also den Comparator hab ich schon generisch als parameter drin.
inzwischen hab ich das auch template conform hingefummelt, also eigentlich läuft das ^^

allerdings bin ich mir nicht sicher, wie ich einen Comparator zum testen implementieren soll :roll:
auch in der javadoc konnte ich leider nichts dazu finden.. hat jemand vielleicht einen tipp für mich?

//Nachtrag: najoa nen eigene comparator klasse zum testen tuts auch :wink:
Win32: Reboot!
Unix: Be root!

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Unverständliche HA 10

Beitrag von Krümelmonster » 27. Jan 2008 21:56

Code: Alles auswählen

package Stockkeeping;

import java.util.Comparator;

public class StockItemComparator implements Comparator<StockItem> {
	public int compare(StockItem o1, StockItem o2) {
		return o1.getID() - o2.getID();
	}
}
Gibt eine positive Zahl zurück, falls die ID des ersten Objekts größer ist, als die des zweiten Objekts.
Gibt eine negative Zahl zurück, falls die ID des zweiten Objekts größer ist, als die des ersten Objekts.
Gibt eine Null zurück, falls die ID des ersten Objekts so groß wie die des zweiten Objekts ist.

So kannst du das Objekt mit der größten ID herausfinden, indem du dir das Objekt mit der größten ID
merkst und es mit dem nächsten Objekt in der Liste vergleichst.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
C0RNi666
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 114
Registriert: 8. Jan 2008 12:51

Re: Unverständliche HA 10

Beitrag von C0RNi666 » 27. Jan 2008 22:11

jo, ein anderes Beispiel wäre nach Namen, Hashwert oder sonstwas zu sortieren. das ist dem programmierer laut interface freigegeben.

allerdings greife ich doch nochmal meine frage von vorhin auf. und zwar bezog sich die nicht auf den generischen type des Comparator paramter in der max methode sondern darauf, dass laut template max einen generischen <type> verwendet.

Code: Alles auswählen

  <Type> StockItem max(T comparator);
meine implementierung schaut stattdesssen so aus:

Code: Alles auswählen

   StockItem max(Comparator<Object> comparator);
ist uns die freiheit auch überlassen?
Win32: Reboot!
Unix: Be root!

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Unverständliche HA 10

Beitrag von Krümelmonster » 27. Jan 2008 22:20

Code: Alles auswählen

StockItem max(Comparator<Object> comparator);
Comparator<StockItem> ist kein Subtyp von Comparator<Object>.
Du musst sicherstellen, dass der Comparator eine Erweiterung von Comparator<StockItem>
ist.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
C0RNi666
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 114
Registriert: 8. Jan 2008 12:51

Re: Unverständliche HA 10

Beitrag von C0RNi666 » 27. Jan 2008 22:38

hmm mal abgesehen davon, dass Comparator nicht implementiert werden muss, ist es doch auch nicht nötig diesen auf StockItem einzuschränken, bzw. den Type davon erben zu lassen.

Da du in deiner Comparator klasse ein Comparator<StockItem> interface implementierst macht das so wie du sagst auch sinn, genauso gut kann je nach comparator klasse auch jeder andere Typ verwendet werden :wink:
Win32: Reboot!
Unix: Be root!

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Unverständliche HA 10

Beitrag von Stumpf.Alex » 27. Jan 2008 22:49

Wenn man aber wirklich einen Comperator implementiert, muss dieser typbeschränkt sein, ansonsten könnte man mit dem comperator z.B. StockItem IDs vergleichen.
Deshalb sollte max auch schon typbeschränkt sein, da ansonsten die Methode compare des comperator nicht StockItems als Parameter akzeptiert.

Antworten

Zurück zu „Archiv“