Fehler bei Klassendeklarierung?

Status
Nicht offen für weitere Antworten.

kvlt

Mitglied
Hallo!

Ich bin gerade beim lernen mit dem "Java 6" Buch auf ein Problem gestossen:

[HIGHLIGHT="Java"]class CMitarbeiter {
String m_name;
String m_vorname;
int m_gehalt;

CMitarbeiter(String name, String vorname,
int gehalt) {
m_name = name;
m_vorname = vorname;
m_gehalt = gehalt;
}

void datenAusgeben() {
System.out.println("\n");
System.out.println(" Name : " + m_name);
System.out.println(" Vorname : " + m_vorname);
System.out.println(" Gehalt : " + m_gehalt + " Euro");
}

void gehaltErhoehen(int erhoehung) {
m_gehalt += erhoehung;
}
}

public class CMitarbeiterBeispiel {
public static void main(String[] args) {
// 2 neue Mitarbeiter instanziieren
CMitarbeiter billy = new CMitarbeiter("Gates","Bill",3000);
CMitarbeiter stevie = new CMitarbeiter("Jobs","Steve",3500);

// Daten ausgeben
billy.datenAusgeben();
stevie.datenAusgeben();

// Gehalt von a erhöhen
billy.gehaltErhoehen(500);

// Kontrolle
billy.datenAusgeben();
stevie.datenAusgeben();
}
}
[/HIGHLIGHT]

Das ist jetzt der Original Quelltext aus der Buch CD.
Wenn die Datei CMitarbeiterBeispiel.java heisst, zeigt mir Netbeans bei Zeile 25 das Problem:
class CMitarbeiterBeispiel is public, should be declared in a file named CMitarbeiter.java.

Warum meckert da Netbeans jetzt rum und wie kann ich es zum laufen bekommen?
 

Fu3L

Top Contributor
Die Fehlermeldung sagt doch eigentlich alles: Eine Klasse vor der public steht, muss in einer Datei gespeichert werden die den Klassennamen + ".java" enthält, also in deinem Fall: CMitarbeiterBeispiel.java
 
M

maki

Gast
Dieses Buch kannst du wahrscheinlich wegschmeissen, da stimmen ja nicht mal die Namenskonventionen...

Ansonsten:
Mach doch was der Compiler dir sagt - verwende eine eigene Querlldatei für public Klassen wie CMitarbeiter.
 

Fu3L

Top Contributor
Dieses Buch kannst du wahrscheinlich wegschmeissen, da stimmen ja nicht mal die Namenskonventionen...

Das ist das hier so geliebte Buch von Markt und Technik^^

Aber die haben auch begründet warum man die Variablen, zum Beispiel mit einem m_ davor bennenen soll: Damit man die als Anfänger von lokalen Variablen unterscheiden kann... Ich selbst fand das auch nich so umwerfend, aber hier gibs ja öfters mal fragen, die durch die Verwechslung von lokalen und Membervariablen entstehen...
 
M

maki

Gast
Das ist das hier so geliebte Buch von Markt und Technik^^

Aber die haben auch begründet warum man die Variablen, zum Beispiel mit einem m_ davor bennenen soll: Damit man die als Anfänger von lokalen Variablen unterscheiden kann... Ich selbst fand das auch nich so umwerfend, aber hier gibs ja öfters mal fragen, die durch die Verwechslung von lokalen und Membervariablen entstehen...
Laut Konvention hilft da ein this.

Abgesehen davon glaube ich nicht dass der Author wirklich in Java programmiert hat (zumindest für Geld), CMitarbeiter... pfui... das gibt es nicht in Java.
 

Ebenius

Top Contributor
Abgesehen davon glaube ich nicht dass der Author wirklich in Java programmiert hat (zumindest für Geld), CMitarbeiter... pfui... das gibt es nicht in Java.
Benennungsregeln haben nichts mit der Sprache zu tun. Großbuchstabe für KlassenNamen und Kleinbuchstabe für variablenNamen und methodenNamen ist ein Standard, genauso wie KONSTANTES_KLASSEN_MIETGLIED ungefähr Standard ist. Alles andere richtet sich nunmal nach der Übung der jeweiligen Vereinigung. Ich habe schon in mehreren Projekten gearbeitet, in denen m_memberVariable und p_parameterName und IInterface üblich waren. Warum also nicht auch CClassName? Schön finde ich es nicht, aber eine solche Gewohnheit lässt nicht auf mangelnde Erfahrung im Java-Umfeld schließen.

