Université du Québec en Outaouais Département d'informatique et d'ingénierie
Sigle : INF1573  Gr. 01
Titre : Programmation II
Session : Hiver 2019  Horaire et local
Professeur : Benyahia, Ilham
1. Description du cours paraissant à l'annuaire :

Objectifs

Approfondir les concepts de la programmation orientée-objet. Sensibiliser au développement de programmes de qualité.

Contenu

Types abstraits, polymorphisme, généricité, événements. Utilisation de librairies (JDK, STL ou similaire). Récursivité. Vérification, tests et documentation de programmes. Présentation des langages C et C++, discussion de certains concepts dans le contexte du langage Java : passage de paramètres, pointeurs, structures, "templates", etc. Notions d'analyse numérique: précision. Ce cours comporte des séances obligatoires de travaux dirigés (TD) de deux heures par semaine.

Descriptif – Annuaire

2. Objectifs spécifiques du cours :
  1. Maîtriser les concepts de la programmation objet et leurs applications
  2. Être capable d'analyser les conséquences d'utilisation des concepts objet
  3. Acquérir des connaissances sur les composantes JDK permettant de faire la programmation par événements
  4. Acquérir des expériences pour développer des interfaces graphiques basées sur la programmation par événements
  5. Acquérir des connaissances sur les critères de qualité de la programmation par objet
  6. Expérimenter les méthodes d'analyse de qualité de la programmation incluant l'application des concepts objets et leurs impacts
  7. Distinguer la différence de la résolution de problèmes par les méthodes itératives et les méthodes récursives
  8. Maîtriser l'application des concepts objet sur deux langages différents : JAVA et C++

Ce cours couvre 3 des 12 qualités requises des diplômé(e)s telle que définies dans les normes d'agrément des programmes de génie au Canada (http://www.engineerscanada.ca/fr/ressources-en-matiere-dagrement) :

a. Qualité 1 : Connaissance en génie

b. Qualité 2 : Analyse de problèmes

c. Qualité 5 : Utilisation d'outils d'ingénierie

Les qualités 2 et 5 sont mesurées dans ce cours pour fins de rétroaction.

Objectifs spécifiques Qualité Indicateurs Introduit Développé Utilisé
1. Maîtriser les concepts de la programmation objet et leurs applications.

2

2. Formuler un processus de résolution de problème, comprenant des approximations et des hypothèses.

x

2. Être capable d'analyser les conséquences d'utilisation des concepts objet.

2

4. Évaluer les résultats obtenus et formuler des conclusions.

x

1. Acquérir des expériences pour développer des interfaces graphiques basées sur la programmation par événements.

5

2. Utiliser les outils, techniques de mesure, modèles ou simulations appropriés.

x

3. Stratégies pédagogiques :

Les formules pédagogiques suivantes seront utilisées :

  • L'enseignement est dispensé sous forme magistrale (3h/semaine). Des exercices seront donnés durant ces séances pour illustrer les notions nouvellement introduites.
  • Les étudiant(e)s doivent participer en classe pour mieux saisir les notions qui seront présentées pendant le cours. En plus des travaux pratiques évalués, d'autres travaux seront demandés pour renforcer l'atteinte des objectifs du cours.
  • Des séances de travaux dirigés (2 h/séance) viendront appuyer les séances de cours. Ces séances se font en présence d'un assistant. La présence des étudiant(e)s est obligatoire.
4. Heures de disponibilité ou modalités pour rendez-vous :

Consultations : sur rendez-vous. ilham.benyahia@uqo.ca

5. Plan détaillé du cours sur 15 semaines :
Semaine Thèmes Dates
1   

Introduction

  • Plan du cours
  • Présentation des concepts objets :
    1. Concepts de classes et objets
    2. Concepts d'héritage et polymorphisme
    3. Concepts d'encapsulation
  • Notions de généricité
  • Notions sur les types abstraits
09 jan. 2019 
2   

Programmation orientée objet : Différentes formes d'héritage et notions sur la réutilisation

  • Introduction
  • Relation d'héritage
  • Étude de cas

Travail dirigé #1 : Le mardi 15 janvier ou le jeudi 17 janvier 2019 : Les Concepts objet

16 jan. 2019 
3   

Programmation orientée objet (suite) : Polymorphisme

  • Introduction
  • Classes et méthodes abstraites
  • Études de cas
  • Test formatif 1

Énoncé du devoir 1

Travail dirigé #2 : Le mardi 22 janvier ou le jeudi 24 janvier 2019 : Les Concepts objet (Suite – TD 1)

23 jan. 2019 
4   

Programmation par événements

  • Les composantes graphiques
  • Les Applets
  • Les swings
  • Études de cas

Travail dirigé #3 : Le mardi 29 janvier ou le jeudi 31 janvier 2019 : Applications : relations entre les classes et héritage

30 jan. 2019 
5   

Principes de qualité de la programmation

  • Introduction
  • Tests de vérification
  • Test évalué 1

Travail dirigé #4 : Le mardi 05 février ou le jeudi 07 février 2019 : Utilisation du polymorphisme

06 fév. 2019 
6   

