OOP Geschenkpapier

coldstone

Bekanntes Mitglied
Hallo liebe freunde,

ich muss 3 Geschenkpapiere mit verschiedenen Mustern und je unterschiedlichen schleifenarten erstellen.

Habe ich so gemacht:

Java:
public class geschenkpapier1 {
     public static void main(String[] args) {
         
    	// Zahl der Sternchen
    	 int z1 = 9;	
    	 int z2 = 9;
    	 int z3 = 9;	
    	 int z4 = 9;
    	 int z5 = 9;
    	// Zaehler von 1 bis max
    	 int i = 1;		
         int f =1;
         int g = 1;		
         int h =1;
         int t =1;
         
         System.out.println();
         while(i <= z1) {
             System.out.print("**  ");
             i = i + 1;
         }
         System.out.println();
         while(f <= z2) {
             System.out.print("**  ");
             f = f + 1;
         }
         System.out.println();
         while(g <= z3) {
             System.out.print("**  ");
             g = g + 1;
         }
         System.out.println();
         while(h <= z4) {
             System.out.print("**  ");
             h = h + 1;
         }
         System.out.println();
         while(t <= z5) {
             System.out.print("**  ");
             t = t + 1;
         }
         System.out.println();
     }
 }

Java:
public class geschenkpapier2 {

	 public static void main(String[] args) {
	        int zahl = 0;
	        int zahl1 = 0;
	        int zahl2 = 0;
	        int zahl3 = 0;
	        
	        System.out.println ();
	        
	        do {
	            System.out.print("=W=  ");
	            zahl = zahl + 1;
	        } while (zahl < 9);

	        System.out.println ();
	        
	        do {
	            System.out.print("  =W=");
	            zahl1 = zahl1 + 1;
	        } while (zahl1 < 9);
	        
	        System.out.println ();
	        
	        do {
	            System.out.print("=W=  ");
	            zahl2 = zahl2 + 1;
	        } while (zahl2 < 9);
	   
	        System.out.println ();
	        
	        do {
	            System.out.print("  =W=");
	            zahl3 = zahl3 + 1;
	        } while (zahl3 < 9);
	        
	        System.out.println ();
	 
	 }
}

Java:
public class geschenkpapier3 {
	
	public static void main (String[] args) {
	
	

	System.out.println();
		
	for (int zahl1 = 0; zahl1<9; zahl1++) {
		System.out.print(":-)");
		          }
	System.out.println();
	
	for (int zahl1 = 0; zahl1<9; zahl1++) {
        System.out.print("(-:");
    }

	System.out.println();
	
	for (int zahl1 = 0; zahl1<9; zahl1++) {
        System.out.print(":-)");
    }
	
	System.out.println();
		
	for (int zahl1 = 0; zahl1<9; zahl1++) {
	    System.out.print("(-:");
	    }

	System.out.println();
}
}

Nun besteh die Aufgabe darin eine testklasse zu erstellen, in der der Programmbenutzer ein Muster auswählen kann.

Hab ich auch angefangen wie folgt:

Java:
import vfh.prog1.bib.Konsole;


public class geschenkpapier {
	
	public static void main (String[] args) {
	
		int zahl;
		
		System.out.println("Bitte wählen Sie zwischen folgenden Geschenkpapieren:");
		System.out.println ("1. Geschenkpapier mit Muster ---->  ** ** ** **");
		System.out.println ("2. Geschenkpapier mit Muster ---->  =W=  =W=  =W=  =W=");
		System.out.println ("1. Geschenkpapier mit Muster ---->  :-) :-) :-) :-)");
		
		zahl = Konsole.getInputInt();
		
		if (zahl == 1) {
		   ????????????
	       ????????????
		
		}
			
	}
	
	
	
}

Wie kann ich denn die einzelnen Klassen starten lassen?
Vielen dank im voraus.

mfg
 
Zuletzt bearbeitet von einem Moderator:

XHelp

Top Contributor
Du könntest zwar die main-Methode manuell aufrufen, aber du solltest es lassen. Schreib dir dafür eigene Methoden, wie
Code:
String getMuster()
. Und es könnte sinnvoll sein dir an dieser Stelle Stichwort "Interface" anzuschauen.
 

Dit

Bekanntes Mitglied
Starten lassen....

üblicherweiße hat man nur eine "Main-Methode" in seinem Programm.
Du kannst Klassen mit dem "new" Operator erzeugen, am besten ist es dann, wenn du dort eine Methode implementierst, die dir deinen Programm Code ausführt (Beispiel: Methode "run")

Wie schon gesagt, macht hier ein Interface sehr viel Sinn. Dann kannst du in deinem Hauptprogramm sagen "Wenn zahl X, dann Methode Y". Wenn alle das gleiche Interface benutzen, kannst du davon ausgehen, dass alle diese Klassen die Methoden des Interfaces haben. Daher kannst du dich dann in deiner Laufklasse auf Interface (allgemeingültig) ebene bewegen, ohne dich auf eines der speziellen Geschenkpapiere zu beziehen
 
Zuletzt bearbeitet:

coldstone

Bekanntes Mitglied
Kann ich denn geschenkpapier1, geschenkpapier2 und geschenkpapier3 in nur einer klasse erzeugen?
Denn die Aufgabe heist eigentlich "Erzeugen Sie eine Klasse Geschenkpapier mit drei verschiedenen Mustern und erstelen sie danach eine Testklasse Testgeschenkpapier indem der Nutzer selbst auswählen kann welches Muster er haben will."

