Université du Québec en Outaouais Département d'informatique et d'ingénierie
Sigle : INF4053  Gr. 01
Titre : Techniques de programmation II
Session : Automne 2005   Horaire et local
Professeur : Dargham, Joumana
1. Description du cours paraissant à l'annuaire :

Objectifs

Permettre à l'étudiant d'approfondir les méthodes de conception et de programmation structurée et de l'introduire à la programmation orientée objet.

Contenu

Techniques de récursivité. Méthodes de tri et de recherche. Pointeurs. Principes de la programmation orientée objets : classes, sous-classes, héritage, polymorphisme. Méthodologies de programmation avec un langage de haut niveau. Tests et documentation de programmes. Applications diverses.
2. Objectifs spécifiques du cours :
Permettre à l'étudiant d'approfondir les méthodes de conception et de programmation structurée, de comprendre les notions de types de données structurées et de le rendre apte à les utiliser dans des applications réelles.
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 étudiants ayant un portable sont fortement encouragés à l'utiliser pendant le cours.
  • Des séances d'exercices (2h/semaine) viendront appuyer les séances de cours. Ces séances se font en présence d'un assistant. La présence des étudiants à ces laboratoires est jugée importante.
  • Il y aura 4 devoirs et 2 quizs.
  • Un examen de mi-session et un examen final.
  • Une page WebCT sera consacrée au cours.
4. Heures de disponibilité ou modalités pour rendez-vous :
Mardi : 13h00 à 15h00 et sur rendez vous (e-mail : dargham@uqo.ca)
5. Plan détaillé du cours sur 15 semaines :
Semaine Thèmes Dates
1    Introduction et aperçu général
  • Le langage C++ vs C
  • Exemples de programmes C et C++
  • Les éléments du langage C++
  • Le pré-processeur et les librairies C++
06 sept. 2005 
2    La programmation OO en C++
  • Concepts de base
  • La déclaration des variables
  • La définition des classes
  • Les instructions d'entrée/sortie
  • Les structures de contrôle conditionnelles et itératives
  • Les fonctions
13 sept. 2005 
3    La récursivité
  • La nature de la récursivité
  • Trace des fonctions récursives
  • Fonctions mathématiques récursives (Factoriel, ...)
  • Étude de cas
20 sept. 2005 
4    Les tableaux
  • Les tableaux à une dimension
  • Initialisation et réservation automatique
  • Tableaux à plusieurs dimensions
  • Passage de tableaux comme paramètres des fonctions
  • Méthodes de recherche dans un tableau
27 sept. 2005 
5    Les pointeurs et chaînes
  • Les pointeurs
  • Les opérateurs new et delete
  • Les listes chaînées
  • Pointeurs et tableaux
  • Représentation d'une pile par une liste chaînée
04 oct. 2005 
6   
  • Semaine d'études
11 oct. 2005 
7   
  • Examen de mi-session
18 oct. 2005 
8    Les classes et abstraction de données (1)
  • Rappel sur les structures
  • Portée de classe et accès aux membres d'une classe
  • Contrôle de l'accès aux membres
  • Séparation entre l'interface et l'implantation
  • Fonctions d'accès et fonctions utilitaires
  • L'initialisation d'objets de classes : constructeurs
  • L'utilisation des destructeurs
  • Utilisation des membres de données et des fonctions membres
25 oct. 2005 
9    Les classes et abstraction de données (2)
  • Objets const (constants) et fonctions membres const
  • Composition : Objets comme membres de classes
  • Fonctions friend (amies) et classes friend
  • Utilisation du pointeur This
  • Membres de classes static
01 nov. 2005 
10    La surcharge des opérateurs
  • Fondements de la surcharge des opérateurs
  • Restrictions de la surcharge des opérateurs
  • Fonctions des opérateurs comme membres de classe et comme fonctions amies
  • Surcharge d'opérateurs unaires et binaires
08 nov. 2005 
11    L'héritage simple et multiple
  • Introduction à l'héritage
  • Classes de base et classes dérivées
  • Membres protected
  • Substitution des fonctions membres d'une classe de base dans une classe dérivée
  • Les différentes formes d'héritage
  • Emploi de constructeurs et de destructeurs dans des classes dérivées
  • Polymorphisme et liaison dynamique

Étude de cas: Point, Cercle, Cylindre

15 nov. 2005 
12    Le traitement des exceptions
  • Bases de traitement des exceptions en C++ : try, throw, catch
  • Lancement d'une exception
  • Capture d'une exception

Exemple, Dépilage de la pile

22 nov. 2005 
13    La gestion des fichiers
  • Hiérarchie des données
  • Créer un fichier à accès séquentiel
  • Lire des données d'un fichier à accès séquentiel
  • Mettre à jour des fichiers à accès séquentiel
29 nov. 2005 
14    Tests et documentation de programmes
  • Invariants, pré et postconditions
  • Tests unitaires
  • Tests d'intégration
  • Révision
06 déc. 2005 
15   
  • Examen final
13 déc. 2005 
6. Évaluation du cours :
  • Examen de mi-session : 30 %
  • Examen final : 40 %
  • Quizs : 15 %
  • Devoirs : 15%
7. Politiques départementales et institutionnelles :
8. Principales références :
Références
  1. Notes de cours disponibles sur WebCT.
  2. Bjarne Stroustrup, The C++ programming language, Addison-Wesley 2000
  3. Deitel, Deitel, C++ How to program, Fourth edition, Prentice-Hall, 2002.
  4. Delannoy, C., Programmer en langage C++, Eyrolles, 1996.
  5. Frank L. Friedman, Elliot B. Koffman, Problem solving, abstraction, and design using C++, Fourth edition, Addison-Wesley, 2003.
  6. Budd, Timothy, An introduction to object-oriented programming, Third edition, Addison-Wesley, 2002.

La page web du cours se trouve sur WebCT.

9. Page Web du cours :