Institut Gaspard Monge
Page de Nathalie Aubrun
Université de Marne-la-Vallée
TP5 - Quelques rappels sur les types primitifs et les types objets

Ce TP est un rappel sur les types primitifs et les types objets.

Exercice 1

Qu'est-ce qu'un type primitif ? Qu'est-ce qu'un type objet ? Quelle est la différence entre ces deux types ? Illustrez votre propos avec des exemples.

Exercice 2

Quelle est la différence entre l'opérateur == et la méthode equals() de la classe String ? Illustrez vos propos avec des exemples.

Exercice 3

[Code], [Code corrigé]

Ce code modélise un artisan qui fabrique des jouets. Chaque jouet possède un numéro de série. A chaque nouveau jouet créé, l'artisan incrémente son numéro de série.

Lisez attentivement le code suivant et essayez de prévoir son exécution. Dessinez l'état de la mémoire durant l'exécution du code.

public class Exercice3 {
	static public class Identifiant {
		private int numeroSerie;
		public Identifiant(int numeroSerie){
			this.numeroSerie = numeroSerie;
		}
		public void incrementer(){
			this.numeroSerie++;
		}
		public void afficher(){
			System.out.println("    numero de serie : "+this.numeroSerie);
		}
	}

	static public class Jouet{
		private Identifiant identifiant;
		public Jouet( Identifiant identifiant ){
			this.identifiant = identifiant;
		}
		public void afficher(){
			System.out.println("Jouet :");
			this.identifiant.afficher();
		}
	}

	static public class FabriquantJouet{
		private Identifiant identifiantCourant;
		public FabriquantJouet(){
			this.identifiantCourant = new Identifiant(0);
		}
		public Jouet construireJouet(){
			identifiantCourant.incrementer();
			return new Jouet( this.identifiantCourant );
		}
	}

    public static void main(String[] args) {
		FabriquantJouet artisan = new FabriquantJouet(); 
		Jouet jouet1 = artisan.construireJouet();
		jouet1.afficher();

		Jouet jouet2 = artisan.construireJouet();
		jouet1.afficher();
		jouet2.afficher();

		Jouet jouet3 = artisan.construireJouet();
		jouet1.afficher();
		jouet2.afficher();
		jouet3.afficher();
	}
}

Ce code ne fonctionne pas correctement, pourquoi ? Corrigez-le en conséquence.