Und kann ich denn nicht einfach sagen:

if (zahl == 1) {

starte geschenkpapier1
}
if (zahl == 2)

starte geschenpapier2

}
if (zahl == 3)
{
starte geschenpapier2

else {

System.out.println (" Fehler")


oder so ähnlich....

vielen dank für eure hilfe
 

Michael...

Top Contributor
Ja, man kann.
In Deinen Klassen hast Du je letztendlich nur main Methoden, deren Inhalt könntest Du genauso gut in Methoden einer gemeinsamen Klasse Geschenkpapier definieren. In der Testklasse mit der main, kannst Du dann anhand von Eingabewerten entscheiden welche der Methoden aufgerufen wird.
 

mariusbopp

Bekanntes Mitglied
ich denke aber eine switch anweisung wäre in dem fall eleganter wenn du es über zahleneingabe realisieren willst!

Java:
switch (ausdruck)
                {
                  case 1:
                     papier 1;
                  case 2:
                     papier 2;
                  case 3:
                     papier 3;
                  ...
                  ...
                
                  default:
                     kein geschenkpapier vorhanden//oder was auch immer
                }
 

timbeau

Gesperrter Benutzer
@ColdStone:

Wenn ich deine Aufgabe richtig verstehe müsstest du innerhalb 1 Klasse Geschenkpapier das Muster auswählen können.

Das kannst du z.B. machen in dem du den Konstruktor von der Klasse mit der int-Variablen der Eingabe fütterst.

Java:
public Geschenkpapier(int muster) {
switch() {

Methode mit Muster1

oder 

Methode mit Muster2

oder

Methode mit Muster3

}

}

Und in Geschenkpapier dann entweder 3 Methoden die dir einen String wiedergeben oder eine Methode die ebenfalls abhängig von der Eingabe einen bestimmten String wiedergibt
 

coldstone

Bekanntes Mitglied
Ok,

aber ich weis jetzt nicht wie ich die drei methoden Geschenkpaier 1, 2 und 3 in einer Klasse mit dem Namen Geschenkpapier unterbringe.

Überlegung währe:

Java:
 public class geschenkpapier {
     
      public static void main geschenkpapier1(String[] args) {
         
    	// Zahl der Sternchen
    	 int z1 = 9;	
    	 int z2 = 9;
    	 int z3 = 9;	
    	 int z4 = 9;
    	 int z5 = 9;
    	// Zaehler von 1 bis max
    	 int i = 1;		
         int f =1;
         int g = 1;		
         int h =1;
         int t =1;
         
         System.out.println();
         while(i <= z1) {
             System.out.print("**  ");
             i = i + 1;
         }
         System.out.println();
         while(f <= z2) {
             System.out.print("**  ");
             f = f + 1;
         }
         System.out.println();
         while(g <= z3) {
             System.out.print("**  ");
             g = g + 1;
         }
         System.out.println();
         while(h <= z4) {
             System.out.print("**  ");
             h = h + 1;
         }
         System.out.println();
         while(t <= z5) {
             System.out.print("**  ");
             t = t + 1;
         }
         System.out.println();
     }

        public static void main geschenkpapier2(String[] args) {
	        int zahl = 0;
	        int zahl1 = 0;
	        int zahl2 = 0;
	        int zahl3 = 0;
	        
	        System.out.println ();
	        
	        do {
	            System.out.print("=W=  ");
	            zahl = zahl + 1;
	        } while (zahl < 9);

	        System.out.println ();
	        
	        do {
	            System.out.print("  =W=");
	            zahl1 = zahl1 + 1;
	        } while (zahl1 < 9);
	        
	        System.out.println ();
	        
	        do {
	            System.out.print("=W=  ");
	            zahl2 = zahl2 + 1;
	        } while (zahl2 < 9);
	   
	        System.out.println ();
	        
	        do {
	            System.out.print("  =W=");
	            zahl3 = zahl3 + 1;
	        } while (zahl3 < 9);
	        
	        System.out.println ();
	 
	 }

       	public static void main geschenkpapier3(String[] args) {
	
	

	System.out.println();
		
	for (int zahl1 = 0; zahl1<9; zahl1++) {
		System.out.print(":-)");
		          }
	System.out.println();
	
	for (int zahl1 = 0; zahl1<9; zahl1++) {
        System.out.print("(-:");
    }

	System.out.println();
	
	for (int zahl1 = 0; zahl1<9; zahl1++) {
        System.out.print(":-)");
    }
	
	System.out.println();
		
	for (int zahl1 = 0; zahl1<9; zahl1++) {
	    System.out.print("(-:");
	    }

	System.out.println();
}
 }


Darf denn eine Methode so beginnen?

public static void main "Methodenname"(String[] args)

Bekomme so eine fehlermeldun beim compiliern.???:L
 
Zuletzt bearbeitet:

LadyMilka

Aktives Mitglied
die main-Methode hat ja schon einen Namen, nämlich main ;)

Um die "Klasse" meine Vorposter zu erweitern, in der Hoffnung es etwas deutlicher zu machen:
Java:
public class{
  public static void main(String[] args){
    a();
    b();
    c();
  }
  public void a(){..}
  public void b(){..}
  public void c(){..}
}

Am besten schaust du dir mal an, wie Klassen und methoden aussehen können :rtfm:
 

Neue Themen


Oben