logo

Crowdly

INF111-01 Programmation orientée-objet (hors programme) (H2025)

Шукаєте відповіді та рішення тестів для INF111-01 Programmation orientée-objet (hors programme) (H2025)? Перегляньте нашу велику колекцію перевірених відповідей для INF111-01 Programmation orientée-objet (hors programme) (H2025) в ena.etsmtl.ca.

Отримайте миттєвий доступ до точних відповідей та детальних пояснень для питань вашого курсу. Наша платформа, створена спільнотою, допомагає студентам досягати успіху!

Votre réponse à la question 3 : Swing et Observer

Voici une application qui gère la liste de contacts des étudiants du cours INF111.  L'application est programmée en Java-Swing, implémente le patron de conception Observer et respecte l'architecture MVC (Model-View-Controller). Cette application possède deux fonctionnalités: Ajouter et supprimer le contact d'un étudiant (nom et téléphone). Compléter le code afin que l'application fonctionne correctement.

Image failed to load

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import java.util.List;

// Interface de l'observateur :

interface

Observateur

{

void seMettreAJour();

}

// La classe Observable :

public class

Observable

{

private List<Observateur> observateurs = new ArrayList<>();

public void ajouterObservateur(Observateur observateur) {

observateurs.add(observateur);

}

private void notifierObservateurs() {

for (Observateur observateur : observateurs) {

observateur.

;

}

}

}

// La classe Model pour les étudiants joue le rôle de l'Observable

public class

EtudiantModel

{

private List<String> etudiants = new ArrayList<>();

public void ajouterEtudiant(String etudiant) {

etudiants.add(etudiant);

notifierObservateurs();

}

public void supprimerEtudiant(int selectedIndex) {

etudiants.remove(selectedIndex);

notifierObservateurs();

}

public List<String> getEtudiants() {

return

;

}

}

// La classe View pour afficher la liste des étudiants

public class

EtudiantView extends JFrame

{

private EtudiantModel model;

private DefaultListModel<String> etudiantListModel;

private JList<String> etudiantList;

public EtudiantView(EtudiantModel model) {

this.model = model;

model.ajouterObservateur(this);

this.

("Gestion des Étudiants");

this.setDefaultCloseOperation(JFrame.

);

this.setSize(600, 300);

this.setLocation(500,500);

this.setLayout(new BorderLayout());

etudiantListModel = new DefaultListModel<>();

etudiantList = new JList<>(

);

etudiantList.setBorder(BorderFactory.createTitledBorder("Liste des Étudiants"));

etudiantList.

(Color.LIGHT_GRAY);

this.add(etudiantList, BorderLayout.CENTER);

this.

;

}

@Override

public void

{

etudiantListModel.clear();

for (String etudiant : model.getEtudiants()) {

etudiantListModel.addElement(etudiant);

}

}

public JList<String> getEtudiantList() {

return

;}

}

// La classe Controleur pour gérer les interactions :

public class

EtudiantController

implements ActionListener {

private EtudiantModel model;

private JTextField nomEtudiantField;

private JTextField phoneEtudiantField;

private JButton ajouterButton, supprimerButton;

public EtudiantController(EtudiantModel model, EtudiantView view) {

this.model = model;

JPanel controlPanel = new JPanel(new

(4, 2));

// Champ de saisie pour le nom

nomEtudiantField = new JTextField();

controlPanel.add(new

("Nom de l'Étudiant:"));

controlPanel.add(nomEtudiantField);

// Champ de saisie pour le numéro de téléphone

phoneEtudiantField = new JTextField();

controlPanel.add(new

("Numéro de Téléphone:"));

controlPanel.add(phoneEtudiantField);

ajouterButton = new JButton("Ajouter un étudiant");

controlPanel.add(ajouterButton);

ajouterButton.

(this);

// Bouton pour supprimer un contact

supprimerButton = new JButton("Supprimer un étudiant");

controlPanel.add(supprimerButton);

supprimerButton.

(this);

view.add(

, BorderLayout.NORTH);

}

@Override

public void

(ActionEvent evt) {

Object source = evt.getSource();

if (source==ajouterButton) {

String nomEtudiant = nomEtudiantField.getText();

String phoneEtudiant = phoneEtudiantField.getText();

if (!nomEtudiant.isEmpty() && !phoneEtudiant.isEmpty()) {

model.ajouterEtudiant(nomEtudiant + " - " + phoneEtudiant);

nomEtudiantField.setText("");

phoneEtudiantField.setText("");

}

}

else if (source==supprimerButton) {

int selectedIndex = view.getEtudiantList().getSelectedIndex();

if (selectedIndex != -1) {

model.supprimerEtudiant(selectedIndex);

}

}

}

}

