Logo ÉTS
Session
Cours
Responsable(s) Pierre Bélisle

Se connecter
 

École de technologie supérieure
Service des enseignements généraux
Responsable(s) de cours : Pierre Bélisle


PLAN DE COURS

Hiver 2019
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

Qn
Qualité visée dans ce cours  
Qn
  Qualité visée dans un autre cours  
  Indicateur enseigné
  Indicateur évalué
  Indicateur enseigné et évalué



Descriptif du cours
Cours destiné 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'étudiant d’ :

  • Utiliser un environnement de programmation Java (BlueJ, Eclipse, JCreator 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’étudiant doit au préalable avoir une compréhension des concepts suivants[1] :

  • 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

Les deux premiers cours serviront à 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

Micro-ordinateur.




Horaire
Groupe Jour Heure Activité
01 Mardi 09:00 - 12:30 Activité de cours
Jeudi 09:00 - 12:00 Laboratoire
02 Lundi 09:00 - 12:30 Activité de cours
Mercredi 09:00 - 12:00 Laboratoire
03 Mercredi 13:30 - 17:00 Activité de cours
Vendredi 09:00 - 12:00 Laboratoire
04 Mercredi 13:30 - 16:30 Laboratoire
Vendredi 09:00 - 12:30 Activité de cours



Coordonnées de l’enseignant
Groupe Nom Activité Courriel Local Disponibilité
01 Frédéric Simard Activité de cours Frederic.Simard@etsmtl.ca B-2568
01 Frédéric Simard Laboratoire Frederic.Simard@etsmtl.ca B-2568
01 Samuel Leclerc Laboratoire samuel.leclerc.4@ens.etsmtl.ca
03 Simon Pichette Activité de cours simon.pichette@etsmtl.ca A-2608
03 Simon Pichette Laboratoire simon.pichette@etsmtl.ca A-2608
03 Louis-Philippe Majeau Laboratoire louis-philippe.majeau.1@ens.etsmtl.ca
04 Pierre Bélisle Activité de cours Pierre.Belisle@etsmtl.ca B-2524
04 Pierre Bélisle Laboratoire Pierre.Belisle@etsmtl.ca B-2524
04 Samuel Leclerc Laboratoire samuel.leclerc.4@ens.etsmtl.ca



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.
  • L'ordre de présentation peux varier selon l'enseignant.

 

Unité

MATIÈRE

      1  - 4

  • Environnement Java.
  • Programmation de base en Java.
    • Types primitifs (variables et littéraux), variable, constantes, conversion de type (typecasting), opérateurs (+, -, *, >=, <=, …), instructions de contrôle (if-else, while,  do-while), entrées/sorties (Scanner(), System.out), programme principal (main()).
  • Normes de programmation

 

  • Programmation de base en Java.
  • Introduction aux méthodes (procédures et fonctions), aux enregistrements (attribut à accès publique), aux classes (attribut à accès privé) et aux objets
    • Collection de base en Java
      • Les tableaux statiques
        • Boucle for
      • Tableaux
        • De données de type primitif
        • D’objets
      • Enregistrements
        • init, eqals
  • Algorithmes de Tris : sélection, insertion et bulles
  • Algorithme de fouilles : linéaire, linéaire ordonnée et binaire (ou dichotomique)

 

  • Conception dans le paradigme orientée-objet
    • Définitions
      • Surcharge (overload) et redéfinition (override).
      • Modificateur accès (public et private)
      • Constructeur
      • this()
      • Classes immuables et accesseurs (get),
      • Classes mutables et mutateurs (set)
      • Destructeur (finalize)
      • Constantes  static
      • Commentaire Javadoc
  • Les paquetages (package) java.lang et java.util de Java
    • Classes de Java : String, Arrays et Math
  • Les API de Java

5

  • Examen 1 (cours 1 – 4)  : 1h30

5 - 8

  • Collection
    • Implémentation complète des classes Pile (LIFO) et File (FIFO) avec  implémentation statique et chaînage dynamique.
    • Implémentation d'une liste avec position_courante implicite (comme un fichier) .

 

  • Levée (throws et throw) et gestion d’exception (try-catch).
  • Classe interne (inner class).
  • Classes enveloppeurs (wrapper) Integer, Double, ...
    et conversion automatique (autoboxing et unboxing) (java 5.0 et +).

9

  • Examen 2 (cours 5 – 8) : 1h30

9 - 13

  • Ajout de comportement à une classe
    • Par héritage (classe ou interface)
      • Utilité
      • Retour sur la redéfinition (overide)
      • Syntaxe (extends, super)
      • Compatibilité parent-enfant
    • Par composition
  • Généralisation/spécialisation (un exemple).
  • Polymorphisme dynamique (late binding).
 
  • Les interfaces graphiques Swing sont présentées comme prétexte d'utilisation des trois concepts orientés-objet soit : Encapsulation, héritage et polymorphisme dynamique.

  • GUI (Graphical User Interface)
    • Composants Swing
      • JFrame, JPanel, JButton JTextField, JMenuBar, JMenu, JMenuItem,  Layout Manager, …
    • Gestion d’évènements (bas et haut niveau).
   Examen final (cours 1-13)



Laboratoires et travaux pratiques

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'étudiant les réalise.  Nous pouvons les utiliser en référence dans les cours, les examens et/ou dans les travaux pratiques.




Utilisation d'outils d'ingénierie

S.O.




Évaluation
Évaluation Pondération Semaine Gr. 01 Gr.02 Gr.03 Gr.04
Travail  # 1 8 %  5 7  février 6  février 10  février 6 février
Examen 1 (1h30) 10 % 5 5 février 4 février 6 février 1 février
Travail # 2 12 % 9 7 mars 6 mars 10 mars 6 mars
Examen 2 (1h30) 15 % 9 5 mars 4 mars 6 mars 8 mars
Travail # 3 15 % 13 7 avril 7 avril 7 avril 7 avril
Examen final (3h00) 40 % Période d'examen final


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 l'examen final :

  • L'examen final est d'une durée de 3 heures.
  • Aucune documentation n'est permise.
  • L'utilisation de la calculatrice est interdite.



Dates des examens intra
# Intra Groupe(s) Date
1 1 5 février 2019
1 2 4 février 2019
1 3 6 février 2019
1 4 1 février 2019
2 1 5 mars 2019
2 2 4 mars 2019
2 3 6 mars 2019
2 4 8 mars 2019



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.7 b / cycles supérieurs, article 6.5.4 b) se verra attribuer la note zéro, à moins que d’autres dispositions ne soient communiquées par écrit par l’enseignant dans les consignes de chaque travail à remettre ou dans le plan de cours pour l’ensemble des travaux.



