PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vererbung und so...


theone
07.08.2002, 21:39
Servuz,
ich bin eigentlich in Sachen Programmieren, vor allem mit JAVA noch ein ziemlicher anfänger...
Ich habe jetzt gerade so angefangen mit Obj. Oritentierter Prog. und hab da ein kleenes problem mit meinen Oberklassen.
Und zwar hab findet der mir in der Unterklasse einfach die Klasse, die ich mit ...extends blablabla vererben will nich...

Also, das soll ne applikation werden, so ne art datenbank für fahrzeuge (*g* guat gell).
den Classpath hab ich auch gesetzt, auf alle möglichen ordner schon probiert, direkt aus dem bin raus, aber der findet die oberklasse und die ganzen variablen aus der einfach nich...
ich hoffe, dass ihr mir helfen könnt !
schonmal danke im voraus.

CYA


MrEasy
07.08.2002, 22:43
zuerst mal: gescheite IDE nehmen, dann wird das nämlich schonmal einfacher
www.intellij.com

zum problem: liegt am classpath, da haste schon recht
hast du ahnung von packages? ich denke, daran liegt's
wenn du eine klasse hast, die im package foo.bar.bla ist, dann wird die im unterverzeichnis foo/bar/bla/ gesucht
also beispiel:
oberklasse: OberClass im package bla und erbende klasse UnterClass ohn package sollte folgendermassen aussehen:

/projekt_verzeichnis/UnterClass.java
/projekt_verzeichnis/bla/OberClass.java

dann kannst so erben:

class UnterClass extends bla.OberClass {
....
}

bzw.
import bla.OberClass;
class UnterClass extends OberClass {
...
}

Chaq
07.08.2002, 22:46
Man kann auch CodeGuide von Omnicore nehmen: http://www.omnicore.com/ :D ;) :) :p :cool: :eek:

Gruß

Chaq

theone
08.08.2002, 17:28
Also, ich kopier euch am besten mal den Quellcode rein... Also wie gesagt, soll so ne art Autovermietung sein.
Die Klasse Auto soll ja auch im Package sein.
Hier die Klasse StrassenFzg:

package fahrzeug;
abstract class StrassenFzg

{
protected String bez;
protected short geschw;
protected boolean verliehen;
abstract boolean eingeben();
abstract boolean anzeigen();
public boolean verleihen()
{
if (verliehen)
return false;
else {
verliehen = true;
return true;
}
}
}

Und die Klasse Auto:

package fahrzeug
import java.io.*;

public class Auto extends StrassenFzg
{
public short plaetze;
public boolean eingeben()
{
InputStreamReader daten;
daten = new InputStreamReader System.in);
BufferedReader eingabe;
eingabe = new BufferedReader(daten);
try
{
System.out.print("Bezeichnung: ");
bez = eingabe.readLine();
System.out.print("Sitzplaetze: ");
plaetze = Short.parseShort(eingabe.readLine());
System.out.print("Geschwindigkeit: ");
geschw = Short.parseShort(eingabe.readLine());
return true;
}
catch (Exception e)
{
return false;
}
}
public boolean anzeigen()
{
System.out.println("\nDasAuto ist ein "+bez);
System.out.println("Es hat " +plaetze +" Sitze");
System.out.println("Top-Speed: " +geschw);
if (verliehen)
System.out.println("Es ist verliehen");
else
System.out.println("Es ist verfuegbar/nicht verliehen");
return true;
}
}

MrEasy
08.08.2002, 19:03
sieht eigentlich gut aus, liegen beide klassen auch in einem verzeichnis namens fahrzeug ?

theone
08.08.2002, 19:42
ach muss das verzeichnis auch fahrzeug heißen ???
Also das hab ich jetzt auch gemacht. beide in das fahrzeugverzeichnis rein und den classpath auf das verzeichnis gesetzt.
dann sagt er mir aber, dass er keinen zugriff auf StrassenFzg bekommt.
Fehlermeldung:

auto.java:3: cannot access StrassenFzg
bad class file: f:\Java\fahrzeug\StrassenFzg.class
class file contains wrong class: fahrzeug.StrassenFzg
Please remove or make sure it appears in the correct subdirectory of the classpath.
public class Auto extends StrassenFzg

Und der nette pfeil zeigt auf das S von StrassenFzg.

Hab jetzt alles mal probiert, das in ein verzeichnis darunter kopiert usw. den classpath muss ich doch auf den Ordner fahrzeug setzen, oder ?
Hab windows2000, kann das sein, dass es daran liegt
(hab gehört, dass java ziemlich besch.... unter win2k ist...)

