/*
 *
 * */
package lab1;

import java.util.Calendar;


public class Voiture {
	/*properties
	 * il est recommendé de garder les objets immutables le plus longtemps possible*/
	private final String _marque,
		                 _modele,
	                     _couleur;
	private final int _annee;
	private final double _prix;

	/*constructor
	 * pourquoi en privée, pour renforcer l'utilisation des static factory , voir plus bas*/
	private Voiture(String marque, String modele, String couleur, int annee, double prix){
		_marque = marque;
		_modele = modele;
		_couleur = couleur;
		_annee = annee;
		_prix = prix;
	}

	/*static factories
	 * les static factory permettent de remplacer les constructeurs en leurs donnant
	 * un nom significatif au variable utilisé, il permet même de préinitialisé certaine
	 * variable courament utilisé*/
	public static Voiture fromMarqueModeleCouleurAnneeKM(String marque, String modele, String couleur, int annee, double prix){
		return new Voiture(marque, modele, couleur, annee, prix);
	}

	public static Voiture fromHondaCivic(String couleur, int annee, double prix){
		return new Voiture("Honda", "Civic", couleur, annee, prix);
	}

	public static Voiture fromVoitureNeuve(String marque, String modele, String couleur, double prix){
		return new Voiture(marque, modele, couleur, Calendar.getInstance().get(Calendar.YEAR), prix);
	}

	/*methode*/
	public String toString(){
		return "Voiture : " + _marque.toString() +
		" " + _modele +
		" " + _couleur +
		" " + _annee +
		" " + _prix + "$";
	}

	/*main*/
	public static void main(String [ ] args){
		//initialisation
		Voiture lada = Voiture.fromMarqueModeleCouleurAnneeKM("Lada", "tsé", "Jaune", 2001, 20000);
		Voiture autoFord = Voiture.fromMarqueModeleCouleurAnneeKM("Ford", "Focus", "Bleu", 2005, 3500.00);
		Voiture autoHonda = Voiture.fromHondaCivic("Noir", 2012, 20000.00);
		//affichage
		System.out.println(lada.toString());
		System.out.println(autoFord.toString());
		System.out.println(autoHonda.toString());
	}


}
