Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox



Classes objets java partone

Compatible Java. Cliquer pour en savoir plus sur les compatibilités.Par Freyskeyd (Simon Paitrault), le 24 juillet 2009

Résumé de l'article

En construction

Introduction et mise en jambe

Qu'est-ce qu'une Classe dans JAVA

Une classe est en réalité le squelette d'un Objet, sa structure. Dans une classe on peux trouver divers éléments utiles à l'objet, comme
des attributs (private, public, static, protected, nous verrons ça plus tard) et des fonctions.

Qu'est-ce qu'un Objet

Un objet est une instance d’une classe, c'est à dire qu'il est créé à partir de son modèle et peu utiliser toutes fonctions relative à cette classe.

Exemple Simple

Prenons un exemple simple pour expliquer tout ceci (même si je vous conseil de suivre des cours de POO (Programmation Orienté Objet) ou d'acheter un livre sur le sujet). Notre exemple sera donc une bouteille de vin, sans étiquette. Si nous définissons une classe “vin” nous pourrions lui mettre comme attribut :

  1. un Nom
  2. une Année
  3. un type (vin blanc, rouge…)
  4. une appellation

Bien, nous venons de définir les Attributs de notre classe, vient alors leur définition (public ou private) et nous allons donc parler d'encapsulation.
Mais qu'est-ce que c'est? C'est un des principes fondamentales de la POO, le fait qu'un attribut ou une fonction est ou n'est pas accessible à l'extérieur de la classe. Je m'explique, imaginé la classe comme une boite fermé, dans cette boite ont y met les attributs et les fonctions. Quand on regarde la boite de l'extérieur il nous est impossible de savoir ce qu'elle contient…Pour le savoir il nous faudrait des indications. Un attribut public serait donc, pour notre exemple, cité sur un étiquette collé sur la boite, nous informant alors de la présence de tel ou tel objet. On peut donc facilement comprendre qu'un attribut privé est donc invisible pour un observateur extérieur. Mais revenons à notre vin…Nous avons donc défini les attributs, en gage de sécurité nous allons les déclarer comme privé (donc innaccessible hors de notre classe).

public class Vin {
	private String nom;
	private String year;
	private TypeVin type;
	private String appellation;
}

Il va nous faloir alors alimenter ces différentes variables, c'est pour cela que nous allons utiliser un “constructeur” de class. Un constructeur est une fonction portant le même nom que la class, c'est cette fonction qui est appellée pour “créer” nos futurs objets. Dans notre exemple cela donnerai ceci :

public Vin(String appellation, String nom, TypeVin type, String year) {
		super();
		this.appellation = appellation;
		this.nom = nom;
		this.type = type;
		this.year = year;
		type.AddVin(this);
	}

Comme vous pouvez le voir le constructeur posséde aussi une valeur “public”, ce qui veux dire qu'il est accessible en dehors de la class (vous me direz “normal” vu que c'est lui qui dois permettre la création de l'objet lié à cette classe…) Différents parametres sont requis, chacun ayant un type et un nom. l'instruction “super();” est en réalité l'appel du constructeur de la classe “Parent”, nous verons cela plus tard. “this.” permet de savoir sur quel variable nous travaillons, this est enfaite le représentant de la classe. Nous assossions donc les différentes valeurs à leur attributs respectifs. Vous me direz donc ensuite, mais c'est quoi le “type.AddVin(this);”?? Eh bien, souhaitant poussé un peu plus l'exemple, nous pourrions par exemple vouloir triller nos vins par Type (vin blanc, rouge..). Nous allons donc créé une classe et des objets pour chaque type de vin. Que nous faut-il :

  1. un nom pour le type de vin
  2. un tableau des différents vin associé à ce type
public class TypeVin {
 
	private String nomType;
	private ArrayList<Vin> listVin;
	public TypeVin(String nomType) {
		super();
		this.listVin = new ArrayList<Vin>();
		this.nomType = nomType;
	}
	public void AddVin(Vin vin){
		this.listVin.add(vin);
	}
 
}

Comme vous pouvez le voir dans notre classe TypeVin, nous avons bien le constructeur, mais celui ci ne demande pas listVin en parametre. C'est normal. Au moment de la création du type, nous n'avons pas encore créé nos objets vin, il n'y a donc rien à offrir à notre constructeur. C'est pour cela que nous créons la fonction public AddVin, qui nous permettra d'allimenter notre liste à tout moment.

Revenons à notre class Vin, vous comprenez donc maintenant l'utilité de l'instruction : type.AddVin(this);

Grace au type passé en parametre nous accédons à la fonction public AddVin et lui offront le parametre this (qui représente l'objet en cours de création).

Créons un exemple ensemble.

public class Main {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// Nous définissons les types de vin
		TypeVin vinBlanc = new TypeVin("blanc");
		TypeVin vinRouge = new TypeVin("rouge");
 
		// création de deux objets vin de type vinRouge
		Vin vinRouge1 = new Vin("Pessac-Leognan","Château Bardins",vinRouge,"2003");
		Vin vinRouge2 = new Vin("Fronton rouge","Château Boujac", vinRouge, "2004");
		// création d'un objet vin de type vinBlanc
		Vin vinBlanc1 = new Vin("Montravel blanc", "Chateau du Fauga",vinBlanc, "2007");
	}
 
}