Klassen Klasse oder nicht Klasse - das ist hier die Frage

sprottenwels

Neues Mitglied
Hallo Gemeinde,

Bevor ich zu meiner eigentlichen Frage komme ein kurze Info, von der ich denke sie könnte zum Beantworten nützlich sein:

Ich bin Berufseinsteiger Fachrichtung FIAE und beschäftige mich derzeit im Betrieb mit VB 6.0 und VB.net. Von daher bin ich es gewohnt Anwendungen schnell zusammen zuklicken und "einfach drauflos" zu programmieren.

Nun gefällt mir aber weder die Sprache noch der Stil den ich pflege und daher möchte ich mich privat in Java einarbeiten. Gesagt getan, ich lese das Buch "Java ist auch eine Insel".

Nun meine Frage: ich verstehe zwar das Grundprinzip der Objektorientierung, jedoch fällt es mir sehr schwer das ganze auf ein reales Projekt anzuwenden. Ich bin unsicher in welchen Fällen es Sinnvoll ist eine Klasse zu deklarieren und wann nicht, wie allgemein diese gehalten werden sollten und ähnliches.

Zum Beispiel:
Nehmen wir an es soll ein Spiel programmiert werden bei dem 2 Armeen gegeneinander antreten. Jede Armee hat verschiedene Arten von Kämpfern welche unterschiedliche Aktionen ausführen können.

Deklariere ich nun eine allgemeine Klasse "Armee" oder lieber doch 2 ("Armee Rot", "Armee Blau")?
Oder lasse ich die Armeeklasse ganz weg und füge stattdessen nur eine Klasse "Soldaten" hinzu? Als dritte Möglichkeit fiele mir ein sowohl eine Armeeklasse, als auch eine Klasse für jeden verschiedenen Soldatentyp zu erstellen. Das erscheint mir dann aber doch wieder sehr überladen.

Ich hoffe mein Grundproblem wird deutlich, jedenfalls bedanke ich mich im Voraus schonmal bei allen Helfern :)
 
M

Marcinek

Gast
Hallo,

leider hast du die objektorientierung nicht verstanden.

Eine Armee rot und blau sind instanzen einer Klasse Armee.

Du musst immer eine Klasse in Java machen, von daher braucht man sich nicht zu überlegen, ob man das will oder nicht.

Wenn du zwei unterschiedliche Verhalten hast, dann wirst du zwei Klassen haben, wenn diese gleiche Verhalten haben, werden sie von einer KLasse erben.

Tipp: Versuche das Beispiel mit den Tieren zu implementieren.

Hunde und Katzen sind Tiere und und alle sollen gibLaut() jeweils ihre Laute auf der Konsole ausgeben.

Gruß,

MArtin
 

julian.veh

Bekanntes Mitglied
Ich würde denke ich, je nachdem wie stark sich die Kämpfer unterscheiden erstmal eine Grundlasse für Kämpfer schreiben. In dieser sind dann die Attribute Name, Art und Angriffsstärke enthalten. Wenn es noch was besonderes wie Panzer gibt, können diese Klassen ja auch von Kämpfer erben ^^. Dann eine Klasse Armee in der die Anzahl von jeweiligen Kämpeypen enthalten ist. Und dann eine Klasse Schlacht, wo die Party steigt^^.

Gruß

|edit:

Und von der Klasse Armee erzeugst du erstmal zwei Objekte, in denen du dann wieder ganz viele Objekte der Klasse Kämpfer erzeugst ^^.
 
Zuletzt bearbeitet:

sprottenwels

Neues Mitglied
Bis hierhin schonmal Danke.

Bleiben wir kurz bei dem Beispiel Tiere.

Meine Lösung wäre dann bis jetzt:

Java:
public class Animals {

    String name, age, legs, call ;

   void Call() {

        System.out.println(call) ;

    }

Java:
public class testproject {