tweakyou
08.08.2002, 21:15
hi theone,

benutzt du eine IDE oder arbeitest du nur mit einem Editor?

Wenn nicht besorg dir mal (wie auch schon von MrEasy empfohlen) die IntelliJ IDE. Mit der Beta 3.0 kannst du super programmieren, muß halt ab und an einen neuen Key holen.

http://www.intellij.com/eap/

Dein Classpath muß au f:\Java zeigen, denn dein package zeigt auf fahrzeuge. Stell dir die package Struktur wie eine Verzeichnisstruktur vor.

Ich würde ein Verzeichnis scr für die Sourcefiles und ein Verzeichnis für die classes für die classfiles anlegen.

also Source = f:\Java\Fahrzeuge\scr
und Classes = f:\Java\Fahrzeuge\classes

Dein Source wäre dann in f:\Java\Fahrzeuge\scr\fahrzeuge

und deine classfiles in f:\Java\Fahrzeuge\classes\fahrzeuge


mit einem Batchfile kannst du das Programm starten
(ich gehe in dem Bsp. davon aus dass die Klasse auto die main Methode enthält)

SET JAVA_HOME=C\jdk1.3.1\jre
SET JAVA_EXE=%JAVA_HOME%\bin\java.exe
SET MAIN_CLASS_NAME=fahrzeuge.auto

SET JVM_ARGS=-ms16m -mx128m -Djdk.home="%JAVA_HOME%"
SET PATH=%JAVA_HOME%\bin;%PATH%

SET CLASS_PATH=%CLASS_PATH%;%JAVA_HOME%\lib\tools.jar

"%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %MAIN_CLASS_NAME%

MrEasy
08.08.2002, 21:52
stimme tweakyou voll und ganz zu, mit ausnahme, dass hier:
SET JAVA_HOME=C\jdk1.3.1\jre
ein doppelpunkt fehlt ;)

theone
09.08.2002, 15:14
VIELEN DANK LEUTE !!!
Habs endlich hinbekommen...
hab den Classpath auf f:\Java zeigen lassen und dann

....extends fahrzeug.StrassenFzg

gemacht.
Nur die Batch file hab ich net so ganz kapiert, was die Java Args machen und so... und weiter unten blick ich au no net so ganz durch... ich kanns ja aber auch einfach mit java.exe ausführen, oder ?

Aber ich glaub so langsam habs auch ich kapiert wie das mit dem classpath funzt...

Dann könnte ich doch aber theoretisch auch

import fahrzeug.StrassenFzg

machen und dann nur

...extends StrassenFzg

oder ?

MrEasy
09.08.2002, 15:34
Original geschrieben von theone
...
Dann könnte ich doch aber theoretisch auch

import fahrzeug.StrassenFzg

machen und dann nur

...extends StrassenFzg

oder ? [/B]

korrekt

theone
10.08.2002, 16:33
Isses eigentlich besser rein Textbasiert zu arbeiten für den Anfang, oder möglichst schnell dann auf JBuilder o.ä. umzusteigen ?
Oder bis wann isses besser im Editor zu arbeiten und ab wann wirds dann eher umständlich ?

tweakyou
10.08.2002, 20:01
hi,

also meines Erachtens ist das auch ein bischen Geschmackssache und zwar wie komplex deine GUI werden sollen. Ich habe mir für verschieden Projekttypen so eine Art Grundgerüste programmiert die ich immer wieder verwende. Wie schon öffters erwähnt programmiere ich mit der IntelliJ IDE diese hat kein grafisches Desingertool für GUIs, also alles handarbeit. Ich habe auch erfahrung mit dem JBuilder 4-7 und kann dir aus Erfahrung sagen dass du nicht einfach hergehen kannst, wie zB. bei VB, und dein GUI zeichnen und anschliessend mit ein bischen Code zu versehen und fertig, es bedarf schon einem erheblich Lernaufwand bis man effizient mit dem Designertool des JBuilders arbeiten kann. Der JBuilder zeigt seine Stärken beim Entwickeln vor allem im Bereich Client/Server und Datenbankanwendungen.
Am einfachsten erstellst du GUIs indem du sie zuerst mal auf Papier zeichnest und dann mit Hilfe von Panels und Layoutmanagern die Komponenten anordnest.

theone
17.08.2002, 15:14
OK. VIELEN DANK LEUTE !

Werd mal ein paar IDEs und so ausprobieren und dann werd ich
- denk ich - schon auch selber irgendwie auf den geschmack kommen... :D

CYA