Aufgabe so richtig gelöst?

Husamoli

Mitglied
Hallo ich bin relativ neu was die Programmierung in Java angeht und hätte da eine Frage..


Schreiben Sie eine main-Methode, die zwei Instanzen
von Hörsaal anlegt. Geben Sie jeweils den Namen des
Hörsaals aus.

das möchte ich gerne erledigen 😱 und das habe ich gemacht ist das Sinngemäß richtig?


Code:
public class hörsallMain {

    public static void main(String[] args) {
        namedeshörsaals("Uwe");
        namedeshörsaals2("Hans",3);
    }
       

         public static void namedeshörsaals(String name){
           
             String namedeshörsaals = name;
             System.out.println("Der Name des Hörsaals lautet " + name);
         }
            public static    void    namedeshörsaals2(String name , int plätze) {
                 String namedeshörsaals2 = name;
                 int p = plätze;
                 System.out.println("Der Name des Hörsaals 2  lautet " +   name   +   "und er hatt" + plätze);
            
            }
 
So sollte man das nicht machen.

Du hast eine Klasse Hörsaal, welche verschiedene Eigenschaften besitzt (unter anderem den Namen).
Java:
public class Hörsaal {
 private String name;

   // Konstruktor der Klasse Hörsaal
   public Hörsaal(String einName) {
   // .... Das darfst du vervolständigen ;)
  }
}

Zusätzlich benötigst du den Konstruktor um dem Hörsaal einen Namen zu geben. Dann kannst du sogenannte "Getter" und "Setter" Methoden implementieren, um den Eigenschaftswert zu verändern (falls nötig).

In einer neuen Klasse, sagen wir "HörsaalMain" erstellst du die main Methode. In dieser Main Methode erstellst du nun zwei Instanzen

Java:
Hörsaal h1 = new Hörsaal("name1"); // Hier wird auf den Kontruktor zugegriffen

h1 ist dann deine Instanzvariable der Klasse Hörsaal.
im Anschluss kannst du h1.getName() aufrufen -> Achtung, die Klasse Hörsaal muss zu zuvor diese Methode implementiert haben.
 
okay...wie gesagt ich bin noch relativ neu..ich habe jetzt das gemacht
Java:
public class hörsaal {

    int Sitzplatz;
    String name;
   
    public hörsaal(String n, int p) {
        name="Hörsaal ESO";
        Sitzplatz=p;
    }
    public hörsaal(String n) {
        name=n;
    }
        public hörsaal(int s) {
            Sitzplatz=s;       
        }
        public hörsaal() {}
   

public static void Nameausgeben()
{
     System.out.println("h1");
}
}




und dazu dann das


public class hörsallMain {

public static void main(String[] args) {
hörsaal.Nameausgeben();




Funktioniert Ja er spuckt den Namen aus aber was ist mit 2 Instanzen gemeint?
 
Gewöhne dir am besten gleich an, Klassen groß und den Rest (Methoden, Variablen etc.) klein zu schreiben. So kann man fremden Code viel schneller lesen.
Instanzen sind das, was bei
Java:
new Hörsaal("name1");
entsteht.

EDIT: die Attribute (sitzplatz, name) sollten als private deklariert werden. Und die Methode nameAusgeben kannst du weglassen. Stattdessen in der Main-Methode einfach System.out.println(h1.getName())
Den Getter musst du noch implementieren.
 
Diese Basics solltest du in Etwa so machen:
Java:
interface IHörsall {
    String getName();
    int getCapacity();
}

class CHörsall implements IHörsall {
    public static void main(String[] args) {
        IHörsall hinstance1 = new CHörsall("C1", 9999);
        IHörsall hinstance2 = new CHörsall("C2", 2);
        System.out.println("hinstance1 name = " + hinstance1.getName());
        System.out.println("hinstance2 name = " + hinstance2.getName());
    }

    String name;
    int capacity;

    public CHörsall(String name, int capacity) {
        this.name = name;
        this.capacity = capacity;
    }

    @Override
    public int getCapacity() {
        return capacity;
    }

    @Override
    public String getName() {
        return name;
    }
}
 
Da es sich um einen Anfänger handelt, halte ich es für etwas übertrieben gleich Interfaces und sonstiges Gedöns aufzufahren. Das wird mit hoher Wahrscheinlichkeit auch nicht erwartet. Eher etwas wie:
Java:
public class Hoersaal
{

    String name;

    public Hoersaal(String name)
    {
        this.name = name;
    }

    public static void main(String[] args)
    {
        Hoersaal instanz1 = new Hoersaal("Hörsaal 1");
        Hoersaal instanz2 = new Hoersaal("Hörsaal 2");

        System.out.println(instanz1.name);
        System.out.println(instanz2.name);
    }
}

Abhängig vom Wissensstand des TE können:
- Hoersaal eine separate Klasse sein
- toString() überschrieben sein.
- Sichtbarkeitsmodifikatoren verwendet werden
- getter/setter Methoden vorhanden sein.
- usw.
 
Sichtbarkeitsmodifikatoren verwendet werden
Du verwendest bereits implizit einen Modifier wusstest du das nicht?...
Hoersaal eine separate Klasse sein
ist es bereits
Wäre schön, anstatt wie du es gemacht hast.

Abhängig vom Wissensstand des TEs könnte:
zwingend "Hörsaal" richtig geschrieben sein,
ein Mindestmaß an Rechtschreiblichkeit eingehalten werden,
und Vieles mehr.
 
die Attribute (sitzplatz, name) sollten als private deklariert werden.

Na ja. Halten tust du dich aber auch nicht an die Regeln 😛

Diese Basics solltest du in Etwa so machen:
Java:
interface IHörsall {
    String getName();
    int getCapacity();
}

class CHörsall implements IHörsall {
    public static void main(String[] args) {
        IHörsall hinstance1 = new CHörsall("C1", 9999);
        IHörsall hinstance2 = new CHörsall("C2", 2);
        System.out.println("hinstance1 name = " + hinstance1.getName());
        System.out.println("hinstance2 name = " + hinstance2.getName());
    }

    String name;
    int capacity;

    public CHörsall(String name, int capacity) {
        this.name = name;
        this.capacity = capacity;
    }

    @Override
    public int getCapacity() {
        return capacity;
    }

    @Override
    public String getName() {
        return name;
    }
}

Und ich finde auch das Interface für dieses Beispiel übertrieben ist. 🙂

Grüße
 

Zurück
Oben