	public static void main(String[] args) {

		
	
		Animals Dog = new Animals() ;
		
		
		Dog.call = "Woof" ;
                Dog.Call() ;


	}

}

Was aber, wenn nun noch ein zweiter Hund dazu käme, der statt "Woof", "Weef" macht? Und ein Vogel der piept.
Klar, ich könnte

Animals Bello, Fiffi, Peter ;

deklarieren und die Attribute jeweils passend zuordnen.

Aber wäre es nicht sinnvoller in der Klasse "Animals" jeweils eine Unterklasse "Dogs" und "Birds" anzulegen? Damit sollte es dann doch möglich sein etwas wie

Animals.Dogs Fiffi = new Animals.Dogs() ;

zu schreiben, was im Vergleich zu

Animals Fiffi = new Animals() ;

deutlicher wäre, weil so sofort klar ist dass es sich um einen Hund und nicht um einen Vogel handelt, oder?
 
G

guest2787

Gast
Ich frage mich allen Ernstes wie du mit derart wenig Ahnung von Programmierung eine Ausbildung zum FIAE erfolgreich abgeschlossen haben sollst ...
 

julian.veh

Bekanntes Mitglied
Java:
public class Animals {
 
private String name, age, legs, call ;
 
public Animals(String name, String age, String legs, String call){
this.name = name;
this.age = age;
this.legs = legs;
this.call = call;
}
public String getCall(){            
return call;
}
public String getAge(){
return age;
}
public String getLegs(){
return legs;
}
public void setCall(String call){
this.call = call;
}
}

Java:
public class Testproject {      //Klassennamen groß, Methodennamen klein 
 
    public static void main(String[] args) {
 
        
    
        Animals dog = new Animals("bello", "7", "4", "wuff") ;  //Bezeichner klein
        System.out.println("Animals name is: " + dog.getName());
        dog.setCall(wau);
        System.out.println("Animals call is: " + dog.getCall());
 
 
    }
 
}

:) Hilft dir das? Müsste stimmen ^^

||edit: Wenn du nämlich im Konstruktor den namen oder die art oder was auch immer mitlieferst, ist es auch direkt klar ^^
 
Zuletzt bearbeitet:

Vancold

Aktives Mitglied
Zum Beispiel:
Nehmen wir an es soll ein Spiel programmiert werden bei dem 2 Armeen gegeneinander antreten. Jede Armee hat verschiedene Arten von Kämpfern welche unterschiedliche Aktionen ausführen können.

Deklariere ich nun eine allgemeine Klasse "Armee" oder lieber doch 2 ("Armee Rot", "Armee Blau")?
Oder lasse ich die Armeeklasse ganz weg und füge stattdessen nur eine Klasse "Soldaten" hinzu? Als dritte Möglichkeit fiele mir ein sowohl eine Armeeklasse, als auch eine Klasse für jeden verschiedenen Soldatentyp zu erstellen. Das erscheint mir dann aber doch wieder sehr überladen.

Ich hoffe mein Grundproblem wird deutlich, jedenfalls bedanke ich mich im Voraus schonmal bei allen Helfern :)


OK.

Ich arbeite mal deine Fragestellung so ab wie ich es normal mache.
(Ich gehe von einer Mittelalterarmee aus machts einfacher!)

Mein Ansatz wäre folgender Gedanke. Mal davon abgesehen würde ich Arme nicht als Klasse ausarbeiten. Du müsstet die Armee eher so gestalten das es nur ein Zugehörigkeitswert ist.
Stell dir halt vor.

Es gibt eine Klasse Einheit. Diese besitzt die Grundeigenschaft.
Daraus leitest du die einzelnen anderen Einheiten ab (z.b Soldat, Bogenschütze, Reiter, ect).

Diese haben alle besondere Eigentschaften die sie auszeichnen. Darum sind sie auch nicht Einheiten mehr per se sie sind mehr eine Erweitung der Einheit.

D.h eine Einheit hat grob gesagt einen Einheitstyp,Aussehen, Angriffart,Schaden, Bewegungsgeschwindigkeit usw.
(nur beispiele)

Warum also diese ganze Klassen erschafferei?
Damit du verschiedene Einheiten erzeugen kannst.
Du schaffst dir eine Schablone und baust die Einheiten daraus die du willst.
Der Sinn ist einfach das du eine Vorgabe hast die jede Einheit braucht damit sie funktioniert.
D.h alles was von dieser Hauptklasse erbt hat alle Grundeigentschaften, die Besonderheiten schreibst du dann in die entsprechende Subklasse.

So was heißt also Subklasse und Hauptklasse? ganz einfach gesagt vererbst du die Klasse.

D.h die Klasse Soldat erbt alle Eigentschaften und Methoden von Einheit. (lies dir dazu was durch ist eig. ganz einfach)
Merk dir das Schlüsselwort extends einfach.
Der Klassenheader schaut nämlich dann so aus:

Java:
public class Soldat extends Einheit {

Dieses Schlüsselwort extends gibt nämlich alles von Einheit weiter an Soldat!
So weiter im Kontext =)

Wie du die Armee ansich darstellst? (also damit man weiß welche Armee es ist)
Gruppier die Objekte einfach. du kannst eine Group erstellen, sie in ein Array speichern, what ever.
Es muss nur für dich sichtlich sein das du weißt welche Einheit zu welcher Armee gehört.