Qualité de la programmation (suite)

  • Étude de cas
  • Révision pour l'examen intra
  • Énoncé du devoir 2

Travail dirigé #5 : Le mardi 12 février ou le jeudi 14 février 2019 : La programmation par événements

13 fév. 2019 
7   

Qualité de la programmation (suite)

  • Documentation des programmes

Travail dirigé #6 : Le mardi 19 février ou le jeudi 21 février 2019 : Analyse de la qualité de la programmation

20 fév. 2019 
8   

Le traitement des exceptions

  • Bases de traitements des exceptions
  • Exemples de classes d'exceptions
  • Déclarations de nouveaux types d'exception

Travail dirigé #7 : Le mardi 26 février ou le jeudi 28 février 2019 : Concepts objet en C++ – Partie 1

27 fév. 2019 
9   

Semaine d'études

06 mars 2019 
10   

Le traitement des exceptions (suite)

  • Test formatif 2

Travail dirigé #8 : Le mardi 12 mars ou le jeudi 14 mars 2019 : Concepts objet en C++ – Partie 2

13 mars 2019 
11   

Récursivité

  • Concepts de récursivité
  • Exemples utilisant la récursivité
  • Récursivité vs itération

Travail dirigé #9 : Le mardi 19 mars ou le jeudi 21 mars 2019 : Concepts objet en C++ – Partie 3

20 mars 2019 
12   

Étude de cas

  • Résolution de problèmes d'analyse numérique
  • Test évalué 2

Travail dirigé #10 : Le mardi 26 mars ou le jeudi 28 mars 2019 : Concepts objet en C++ – Partie 4

27 mars 2019 
13   

Java vs C++ : héritage multiple, amies, fonctions virtuelles, surcharge des opérateurs, gabarits, pointeurs

03 avr. 2019 
14   

Révision et préparation de l'examen final

10 avr. 2019 
15   

Examen final

17 avr. 2019 
6. Évaluation du cours :

Il faut obtenir au moins 50 % de la note aux examens (tests évalués et final) pour que les notes des autres travaux (devoirs) soient prises en compte dans le calcul de la moyenne finale.

Outils d'évaluation Pondération Indicateurs évalués
Devoir 2

25 %

5.2, 2.2 et 2.4

Tests évalués

25 %

2.2 et 2.4

Examen final

35 %

2.2 et 2.4

Travaux dirigés

5 %

Devoir 1

10 %

Par indicateur mesuré, on entend qu'à la fin du cours, un niveau de performance (0, 1, 2, 3) est donné pour chaque indicateur et pour chaque étudiant(e) selon la grille ci-dessous :

Indicateurs Niveau 0 Niveau 1 Niveau 2 Niveau 3
2.2 – Formuler un processus de résolution de problème, comprenant des approximations et des hypothèses. Formulation du processus de résolution inacceptable et traitement inadéquat des approximations et des hypothèses Formulation du processus de résolution acceptable, mais traitement partiel des approximations et des hypothèses Formulation du processus de résolution et traitements des approximations et des hypothèses acceptables Formulation du processus de résolution et traitement des approximations et des hypothèses remarquables
2.4 – Évaluer les résultats obtenus et formuler des conclusions. Évaluation et/ou conclusions inexistantes Évaluation et conclusions partielles Évaluation et conclusions acceptables Évaluation et conclusions remarquables
5.2 – Utiliser les outils, techniques de mesure, modèles ou simulations appropriés. Utilisation inadéquate ou inexistante Utilisation partielle Utilisation adéquate Utilisation remarquable
7. Politiques départementales et institutionnelles :
8. Principales références :

Les notes de cours représentent la principale référence. Les étudiant(e)s doivent aussi consulter régulièrement des documents parmi ceux qui seront suggérés et particulièrement ceux qui seront mis en réserve à la bibliothèque.

Non obligatoires mais fortement recommandés :

  • Object-Oriented Problem Solving. Java, Java, Java. Ralph Morelli, Prentice-Hall. 2003, ISBN 0-13-033370-0.
  • Java How to program, 6th Edition. H. M. Deitel et P.J. Deitel.Prentice Hall, 2005. ISBN 0-13-148398-6.

Autres références – à consulter :

  • On To Java. P. H. Winston et S. Narasimhan, 3rd Edition (version en ligne).
  • Object-Oriented Programming with Java - An Introduction, D. J. Barnes, Prentice-Hall, 2000, ISBN 0-13-086900-7.
  • Understanding Object-Oriented Programming with Java. T. Budd, Addison-Wesley, 2000, ISBN 0-201-61273-9.
  • An Introduction to Object-Oriented Programming third edition, T. Budd, Addison-Wesley. 2001, ISBN: 0-201-76031-2.
  • The Java Class Libraries Second Edition, Volume 1. P. Chan, R. Lee and D. Kramer. Addison-Wesley, 1998, ISBN:0-201-31002-3.
  • Object-Oriented Programming with C++ and Smalltalk, Caleb Drake, Prentice-Hall. 1998, ISBN: 0-13-103797-8.
9. Page Web du cours :
https://moodle.uqo.ca