FIche TD 01 | JAVA

EXERCICE 1 :

  1. C'est quoi une classe ?
  2. C'est quoi un objet  ?
  3. Quelle est la différence entre une classe et un objet?
  4. En quoi l’héritage est-il un outil puissant pour le développement d’applications??
  5. Quelle est la différence entre :
  • Point p[ ][ ] = new Point[5][4];
  • Point p = new Point(5,4);

EXERCICE 2 :

a.Parmi les appels suivant indiquez ceux qui sont corrects et ceux qui ne le sont pas

public class A { public int i; private int a;protected int b;public void afficher() { System.out.println(i+a+b);}}

public class B extends A {public void afficher() { System.out.println(i+a+b);}}

public class D{Public Aa= new A();Public void afficher() {System.out.println(a.i+a.a+a.b); }}

public class E{Public Bb= new B();Public void afficher() { b.afficher();}}

public class F {Public B b = new B();Public void afficher() { System.out.println(b.i + b.a + b.b) }}

 

EXERCICE 3 :

On souhaite donner la possibilité d’uniformiser les sommets d’un polygone en forçant ceux-ci à être des pointNommé ou des pointPondéré, ... Pour cela on utilise une version générique de la classe polygone. Les sommets sont stockés dans une liste chaînée et le paramètre générique doit garantir que les sommets soient des points.

  1. Ecrivez l’entête de la classe polygone générique
  2. Ecrivez la déclaration de la liste chaînée
  3. Ecrivez le constructeur de la classe polygone
  4. Ecrivez la méthode getPoints() qui renvoie la liste de points
  5. Donnez une implementations de la Classe Polygone regroupants  les questions precedentes.

Solution :

EXERCICE 1 :

  1. C'est quoi une classe ? Une classe est un modèle ou un plan qui définit les variables, les méthodes et les attributs qui seront utilisés pour créer des objets. Elle peut être considérée comme un schéma pour la création d'objets.
  2. C'est quoi un objet ? Un objet est une instance d'une classe. Il s'agit d'une entité autonome qui peut avoir des attributs (variables) et des comportements (méthodes).
  3. Quelle est la différence entre une classe et un objet? Une classe est un modèle ou un plan qui définit les variables, les méthodes et les attributs qui seront utilisés pour créer des objets. Un objet est une instance d'une classe, une entité autonome qui peut avoir des attributs (variables) et des comportements (méthodes). En d'autres termes, une classe est un schéma pour la création d'objets, tandis qu'un objet est une instance spécifique de cette classe.
  4. En quoi l’héritage est-il un outil puissant pour le développement d’applications? L'héritage est un concept fondamental de la programmation orientée objet qui permet de créer de nouvelles classes en utilisant les propriétés et les méthodes d'une classe existante. Cela permet d'éviter la redondance de code et de créer une hiérarchie de classes qui peut être facilement modifiée ou étendue. L'héritage est un outil puissant pour le développement d'applications car il permet une organisation logique et efficace du code.
  5. Quelle est la différence entre : Point p[][] = new Point[5][4]; Point p = new Point(5,4);  La première ligne crée un tableau de 5 éléments de type Point, chacun des éléments étant un tableau de 4 éléments de type Point. La seconde ligne crée un objet de type Point avec les coordonnées (5,4) et le stocke dans la variable p.

EXERCICE 2 :

La classe A contient 3 attributs : "i" de visibilité public, "a" de visibilité private et "b" de visibilité protected. Elle a aussi une méthode "afficher()" qui affiche la somme de ces 3 attributs.

La classe B hérite de A et redéfinit la méthode "afficher()" pour afficher la somme de ces 3 attributs.

La classe D contient une instance de A nommée "a" de visibilité public et une méthode "afficher()" qui affiche la somme des 3 attributs de "a".

La classe E contient une instance de B nommée "b" de visibilité public et une méthode "afficher()" qui appelle la méthode "afficher()" de "b".

La classe F contient une instance de B nommée "b" de visibilité public et une méthode "afficher()" qui tente d'accéder aux attributs "i", "a" et "b" de "b" qui sont de visibilité protected, private et protected respectivement.

Les appels corrects sont :

Instanciation de A : A a = new A();

Instanciation de B : B b = new B();

Appel de la méthode "afficher()" de D : D d = new D(); d.afficher();

Appel de la méthode "afficher()" de E : E e = new E(); e.afficher();

Les appels incorrects sont :

La variable "Aa" de la classe D est de visibilité public mais la classe A n'a pas de constructeur sans paramètre. Il faut passer un paramètre lors de l'instanciation de "Aa".

La classe F tente d'accéder aux attributs "i", "a" et "b" de "b" qui sont de visibilité protected, private et protected respectivement.

EXERCICE 3:

Voici des exemples de code pour répondre aux différentes questions :

1) Entête de la classe polygone générique :

public class Polygone<T extends Point> { // code de la classe Polygone ici }

2) Déclaration de la liste chaînée :

private List<T> sommets;

3) Constructeur de la classe Polygone :

public Polygone(List<T> sommets) { this.sommets = sommets; }

4) Méthode getPoints() qui renvoie la liste de points :

public List<T> getPoints() { return sommets; }

------------------

Notez que la déclaration T extends Point dans l'entête de la classe Polygone signifie que le type générique T doit être une sous-classe de la classe Point. Cela permet de garantir que les sommets stockés dans la liste chaînée seront des objets de type Point ou de l'une de ses sous-classes, telles que PointNommé ou PointPondéré.

------------------

5)public class Polygone<T extends Point> {
    private LinkedList<T> sommets;
    
    public Polygone() {
        sommets = new LinkedList<>();
    }
    
    public void ajouterSommet(T sommet) {
        sommets.add(sommet);
    }
    
    public LinkedList<T> getPoints() {
        return sommets;
    }
}

Explications :

  • La classe Polygone est déclarée générique avec le paramètre T extends Point, ce qui signifie que le paramètre générique T doit être une sous-classe de la classe Point.
  • La liste chaînée sommets est déclarée en tant que membre de la classe Polygone.
  • Le constructeur de la classe Polygone initialise la liste chaînée sommets.
  • La méthode ajouterSommet permet d'ajouter un sommet de type T à la liste chaînée sommets.
  • La méthode getPoints renvoie la liste chaînée sommets.

Remarque :

La classe Point doit être définie ailleurs dans le code pour que la classe Polygone puisse être utilisée.

  • 1 vote. Moyenne 5 sur 5.

Ajouter un commentaire

Anti-spam