// Classe principale pour démarrer l'application

public class

GestionEtudiantstApp

{

public static void main(String[] args) {

SwingUtilities.invokeLater(() -> {

EtudiantModel model = new EtudiantModel();

EtudiantView view = new EtudiantView(model);

new EtudiantController(model, view);

});

}

}

Переглянути це питання

Votre réponse à la question 4.7 : Compléter la définition de la classe FeuilleExamen en complétant :

  • La définition de la méthode getTitreExamen();
  • La définition de la méthode corriger();
  • La définition de la méthode getNombreQuestionsEchouees().

public class FeuilleExamen {

    private String nomEtudiant;

    private Examen enonce;

    private List<Reponse> reponses;

    private double note;

    public FeuilleExamen(String nomEtudiant, Examen enonce, List<Reponse> reponses) {

        this.nomEtudiant = nomEtudiant;

        this.enonce = enonce;

        this.reponses = reponses;

    }

    public String getTitreExamen() {

        

    }

    public void corriger() {

        

    }

    public int getNombreQuestionsEchouees() {

        

    }

}

Переглянути це питання

Votre réponse à la question 4.6 : Compléter la définition de la classe Examen qui dérive (hérite) de Activite en complétant :

  • La définition du constructeur;
  • La définition des méthodes ajouter()retirer()consulter()getNombreQuestions() et evaluer().

public class Examen {

    private List<Evaluable> questions;

    public Examen(String titre,String description,List<Evaluable> questions) {

        

    }  

    public void ajouter(Evaluable question) {

        

    }  

    public Evaluable retirer(int indice) {

        

    }  

    public Evaluable consulter(int indice) {

        

    }

    public int getNombreQuestions() {

        

    }

    public double evaluer(List<Reponse> tentative) {

         

    }

}

Переглянути це питання

Votre réponse à la question 4.5 : Compléter la définition de la classe QuestionMultiple qui dérive (hérite) de Question en complétant :

  • La définition du constructeur;
  • La définition des méthodes estReussi() et evaluer().

public class QuestionMultiple {

    private double seuilReussite;

    public QuestionMultiple(String titre, String description, String question, double ponderation, Reponse solution, double seuilReussite) {

        

    }

    @Override

    public boolean estReussi(Reponse rep) {

        //La question est réussie si la note obtenue est supérieure ou égale au seuil de réussite:

        

    }

    @Override

    public double evaluer(Reponse reponseEleve) {

        //calculer et retourner la note obtenue par la réponse de l'élève à cette question :
        
    }

}

Переглянути це питання

Votre réponse à la question 4.4 : Compléter la définition de la classe QuestionUnique qui dérive (hérite) de Question en complétant :

  • La définition du constructeur;
  • La définition des méthodes estReussi() et evaluer().

public class QuestionUnique {

    public QuestionUnique(String titre, String description, String question, double ponderation, Reponse solution) {

        

    }

    @Override

    public boolean estReussi(Reponse rep) {

        //La question est réussie si le 1er élément de la réponse rep correspond au 1er élément de la réponse correcte :

        

    }

    @Override

    public double evaluer(Reponse rep) {

        //Retourner la pondération de la question si la question est réussie ou 0 si la question n'est pas réussie:

        

    }

}

Переглянути це питання

Votre réponse à la question 4.3 :Compléter la définition de la classe abstraite Question qui dérive (hérite) de Activite et implémente l’interface Evaluable. La classe Question comporte 3 nouveaux attributs dont 2 sont privés et 1 est protégé. Vous devez définir le constructeur qui reçoit les valeurs initiales de tous les attributs et les accesseurs aux attributs privés (pas protégé)  :

public abstract class Question {

    private String questionPosee;

    private double ponderation;

    protected Reponse reponseCorrecte;

    public

    public Question(String titre, String description, String questionPosee, double ponderation, Reponse reponseCorrecte) {

        //...

    }

    //...
}

Переглянути це питання

Votre réponse à la question 4.2 :Compléter la définition de la méthode estMalFormee() de la classe Reponse. Une réponse est mal formée lorsqu’elle contient 2 éléments identiques ::

public boolean estMalFormee() {

   //Indique s'il y a 2 éléments de réponse identiques:

}

Переглянути це питання

Votre réponse à la question 3 : Swing et Observer

Voici une application qui gère la liste de contacts des étudiants du cours INF111.  L'application est programmée en Java-Swing, implémente le patron de conception Observer et respecte l'architecture MVC (Model-View-Controller). Cette application possède deux fonctionnalités: Ajouter et supprimer le contact d'un étudiant (nom et téléphone). Compléter le code afin que l'application fonctionne correctement.

Image failed to load

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import java.util.List;

// Interface de l'observateur :

interface

Observateur

{

void seMettreAJour();

}

// La classe Observable :

public class

Observable

{

private List<Observateur> observateurs = new ArrayList<>();

public void ajouterObservateur(Observateur observateur) {

observateurs.add(observateur);

}

private void notifierObservateurs() {

for (Observateur observateur : observateurs) {

observateur.{1:MCS:=seMettreAJour()~update()~updateObserver()};

}

}

}

// La classe Model pour les étudiants joue le rôle de l'Observable

public class

EtudiantModel

{1:MCS:=extends~implements~inherits} {1:MCS:=Observable~Observer~Model} {

private List<String> etudiants = new ArrayList<>();

public void ajouterEtudiant(String etudiant) {

etudiants.add(etudiant);

notifierObservateurs();

}

public void supprimerEtudiant(int selectedIndex) {

etudiants.remove(selectedIndex);

notifierObservateurs();

}

public List<String> getEtudiants() {

return {1:MCS:=etudiants~observateurs};

}

}

// La classe View pour afficher la liste des étudiants

public class

EtudiantView

extends JFrame {1:MCS:=implements~extends~inherits} {1:MCS:=Observateur~Observer~Observable}{

private EtudiantModel model;

private DefaultListModel<String> etudiantListModel;

private JList<String> etudiantList;

public EtudiantView(EtudiantModel model) {

this.model = model;

model.ajouterObservateur(this);

this.{1:MCS:=setTitle~setText~putTitle}("Gestion des Étudiants");

this.setDefaultCloseOperation(JFrame.{1:MCS:=EXIT_ON_CLOSE~HIDE_ON_CLOSE~QUIT_ON_CLOSE});

this.setSize(600, 300);

this.setLocation(500,500);

this.setLayout(new BorderLayout());

etudiantListModel = new DefaultListModel<>();

etudiantList = new JList<>({1:MCS:=etudiantListModel~Etudiants~model.getEtudiants()});

etudiantList.setBorder(BorderFactory.createTitledBorder("Liste des Étudiants"));

etudiantList.{1:MCS:=setBackground~setColor~backgroundColor}(Color.LIGHT_GRAY);

this.add(etudiantList, BorderLayout.CENTER);

this.{1:MCS:=setVisible(true)~displayWindow(true)~makeVisible(true)};

}

@Override

public void {1:MCS:=seMettreAJour()~notifierObservateurs()~notifyObserver()} {

etudiantListModel.clear();

for (String etudiant : model.getEtudiants()) {

etudiantListModel.addElement(etudiant);

}

}

public JList<String> getEtudiantList() {

return {1:MCS:=etudiantList~etudiantListModel~etudiants};}

}

// La classe Controleur pour gérer les interactions :

public class

EtudiantController

implements ActionListener {

private EtudiantModel model;

private JTextField nomEtudiantField;

private JTextField phoneEtudiantField;

private JButton ajouterButton, supprimerButton;

public EtudiantController(EtudiantModel model, EtudiantView view) {

this.model = model;

JPanel controlPanel = new JPanel(new {1:MCS:=GridLayout~FlowLayout~BorderLayout}(4, 2));

// Champ de saisie pour le nom

nomEtudiantField = new JTextField();

controlPanel.add(new {1:MCS:=JLabel~JText~JTitle}("Nom de l'Étudiant:"));

controlPanel.add(nomEtudiantField);

// Champ de saisie pour le numéro de téléphone

phoneEtudiantField = new JTextField();

controlPanel.add(new {1:MCS:=JLabel~JText~JTitle}("Numéro de Téléphone:"));

controlPanel.add(phoneEtudiantField);

ajouterButton = new JButton("Ajouter un étudiant");

controlPanel.add(ajouterButton);

ajouterButton.{1:MCS:=addActionListener~addActionPerformed~actionPerformed}(this);

// Bouton pour supprimer un contact

supprimerButton = new JButton("Supprimer un étudiant");

controlPanel.add(supprimerButton);

supprimerButton.{1:MCS:=addActionListener~addActionPerformed~actionPerformed}(this);

view.add({1:MCS:=controlPanel~ajouterButton~supprimerButton}, BorderLayout.NORTH);

}

@Override

public void {1:MCS:=actionPerformed~addActionListener~addActionPerformed}(ActionEvent evt) {

Object source = evt.getSource();

if (source==ajouterButton) {

String nomEtudiant = nomEtudiantField.getText();

String phoneEtudiant = phoneEtudiantField.getText();

if (!nomEtudiant.isEmpty() && !phoneEtudiant.isEmpty()) {

model.ajouterEtudiant(nomEtudiant + " - " + phoneEtudiant);

nomEtudiantField.setText("");

phoneEtudiantField.setText("");

}

}

else if (source==supprimerButton) {

int selectedIndex = view.getEtudiantList().getSelectedIndex();

if (selectedIndex != -1) {

model.supprimerEtudiant(selectedIndex);

}

}

}

}

// Classe principale pour démarrer l'application

public class

GestionEtudiantstApp

{

public static void main(String[] args) {

SwingUtilities.invokeLater(() -> {

EtudiantModel model = new EtudiantModel();

EtudiantView view = new EtudiantView(model);

new EtudiantController(model, view);

});

}

}

Переглянути це питання

Votre réponse à la question 4.1 : Implémenter la classe abstraite Activite :

public abstract class Activite {

    //...

    public Activite(String titre, String description) {

        //...

    }

    //...

}

Переглянути це питання

Votre réponse à la question 2.2 : Chainage

La classe Noeud suivante représente des nœuds d'une structure chainée, telle que les listes chainées :

class Noeud {

Object donnee;

Noeud suivant;

Noeud(Noeud next, Object data) {

this.donnee = data;

this.suivant = next;

}

}

Donnez le code qui permet de passer de la situation A à la situation B suivantes. Votre code doit permettre de retirer 5 éléments d'une liste (du 2e au 6e élément). Les éléments retirés vont constituer une deuxième liste :

Image failed to load

Переглянути це питання

Хочете миттєвий доступ до всіх перевірених відповідей на ena.etsmtl.ca?

Отримайте необмежений доступ до відповідей на екзаменаційні питання - встановіть розширення Crowdly зараз!