Ebenius
 

Zed

Bekanntes Mitglied
Da stimme ich Ebenius zu
Ich z.B. verwende für Klasse Xxxxx
für lokale Variablen theXxxxx
für Klassenvariablen xxxxx
für Schleifen eachXxxxx
für Variablen im Methodenkopf aXxxxx

Das ist sehr praktisch weil man sofort die Gültigkeit der Variable erkennt
 

tfa

Top Contributor
Ich habe schon in mehreren Projekten gearbeitet, in denen m_memberVariable und p_parameterName und IInterface üblich waren. Warum also nicht auch CClassName? Schön finde ich es nicht, aber eine solche Gewohnheit lässt nicht auf mangelnde Erfahrung im Java-Umfeld schließen.
Nein. Eher auf mangelnde Erfahrungen im OOP-Umfeld generell.
 
M

maki

Gast
So ein Unsinn. Wenn mich mein Gedächtnis nicht ganz täuscht, ist es im .NET-Umfeld Usus, Interfaces als IInterface zu deklarieren. Warum auch nicht?

Ebenius
Eben.

Die sog. "hungarian" notation, also ein Variablenname in dem der Typ der Variable nochmal vorkommt (gilt auch für Klassen, zB. CObject) ist eine MS Erfindung, und wie wir alle Wissen, ist MS mit dem Teufel im Bunde und Entwickler die die hungarian notation nutzen landen in der Hölle und müssen Windows debuggen...

Jede Sprache hat ihre "Kultur", manches davon wurde geerbt (zB. C/C++), manches wird eben bei einer bestimmten eben Sprache anders praktiziert, dazu gehören auch Konventionen.
So hat Java seine Kultur, dazu gehört aber nicht die hungarian notation.

Klar gibt es Fälle die grenzwertig sind.

Das Interface IInterfaceBla nennen und die Implementierung InterfaceBla, oder lieber das Interface InterfaceBla, dann aber die Implementierung InterfaceBlaImpl?
Ist beides nicht wirklich gut imho,. aber irgendeinen Tod muss man sterben.
 

tfa

Top Contributor
So ein Unsinn. Wenn mich mein Gedächtnis nicht ganz täuscht, ist es im .NET-Umfeld Usus, Interfaces als IInterface zu deklarieren.
Und weil es im .NET-Umfeld so Usus ist, soll es gut sein? So ein Unsinn!
Hier gibt es viel Mist, ebenso wie es in Java viel Mist gibt.

Warum auch nicht?
Warum? Wo sollte der Vorteil sein, ein I vor Interface-Namen zu machen? Typ ist Typ, ob das jetzt ein Interface, eine abstrakte oder nicht-abstrakte Klasse ist, ist völlig egal.
In meinem Projekt sind beispielsweise praktische für alle Fachklassen, Service-Klassen, DAO-Klassen usw. ein Interfaces definiert, und nur gegen diese Schnittstellen wird programmiert. Die Implementierungen auf Client und Server können sich unterscheiden, manchmal sind es nur synthetische Proxy-Klassen, die nur zur Laufzeit existieren.
Warum sollte ich jetzt überall ein I davor schreiben? Meiner Meinung nach ist das nur ein Überbleibsel der unsäglichen ungarischen Notation. Außerdem zeigt jede halbwegs vernünftige IDE an, was ein Interface ist und was nicht.
 
Zuletzt bearbeitet:

Ebenius

Top Contributor
Und weil es im .NET-Umfeld so Usus ist, soll es gut sein?
Habe ich das gesagt? Zitier mich! ;)

Wo sollte der Vorteil sein, ein I vor Interface-Namen zu machen?
Ich sehe da für meine Projekte keinen Vorteil und benutze aus diesem Grund überhaupt keine Präfixe in Java. Unsinn ist lediglich die Schlussfolgerung, dass jemand der in einem Projekt oder Framework Nomenklaturregeln erlässt die Dir (und mir gleichermaßen) nicht gefallen keine Ahnung von OOP haben kann. Entschuldigung, wenn ich das nicht klar ausgedrückt hatte.

