package oop.Konstroktur;

public class Konstroktur {
	
	private String name; 
	private String beschreibung;
	private double price;
	private int quantity;
	private double discount;
	private String color;
	
	
	//Konstruktor:
	/* 
	 * Muss heißen wie die Klasse
	 * Muss public sein
	 * muss kein Return Wert haben
	 * kann nicht abstrakt, static, final oder private sein
	 * jedes Objekt kann nur eine einzige Konstruktor aufrufen
	 * this.attribute = parameter
	 * Default Konstroktur wird nur aufgerufen, wenn überhaupt kein Construktor haben
	 */
	
	//Arten von Konstruktor:
	
	
	//1. Default Konstroktur, wird automatisch aufgerufen, wenn wir kein Konstruktor erstellen 
	 
	//public Konstroktur() {}
	
	
	
	// 2.  no-argument constructor für default werte
			public Konstroktur() {
				this.name = "Kein Name";
				this.beschreibung = "Kein Beschreibung";
				this.price = 0.0;
				this.quantity = 0;
				this.discount =  0.0; 
				
			}
			
	//3.1 argument constructor für dynamische werte
		    public Konstroktur(String name, String beschreibung, double price, int quantity, double discount) {
		        this.name = name;
		        this.beschreibung = beschreibung;
		        this.price = price;
		        this.quantity = quantity;
		        this.discount = discount;
		    }
		    
	//3.2 Aufruf eines andere Konstruktor ( Chaining)
		    public Konstroktur(String name, String beschreibung, double price, int quantity, double discount,String color) {
		    	
		    	this (name,beschreibung,price,quantity,discount); // Aufruf der Konstruktor
		    	this.color = color;
		    }
			    
	// 4.1 Mit unterschiedlichen datentypen aber gleiche Parametern 
			public Konstroktur(String n) {
				 this.name = "Kein Name";
				 this.beschreibung = "Kein Beschreibung";
				 this.price = 0.0;
				 this.quantity = 0;
				 this.discount =  0.0; 
				 			
			}
			
		    
	// 4.2 Mit unterschiedlichen datentypen aber gleiche Parametern 
			public Konstroktur(int n) {
				 this.name = "Kein Name";
				 this.beschreibung = "Kein Beschreibung";
				 this.price = 0.0;
				 this.quantity = 0;
				 this.discount =  0.0; 
				 			
			}
			
	// 5.1 andere Rheinfolge
			public Konstroktur(String n, int z) {
				this.name = "Kein Name";
				this.beschreibung = "Kein Beschreibung";
				this.price = 0.0;
				this.quantity = 0;
				this.discount =  0.0; 
						 			
				}
					
				    
	 // 5.2 andere Rheinfolge
			public Konstroktur(int z , String n) {
				this.name = "Kein Name";
				this.beschreibung = "Kein Beschreibung";
				this.price = 0.0;
				this.quantity = 0;
				this.discount =  0.0;  			
				}
			
			
	// 6. Copy Constructor (dient dazu, Werte eines Objektes in anderem Objekt zu speicher)
			public Konstroktur(Konstroktur k1) {
				this.name = k1.name;
				this.beschreibung = k1.beschreibung;
				this.price = k1.price;
				this.quantity = k1.quantity;
				this.discount = k1.discount; 
				
			}
			
			
			
			
		public void display() {
			
			System.out.println("Name = " + name);
			System.out.println("Beschreibung = " + beschreibung);
			System.out.println("price = " + price);
			System.out.println(" quantity = " + quantity);
			System.out.println("discount = " + discount);
		}
	

}
