Université du Québec en Outaouais Département d'informatique et d'ingénierie
Sigle : INF4053  Gr. 01
Titre : Techniques de programmation II
Session : Hiver 2006   Horaire et local
Professeur : Popescu, Ilie
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 :
 
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++
12 jan. 2006 
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
19 jan. 2006 
3    La récursivité
  • La nature de la récursivité
  • Trace des fonctions récursives
  • Fonctions mathématiques récursives (Factoriel, ...)
  • Étude de cas
26 jan. 2006 
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
02 fév. 2006 
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
09 fév. 2006 
6    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
16 fév. 2006 
7    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
23 fév. 2006 
8   
  • Semaine d'études
02 mars 2006 
9   
  • Examen de mi-session
09 mars 2006 
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
16 mars 2006 
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

23 mars 2006 
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

30 mars 2006 
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
06 avr. 2006 
14    Tests et documentation de programmes
  • Invariants, pré et postconditions
  • Tests unitaires
  • Tests d'intégration
  • Révision
13 avr. 2006 
15   
  • Examen final
20 avr. 2006 
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 :