Ungeachtet dessen: Für einen Anfänger der ein Buch liest in dem Quelltext nicht farbig hervorgehoben wird, finde ich diese vom üblichen Konzept abweichenden, klaren Benennungsregeln eher verständnisfördernd. Immerhin hat der Autor erklärt, warum er sich an in der Realität unübliche Nomenklaturen hält. Nämlich um dem ungeübten Anfänger den Aufwand zu ersparen, sich auch noch über die Herkunft eines Bezeichners in einem Quelltext Gedanken machen zu müssen, wenn seine Aufmerksamkeit eigentlich einem anderen Problem gelten soll. Ob der Autor nun in Projekten seine Klassennamen ebenfalls mit einem 'C'-Prefix schreibt lässt sich bezweifeln. :)

Ebenius
 
Zuletzt bearbeitet:

tfa

Top Contributor
Unsinn ist lediglich die Schlussfolgerung, dass jemand der in einem Projekt oder Framework Nomenklaturregeln erlässt die Dir (und mir gleichermaßen) nicht gefallen keine Ahnung von OOP haben kann.
Das sehe ich anders. "Keine Ahnung" ist vielleicht zu hart ausgedrückt. Nenn es halt "Anzeichen für Defizite".

Ungeachtet dessen: Für einen Anfänger der ein Buch liest in dem Quelltext nicht farbig hervorgehoben wird, finde ich diese vom üblichen Konzept abweichenden, klaren Benennungsregeln eher verständnisfördernd. Immerhin hat der Autor erklärt, warum er sich an in der Realität unübliche Nomenklaturen hält. Nämlich um dem ungeübten Anfänger den Aufwand zu ersparen, sich auch noch über die Herkunft eines Bezeichners in einem Quelltext Gedanken machen zu müssen, wenn seine Aufmerksamkeit eigentlich einem anderen Problem gelten soll. Ob der Autor nun in Projekten seine Klassennamen ebenfalls mit einem 'C'-Prefix schreibt lässt sich bezweifeln. :)
Kann sein. Kann auch sein, dass dieser Autor seine Leser einfach nur für dumm hält. Ich kenne jedenfalls kein anderes Buch, in dem das so gemacht wird.
 

Noctarius

Top Contributor
Ich denke es ist fast egal ob man ISomeInterface und dann SomeInterface als Implementierung des Interfaces macht oder SomeInterface und SomeInterfaceImpl, abgesehen davon gibt es auch AbstractSomeInterfaceImpl ;)

Was daran schön, unschön oder abartig aussieht sollte Jedem selbst überlassen sein, wobei ich sagen muss CSomeClass is irgendwie wirklich unschön und erinnert mich an meine verdrängten C++ Zeiten zurück ;)
 

Leroy42

Top Contributor
Das ist das hier so geliebte Buch von Markt und Technik^^

Aber die haben auch begründet warum man die Variablen, zum Beispiel mit einem m_ davor bennenen soll: Damit man die als Anfänger von lokalen Variablen unterscheiden kann... Ich selbst fand das auch nich so umwerfend, aber hier gibs ja öfters mal fragen, die durch die Verwechslung von lokalen und Membervariablen entstehen...


Aha! Markt und Technik!

Da haben wir ja den Übeltäter :)

Die sog. "hungarian" notation, also ein Variablenname in dem der Typ der Variable nochmal vorkommt (gilt auch für Klassen, zB. CObject) ist eine MS Erfindung, und wie wir alle Wissen, ist MS mit dem Teufel im Bunde und Entwickler die die hungarian notation nutzen landen in der Hölle und müssen Windows debuggen...