Also als Zusammenfassung:

- Grundklasse Einheit (dient als Schablone für alle Arten für Soldaten)
- Die einzelnen Einheiten demnach erstellen; D.h du erstellst neue Klassen die erben
(es kann auch sein das ein Reiter 2 Subklassen hat; nämlich Reiter mit Schwert und Reiter mit Bogen)
- Eine Art Container für die Einheiten erstellen
(soll die Armee darstellen; Kann ein Array sein, eine Collection oder was dir im Kopf rumschwebt)

Hoffe das beantwortet deine Frage :)
(war ja ganz schön viel Text)


lg

Rene

PS: Mit Group meine ich keine spezifische Klasse sondern mehr eine Klasse die du zur Gruppierung erfindest, erstellst ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
CptK Vererbung Attributtyp in Super-Klasse noch nicht festlegen Java Basics - Anfänger-Themen 1
C Methoden können nicht auf Instanzvariable der Klasse zugreifen Java Basics - Anfänger-Themen 3
B Erste Schritte Guice Injection nicht in jeder Klasse möglich Java Basics - Anfänger-Themen 2
N Klassen Warum kann meine Klasse nicht auf Methoden der anderen Klasse zugreifen? Java Basics - Anfänger-Themen 6
M Objekt einer Klasse speichert die Veränderung nicht Java Basics - Anfänger-Themen 1
J Compiler-Fehler Java findet main Klasse nicht Java Basics - Anfänger-Themen 16
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
T Methode in Klasse funktioniert nicht Java Basics - Anfänger-Themen 14
C Gui- Klasse erkennt Übergabeparameter aus Methode nicht Java Basics - Anfänger-Themen 4
M Klassen Methode aus anderer Klasse nicht aufrufbar Java Basics - Anfänger-Themen 11
R Hauptmethode in Klasse nicht gefunden. Java Basics - Anfänger-Themen 17
C Klasse funktioniert nicht Java Basics - Anfänger-Themen 2
U Klassen IntelliJ14.1.1 Ultimate startet eine Main-Klasse NICHT MEHR Java Basics - Anfänger-Themen 0
C Hauptmethode in Klasse nicht gefunden Java Basics - Anfänger-Themen 3
D Methoden g.setColor funktioniert nicht bei Methodenaufruf in anderer Klasse Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Klasse kann nicht gefunden werden. Java Basics - Anfänger-Themen 2
S Classpath Findet die Klasse nicht classpath setzen? Java Basics - Anfänger-Themen 8
P Programm lässt sich nicht starten - Klasse mit Hauptmethode nicht gefunden Java Basics - Anfänger-Themen 9
Avarion Getter von Super-Klasse funktioniert nicht Java Basics - Anfänger-Themen 10
A Compiler-Fehler Hauptmethode in Klasse nicht gefunden! Java Basics - Anfänger-Themen 3
K Klasse console.InputHelper.readString() nicht utzbar Java Basics - Anfänger-Themen 3
R Hashmap in anderer Klasse nicht benutzbar Java Basics - Anfänger-Themen 1
A Erste Schritte Wieso funktioniert diese Klasse nicht Java Basics - Anfänger-Themen 11
S Applet findet Klasse nicht Java Basics - Anfänger-Themen 7
V Aufrufendes Objekt bestimmen (nicht die Klasse) Java Basics - Anfänger-Themen 3
P ArrayList aus eigener Klasse "überschreibt" Werte nicht Java Basics - Anfänger-Themen 4
D Compiler-Fehler Klasse wird im selben Ordner nicht gefunden Java Basics - Anfänger-Themen 5
W Klassen Kann eine Variable nicht aus einer Klasse bekommen Java Basics - Anfänger-Themen 9
W Klasse wird nicht gefunden Java Basics - Anfänger-Themen 8
J "public int x" - Zugriff von anderer Klasse (selbes Package) nicht möglich?! Java Basics - Anfänger-Themen 4
K Klasse wird nicht gefunden Java Basics - Anfänger-Themen 11
T Generisches Feld in nicht-generischer Klasse möglich? Java Basics - Anfänger-Themen 5
H HashMap<Int, String> - Er findet die Int-Klasse nicht. Java Basics - Anfänger-Themen 3
K Klassen Meine Klasse wird nicht anerkannt Java Basics - Anfänger-Themen 7
T fenster schliesen und mouse events in einer nicht abstrakten klasse Java Basics - Anfänger-Themen 6
A Ein Array aus einer Klasse wird nicht sauber abgefüllt Java Basics - Anfänger-Themen 4
L main-Klasse kann nicht gefunden werden Java Basics - Anfänger-Themen 5
F Neue Klasse mag nicht - nullPointerException Java Basics - Anfänger-Themen 6
F Spiel geht nicht mehr nach neuer Klasse Sound Java Basics - Anfänger-Themen 18
X Extrahieren in Externe Klasse Funktioniert nicht Java Basics - Anfänger-Themen 6
N Serialization, Laden klappt nicht wenn die Klasse geändert wurde Java Basics - Anfänger-Themen 3
J erstes Prog./Klasse - Konstruktur/Objekterstellung funktioniert nicht Java Basics - Anfänger-Themen 25
StupidAttack Abstrakte Methoden in nicht-abstrakter Methode in abstrakter Klasse Java Basics - Anfänger-Themen 6
C Eigenschaften außerhalb einer Klasse nicht sichtbar Java Basics - Anfänger-Themen 13
J Klasse wird nicht vererb (extend funzt nicht??) Java Basics - Anfänger-Themen 11
Developer_X Klasse kann nicht aufgerufen werden Java Basics - Anfänger-Themen 17
G Innere Klasse static oder nicht Java Basics - Anfänger-Themen 9
D Klasse nicht kompilierbar Java Basics - Anfänger-Themen 23
G Klasse mit Timer nicht beenden Java Basics - Anfänger-Themen 6
G Klasse kann nicht importiert werden. Java Basics - Anfänger-Themen 2
W Selbstgeschriebene klasse kann nicht eingebunden werden. Java Basics - Anfänger-Themen 6
G Netbeans: Klasse wird bei Run der Main Klasse nicht gefunden Java Basics - Anfänger-Themen 2
G Fehlermeldung zu Klasse die es nicht gibt Java Basics - Anfänger-Themen 3
B eigene Klasse wird nicht im Hauptprogramm erkannt! Java Basics - Anfänger-Themen 4
W zugriff auf jframe klasse und deren instanz geht nicht? Java Basics - Anfänger-Themen 11
I ClassLoader fiindet Klasse nicht Java Basics - Anfänger-Themen 3
M öffentliche nicht-statische Funktion fremder Klasse ausführn Java Basics - Anfänger-Themen 16
G Anwendung findet vorhandene Klasse nicht Java Basics - Anfänger-Themen 4
Y Main Klasse in Konsole ausführen klappt nicht Java Basics - Anfänger-Themen 7
N Mein Applet findet -online- einfach die Klasse nicht ! Java Basics - Anfänger-Themen 6
D Klasse speichert Daten nicht wie sie soll Java Basics - Anfänger-Themen 4
R Klasse nicht sichtbar(kein private-Fehler) Java Basics - Anfänger-Themen 2
S Klasse wird nicht mehr gefunden Java Basics - Anfänger-Themen 3
S Field einer abstrakten Klasse wird nicht gesetzt Java Basics - Anfänger-Themen 2
P Zugriff auf Instanz in der anderen Klasse geht nicht! Java Basics - Anfänger-Themen 4
G Kann methode aus anderer Klasse nicht aufrufen Java Basics - Anfänger-Themen 7
S Klasse Scanner unter Java nicht gefunden Java Basics - Anfänger-Themen 3
B Finde Methode einer Klasse nicht Java Basics - Anfänger-Themen 4
H Konstruktur von der eingebetteten Klasse wird nicht gefunden Java Basics - Anfänger-Themen 2
R Klasse aus Packet kann nicht außerhalb zugreifen Java Basics - Anfänger-Themen 8
V Eclipse findet (meines Wissens) korrekte Klasse nicht Java Basics - Anfänger-Themen 3
G Public class??? Findet meine Klasse nicht. Java Basics - Anfänger-Themen 5
I @Inject in normaler Klasse? Java Basics - Anfänger-Themen 4
P Enum oder normale Klasse? Java Basics - Anfänger-Themen 10
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
Amina556 Eigene Klasse definieren Java Basics - Anfänger-Themen 9
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Klasse in Runden Klammern bei Objektimplementierung Java Basics - Anfänger-Themen 4
J Klassen Klasse als Komponententyp bei Feldern Java Basics - Anfänger-Themen 2
J Klassen Instanzen einer Klasse in einer anderen unabhängigen Klasse nutzen Java Basics - Anfänger-Themen 4
Detlef Bosau nichtstatische Innere Klasse, this Pointer. Java Basics - Anfänger-Themen 47
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
frager2345 Optional Klasse Java Java Basics - Anfänger-Themen 2
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
H Klassen Typ und Intitialisierungs-Klasse, wer bestimmt was? Java Basics - Anfänger-Themen 1
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben