|
École de technologie supérieure
|
Responsable(s) de cours :
|
Pierre Bélisle
|
PLAN DE COURS
Été 2024
INF111 : Programmation orientée-objet (hors programme) (4 crédits)
Préalables
Aucun préalable requis
|
Unités d'agrément
Données non disponibles
|
Qualités de l'ingénieur
|
Qualité visée dans ce cours |
|
|
|
Qualité visée dans un autre cours |
|
|
|
Indicateur enseigné |
|
|
Indicateur évalué |
|
|
Indicateur enseigné et évalué |
Descriptif du cours
Cours destiné aux étudiantes et aux étudiants ayant déjà suivi un cours de programmation. Il permet d’apprendre et de pratiquer les principes de base de la programmation orientée objet (encapsulation, héritage, composition et polymorphisme). Le langage de programmation utilisé est le même que pour les cours de conception suivants.
À la suite d’une présentation de base du langage utilisé et d’algorithmes de tri (sélection, insertion et bulle) et de fouille binaire, l’étudiant acquiert des principes de programmation avancée comme l’implémentation des types de données abstraits de base telles qu'une pile, une file et une liste (avec et sans position courante), autant avec tableau statique qu’avec chaînage dynamique (simple et double). Il acquiert également des notions orientées objet à l’aide de la gestion et la levée d’exception, l’utilisation de collections de base offertes par le langage utilisé (exemple : Vector, ArrayList et linkedList de Java), l’écriture de classe interne et leur avantage, l’utilisation de composants graphiques pour la construction d’interfaces utilisateurs telles que bouton, étiquette (label), panneau (panel), cadre (frame) en plus de la gestion d’événements par écouteur (listener). Le tout avec de bonnes pratiques de programmation utilisées et reconnues.
Séances de laboratoire permettant l'application des notions de programmation.
Objectifs du cours
Ce cours a pour objectif d’enseigner les principes de la programmation orientée-objet (encapsulation, héritage et polymorphisme) en insistant sur des notions de programmation plus approfondies que les types primitifs (int, char, …), les structures de contrôle et les structures de données de base tels que les tableaux.
De façon plus spécifique, ce cours devra permettre à l'étudiante ou l'étudiant de :
- Utiliser un environnement de programmation Java (IntelliJ, Eclipse ou autres).
- Apprendre à programmer dans le paradigme orienté-objet avec le langage Java.
- Comprendre les relations d’héritage, d’agrégation et de composition.
- Comprendre et exploiter l’utilité de la visibilité des attributs et des méthodes (encapsulation).
- Comprendre et pouvoir exploiter le polymorphisme.
- Être en mesure de programmer (et d’utiliser) des types de données abstraits (piles, files et listes) avec différentes implémentations.
- Utiliser les composants Swing pour la création d’interface graphique.
L’étudiante ou l'étudiant doit au préalable avoir une compréhension des concepts suivants[1] (la première semaine de la session fait des rappels de ces concepts et introduit la syntaxe du langage du cours) :
- Types de base (Entier, réel, booléen, caractère).
- Opérateurs sur les types de base (+, -, *, /, %, …).
- Types composés (chaînes de caractères et tableaux).
- Structures de contrôle (sélection, itération).
- Structures de programme (bloc principal, procédures et fonctions).
- Passage de paramètres (par valeur, par référence, formel et actuel).
- Entrées (clavier) et sorties (écran).
[1] Peu importe le langage de programmation qui a été utilisé.
Stratégies pédagogiques
La première semaine de la session servira à une révision de concepts présumés comme étant déjà connus et à l’apprentissage de ceux-ci en Java. Les cours suivants présenteront les concepts de programmation orientée-objet et des applications de ceux-ci à l’aide de notions de programmation plus approfondies et de l’utilisation des composants Swing.
3 heures de cours magistraux par semaine
3 heures de laboratoire par semaine
Les laboratoires visent :
- L'assimilation des notions vues au cours à l’aide d’exercices;
- La mise au point des programmes donnés en travaux pratiques (si les exercices sont finis).
Utilisation d’appareils électroniques
Ordinateur portable.
Horaire
Groupe | Jour | Heure | Activité |
01 | Lundi | 09:00 - 12:30 | Activité de cours |
| Mercredi | 13:30 - 16:30 | Laboratoire |
04 | Mercredi | 09:00 - 12:30 | Activité de cours |
| Vendredi | 13:30 - 16:30 | Laboratoire |
80 | Mardi | 09:00 - 12:00 | Laboratoire |
| Jeudi | 09:00 - 12:30 | Activité de cours |
81 | Mardi | 18:00 - 21:00 | Laboratoire |
| Jeudi | 18:00 - 21:30 | Activité de cours |
Coordonnées de l’enseignant
Cours
- La première période de trois heures sert aussi à présenter le plan de cours, l’approche pédagogique utilisée et les différents modèles d’évaluation.
- Notez que l'ordre de présentation peux varier selon l'enseignante ou l'enseignant.
Semaine
|
MATIÈRE
|
1
|
|
2 - 4
|
- Introduction aux classes (attributs à accès privé) et aux objets;
- Valeurs vs références;
- Les paquetages (package et import);
- Survol des packages java.lang et java.util de Java;
- Classes de Java : String, Arrays et Math;
- Les chaînes de caractères;
- Les API de Java et utilisation de classes existantes;
- Tris (à bulles, par sélection, par insertion);
- Recherches/fouilles (séquentielle, binaire et séquentielle indexée);
- Encapsulation;
- Méthodes d'accès (accesseurs et mutateurs) et d'instances;
- Tableaux d'objets;
- Constructeurs;
- Surcharge;
- Conversion d'objets en chaînes de caractères;
- Comparaison d'objets (test d'égalité - equals())
- Référence this;
- Attributs et méthodes de classes (static);
- Agrégation/composition;
- Documentation du code et commentaires Javadoc.
|
Examen Intra 1 |
Contenu des semaines 1 à 4 |
6 - 8
|
- Vecteurs (ArrayList et Vector);
- Notion de classe générique;
- Classes enveloppes (wrappers) et conversion automatique (autoboxing et unboxing);
- Itérateurs de listes (ListIterator);
- Types de données abstraits (piles, files, listes), implémentation statique. Stragégies de gestion (LIFO et FIFO);
- Classes internes (inner class);
- Cadre de collection (LinkedList, Stack, Queue,...);
- Chainage;
- Types de données abstraits (piles, files, listes), implémentation dynamique avec chainages simple et double;
- Implémentation d'un itérateur (exemple).
- Héritage par extension :
- Définition et utilité;
- Syntaxe (extends);
- Accès protégé (protected);
- Appel aux constructeurs et aux méthodes de la classe mère (super);
- Hiérarchies d'héritage;
- Généralisation et spécialisation;
- Héritage vs agrégation/composition (isA vs hasA);
- Héritage simple vs héritage multiple;
- Polymorphisme :
- Définition;
- Surcharge (overload);
- Redéfinition (override);
- Méthodes virtuelles et liaison dynamique (late binding);
- Méthodes non polymorphiques;
- Méthodes et classes abstraites (abstract);
- Méthodes et classes finales (final);
- Exemple d'application de l'héritage et du polymorphisme : les graphismes (classe Graphics);
- Introduction aux enregistrements (attributs à accès public).
|
Examen Intra 2
|
Contenu des semaines 1 à 8
|
10-13
|
- Gestion des erreurs et des exceptions;
- Clonage et constructeurs de copies;
- Interfaces (interface) :
- Définition et utilité;
- Implémentation;
- Propriétés.
- Notion d'interface générique;
- Application des interfaces aux tris et aux recherches :
- Test d'inégalité, ordre naturel et comparaison d'objets (interface Comparable);
- Comparateurs (interface Comparator);
- Méthodes de tri et de recherche binaire (méthodes des classes Arrays et Collections);
- Notion de programmation par contrats.
- Appels entre constructeurs d'une même classe (this());
- Finalisation de la destruction d'objets (finalize());
- Ramasse-miettes;
- Types énumérés (enum);
- Blocs d'initialisation statique;
- Exemple de définition de classes et d'interfaces génériques : implémentation d'un itérateur;
- Exemple de mise en oeuvre : la programmation graphique avec Swing
- Composants Swing : JFrame, JPanel, JButton JTextField, JMenu, JList, ...;
- Boites de dialogue (JOptionPane);
- Gestion de disposition (Layout Manager) : BorderLayout, FlowLayout, GridLayout;
- Gestion d’évènements : modèle de délégation, interfaces écouteurs (listeners);
- Précautions (threads et Swing, SwingUtilities.invokeLater())
- Complément (non évalué) :
- Architecture MVC (introduction);
- Patron observer (exemple);
|
Examen final
|
Contenu de toute la session.
|
Laboratoires et travaux pratiques
Laboratoires :
- Chaque semaine des exercices sont proposés pour comprendre la théorie de la semaine en vue de la réalisation des travaux pratiques. Les laboratoires ne sont pas à remettre mais nous supposons que l'étudiante ou l'étudiant les réalise. Nous pouvons les utiliser en référence dans les cours, les examens et les travaux pratiques.
Utilisation d'outils d'ingénierie
S.O.
Évaluation
Évaluation |
Pondération |
01 |
04 |
80
(accéléré)
|
Évaluation continue
|
10 %
|
Séances de laboratoire
(semaine 2 à 13 sauf examen)
|
Modalités à venir |
Examen intra 1
(3h)
|
10 %
|
29 mai
|
31 mai
|
20 juin |
Travail pratique #1
|
15 %
|
7 juillet
|
16 juillet |
Examen intra 2
(3h)
|
10 %
|
3 juillet
|
5 juillet
|
18 juillet |
Travail pratique #2
|
15 %
|
7 août
|
13 août |
Examen final
(3h) |
40%
|
Période des examens finaux |
Dernière séance de cours
|
À propos des travaux pratiques :
- Les travaux pratiques visent à mettre en application, dans le cadre d'un problème réaliste, les concepts et les méthodes de programmation enseignés pendant les cours théoriques. Il est attendu des étudiantes et étudiants qu'ils produisent des travaux permettant de résoudre le problème de l'énoncé mais surtout de les réaliser selon les standards de qualité et les bonnes pratiques enseignés (respect des normes, décomposition en modules, etc.). La cohérence et l'optimalité des algorithmes implémentés constituent également des critères importants qui seront considérés. En tout état de cause, la note attribuée à l'exécution correcte du programme ne pourra excéder 40% de la note globale d'un travail pratique.
Chaque travail pratique se fera en équipes de 2 à 4 membres chacune. Une équipe ne doit remettre qu’un seul travail.
- L'utilisation de Git et de Github est fortement encouragée.
- Il est à noter que pour les travaux en équipe, chaque membre recevra une note inférieure ou égale à la note obtenue par l'équipe. Cette note individuelle est directement proportionnelle à l'implication de l'individu. La méthode d’évaluation de l’implication de chaque individu est laissée à la discrétion de l’enseignant.
À propos des examens intras :
-
Les examens intra ont lieu en présence.
-
Les examens intra ont lieu sur papier.
-
Aucune documentation et aucun accès Internet ne sont permis.
À propos de l'examen final :
- L'examen final a lieu en présence.
- Aucune documentation et aucun accès Internet ne sont permis.
- L'énoncé de l'examen final sera distribué en format papier aux étudiantes et étudiants qui donneront leurs réponses sur Enaquiz.
Double seuil :
- Une note moyenne pondérée de 50 % est exigée pour l’ensemble des évaluations à caractère individuel. Ce seuil est une condition nécessaire à la réussite du cours mais ne la garantit pas.
À propos de la langue utilisé
- Afin de respecter les exigences relatives à la langue française telles que stipulées à la Politique linguistique de l’École, le code et les commentaires de code doivent être principalement en français tel que c'est le cas pour tous les exemples et documents qui seront fournis aux étudiantes et étudiants.
Double seuil
Note minimale : 50
Dates des examens intra
# Intra | Groupe(s) | Date |
1 | 1 | 29 mai 2024 |
1 | 4 | 31 mai 2024 |
1 | 80 | 20 juin 2024 |
2 | 1 | 3 juillet 2024 |
2 | 4 | 5 juillet 2024 |
2 | 80 | 16 juillet 2024 |
Date de l'examen final
Votre examen final aura lieu pendant la période des examens finaux, veuillez consulter l'horaire à l'adresse suivante : http://etsmtl.ca/Etudiants-actuels/Baccalaureat/Examens-finaux
Politique de retard des travaux
Tout travail (devoir pratique, rapport de laboratoire, rapport de projet, etc.) remis en retard sans motif valable, c’est-à-dire autre que ceux mentionnés dans le Règlement des études (1er cycle, article 7.2.5/ cycles supérieurs, article 6.5.2) se verra attribuer la note zéro, à moins que d’autres dispositions ne soient communiquées par écrit par l’enseignante ou l’enseignant dans les consignes de chaque travail à remettre ou dans le plan de cours pour l’ensemble des travaux.
Absence à un examen
Dans les cinq (5) jours ouvrables suivants, la tenue de son examen, l’étudiante ou l’étudiant devra justifier son absence d’un examen durant le trimestre auprès de la coordonnatrice ou du coordonnateur – Affaires académiques qui en référera à la personne assurant la direction du département. Pour un examen final, l’étudiante ou l’étudiant devra justifier son absence auprès du Bureau de la registraire. Dans tous les cas, l’étudiante ou l’étudiant doit effectuer sa demande en complétant le formulaire de demande d’examen de compensation qui se trouve dans son portail Mon ÉTS/Formulaires. Toute absence non justifiée par un motif majeur (maladie certifiée par un billet de médecin, décès d’un parent immédiat, activité compétitive d’une étudiante ou d’un étudiant appartenant à un club scientifique ou un club sportif d’élite de l’ÉTS ou au programme « Alliance sport étude » ou autre) à un examen entraînera l’attribution de la note zéro (0).
Infractions de nature académique
Les clauses du « Règlement sur les infractions de nature académique de l’ÉTS » s’appliquent dans ce cours ainsi que dans tous les cours du département. Les étudiantes et les étudiants doivent consulter le Règlement sur les infractions de nature académique (www.etsmtl.ca/a-propos/gouvernance/secretariat-general/cadre-reglementaire/reglement-sur-les-infractions-de-nature-academique) pour identifier les actes considérés comme étant des infractions de nature académique ainsi que prendre connaissance des sanctions prévues à cet effet. À l’ÉTS, le respect de la propriété intellectuelle est une valeur essentielle et tous les membres de la communauté étudiante sont invités à consulter la page Citer, pas plagier ! (www.etsmtl.ca/Etudiants-actuels/Baccalaureat/Citer-pas-plagier).
Systèmes d’intelligence artificielle générative (SIAG)
L’utilisation des systèmes d’intelligence artificielle générative (SIAG) dans les activités d’évaluation constitue une infraction de nature académique au sens du Règlement sur les infractions de nature académique, sauf si elle est explicitement autorisée par l’enseignante ou l’enseignant du cours.
Documentation obligatoire
Aucune référence obligatoire.
Ouvrages de références
Horstmann, Cay, Big Java, 3rd Edition, San Jose State Univ., John Wiley & sons, 2007, 1248 pages.
Horton’s, Ivor, Ivor Horton’s beginning Java™ 2, JDK™5 Edition, Indianapolis, Wiley Publishing, Inc., 2005, 1470 pages.
Autres informations
Les séances de cours et de travaux pratiques des cours-groupes dont le mode d'enseignement est hybride sont offertes entièrement à distance. L'étudiante ou l'étudiant inscrit à un tel cours-groupe n'a donc pas besoin de se déplacer à l'École durant la session, sauf lors des évaluations en présence identifiées à la section "Évaluation".