Absence à un examen
• Pour les départements à l'exception du SEG :
Dans les cinq (5) jours ouvrables suivant la tenue de son examen, l’étudiant devra justifier son absence d’un examen durant le trimestre auprès de la coordonnatrice – Affaires départementales qui en référera au directeur du département. Pour un examen final, l’étudiant devra justifier son absence auprès du Bureau du registraire. 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 ou autre) à un examen entraînera l’attribution de la note zéro (0).

• Pour SEG :
Dans les cinq (5) jours ouvrables suivant la tenue de son examen, l’étudiant devra justifier son absence auprès de son enseignant. Pour un examen final, l’étudiant devra justifier son absence auprès du Bureau du registraire. 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 ou autre) à un examen entraînera l’attribution de la note zéro (0).



Plagiat et fraude
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 étudiants doivent consulter le Règlement sur les infractions de nature académique (https://www.etsmtl.ca/A-propos/Direction/Politiques-reglements/Infractions_nature_academique.pdf ) 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 les étudiants sont invités à consulter la page Citer, pas plagier ! (https://www.etsmtl.ca/Etudiants-actuels/Baccalaureat/Citer-pas-plagier).



Documentation obligatoire

Aucune référence obligatoire.




Ouvrages de références

Autres 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.




Adresse internet du site de cours et autres liens utiles

https://ena.etsmtl.ca/course/view.php?id=537

Java version 8