... und Wiederholungstäter müssen gar eine Windows-Nachfolgerversion mit entwickeln! :cool:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Sikuli Thread Fehler Java Basics - Anfänger-Themen 3
hubmar Fehler beim mp4-datei aufrufen, nach dem zweiten aufruf Java Basics - Anfänger-Themen 1
Z Artifacts IntelliJ Fehler Java Basics - Anfänger-Themen 10
L Beginner-Fehler Java Basics - Anfänger-Themen 2
G FileChannel (inChannel/outChanel) Fehler wenn Leerzeichen enthalten Java Basics - Anfänger-Themen 17
F Kann mir jemand bei dem Fehler helfen? Java Basics - Anfänger-Themen 6
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
E Matrizenmultiplikation Fehler Java Basics - Anfänger-Themen 0
Z Fehler Zeiterfassungsprogramm Anzeige Java Basics - Anfänger-Themen 3
C SwingWorker mit Fehler Java Basics - Anfänger-Themen 2
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
G Compiler-Fehler Fehler in Zeile 1 beheben, wie? Java Basics - Anfänger-Themen 9
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
Fiedelbambu deriveFont Fehler wer kann Helfen? Java Basics - Anfänger-Themen 4
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
D Datentypen LocalDate.parse() ergibt Fehler Java Basics - Anfänger-Themen 5
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
L Ich weis nicht was der Fehler ist! Java Basics - Anfänger-Themen 14
L30nS JNI Fehler, JRE und JDK Java Basics - Anfänger-Themen 8
E Executable jar file fehler Java Basics - Anfänger-Themen 9
S Fehler beim Programm Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
J Syntax-Fehler? Java Basics - Anfänger-Themen 2
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
I Fehler bei for-Schleife Java Basics - Anfänger-Themen 6
lol5443 Tic Tac Toe Fehler Java Basics - Anfänger-Themen 5
K Fehler bei der Implementierung Java Basics - Anfänger-Themen 6
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
N Was bedeutet dieser Fehler Java Basics - Anfänger-Themen 2
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
Lion.King Fehler Java Basics - Anfänger-Themen 5
AlexG. Nullpointer exeption Fehler Java Basics - Anfänger-Themen 0
C Fehler im Code Java Basics - Anfänger-Themen 10
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
V Wer findet den Fehler :) Java Basics - Anfänger-Themen 12
B ArrayIndexOutOfBoundsException, ich finde den Fehler nicht? Java Basics - Anfänger-Themen 10
A Compiler Fehler - not a statement Java Basics - Anfänger-Themen 2
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
T Fehler in Caesar-Chiffre Java Basics - Anfänger-Themen 7
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
B Nicht reproduzierbarer Fehler bei Kompilierung - Shortcut "Bereinigung" Compiler ? Java Basics - Anfänger-Themen 4
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
pumpgun99 Fehler Meldung "else without if" Java Basics - Anfänger-Themen 3
P Was bedeutet dieser Fehler? Java Basics - Anfänger-Themen 31
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 5
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
R Ich sehe meinen fehler nicht Java Basics - Anfänger-Themen 8
Johannes_ece Fehler: Application Terminated (TypeError): var$0.$moveToolTo is not a function Java Basics - Anfänger-Themen 4
GermanPie Fehler in Putty (kein Hauptmanifestattribut, in jar) Java Basics - Anfänger-Themen 4
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
P Methoden aufrufen - Fehler Java Basics - Anfänger-Themen 20
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
B if Clause Fehler Java Basics - Anfänger-Themen 2
G Fibonacci Zahlenreihe Fehler Java Basics - Anfänger-Themen 4
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
B Fehler, aber ich weiß nicht warum Java Basics - Anfänger-Themen 3
C system cannot be resolved Fehler in Eclipse Java Basics - Anfänger-Themen 18
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
M While-Schleifen-Fehler Java Basics - Anfänger-Themen 4
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
C Projekte in 2 versch. Arbeitsbereichen: auf ein Projekt verweisen (ohne Fehler zu bekommen) Java Basics - Anfänger-Themen 8
R Java SQL Fehler! Java Basics - Anfänger-Themen 4
L non-static Fehler Java Basics - Anfänger-Themen 16
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
L Methoden Wie Löse ich ext Methoden Aufruf Fehler? Java Basics - Anfänger-Themen 3
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
C Fehler bei der Compilierung Java Basics - Anfänger-Themen 1
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4
S Warum dieser Fehler? Java Basics - Anfänger-Themen 1
B Fehler bei Ausführung Java Basics - Anfänger-Themen 5
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
L Wo ist der Fehler? Java Basics - Anfänger-Themen 87
J Fehler in Programm: Index -1 out of bounds for length 0 Java Basics - Anfänger-Themen 5
M JOptionPane Fehler bei "Abbrechen" des Fensters Java Basics - Anfänger-Themen 10
N Fehler bei string Attribut! Java Basics - Anfänger-Themen 18
W Wo liegt der Fehler? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen


Oben