syllabus

Remarques : Les liens externes de cette page représente des compléments (bibliographie de lien sur l'internet) au cours au Liban et non pas le cours en lui même.
  1. Programmation impérative et méthodes statiques en Java. (Rappel rapide et quelques exemples simples.) La classe Scanner pour lire du Std-input.
  2. Classes et Objets (avec notation UML)
    1. références,
    2. création d’objets (constructeur par défaut),
    3. gestion de la mémoire (garbage collector),
    4. accès aux attributs,
    5. Envoi de messages (appel de méthode),
    6. this (l’objet courant),
    7. Principe d’encapsulation (private, public) et les 2 avantages :
      1. Contrôle sur l’assignation de valeurs aux attributs,
      2. Cacher l’implémentation.
    8. Constructeurs avec paramètres, plusieurs constructeurs (surcharge), appel aux constructeurs this(…),
    9. Surcharge des méthodes,
    10. Variables de classe (statique),
    11. Méthodes de classes,
    12. Méthodes privées : intérêt,
    13. Constantes (final, final static),
    14. La méthode main et le paramètre String[] arg,
    15. Initialiseur statique
    16. La méthode finalize().
    17. Design Pattern : Singleton.
  3. Tableaux (1 et 2 dimensions, tableau est un objet, length un attribut public et final, tableau d’objets ou plutôt tableau de références, tableau initialisé à la déclaration, la classe Arrays et les méthodes sort et binarySearch avec un tableau d’entiers, notion de package et le modifieur blank).
  4. Délégation (Composition vs Agrégation, relation « a un », notation UML).
  5. Héritage et Polymorphisme
    1. Réutilisation des classes et le concept de spécialisation.
    2. Constructeurs non hérités et chaînage des constructeurs.
    3. Redéfinition des méthodes et réutilisation
    4. Visibilité des variables et méthodes (le modifieur protected).
    5. Classes et méthodes finales.
    6. Sur-classement des objets, lien dynamique, vérification statique, et Polymorphisme.
    7. Transtypage et vérification de type (instanceof)
    8. La méthode equals et toString() de la classe Object.
    9. Classes Abstraites et le concept de généralisation.
    10. Les interfaces en Java (comme déclaration des services offerts).
    11. Design Pattern : Pont, Stratégie
  6. Les collections
    1. L’interface Collection et ses méthodes, l’interface List à la classe ArrayList (Exemple d’utilisation sans typage, puis généricité)
    2. Design Pattern : Itérateur.
    3. La méthode hashCode de la classe Object , l’interface Set à la classe HashSet et itérateur obligatoire.
    4. L’interface Comparable et notion d’ordre sur les objets d’une classe. La méthode sort avec un tableau d’objets comparables. La classe TreeSet.
    5. L’interface Map à la classe HashMap et TreeMap.
    6. Implémentation d’une classe ListeChainee générique(avec des méthodes d’ajout, et une méthode iterator() qui renvoie un itérateur sur la liste. Cette dernière doit retourner un objet d’une classe interne implémentant l’interface Iterator).
    7. Les classes « enveloppes » (Integer, Double, …), quelques méthodes utiles (Integer.parseInt(…), …) et l’autoboxing.
    8. Les types énumérés.
    9. Apprendre aux étudiants d’utiliser la documentation Java et le tutorial.
  7. Les Exceptions et Assertions
    1. Exception est un signal (exemple de division par 0 et/ou NullPointerException, …)
    2. Les classes Throwable, Error, Exception, RuntimeException, méthodes et constructeurs (printStackTrace(), getMessage()).
    3. Traitement des exceptions (try, catch)
    4. Création des exceptions (throws, throw), propagation des exceptions.
    5. Ordre des clauses catch est important.
    6. Les assertions : instruction assert et intérêt.
    7. Activation des assertions et utilisation (Documenter les suppositions, tester les préconditions d’une méthode privée, tester les invariants)
  8. Programmation évènementielle (Swing) vers un document swing.pdf
    1. Les composants graphiques simples et les conteneurs(JFrame, JPanel, JButton, JLabel). Exemple simple.
    2. Les gestionnaires de Layout :FlowLayout, BorderLayout, GridLayout.
    3. Les JMenuBar, JMenu, JMenuItem, JTextField, JComboBox, …
    4. Evénements, objet source d’événements, objet écouteur. La classe ActionEvent, L’interface ActionListener, et les classes anonymes. (Exemple sur un bouton).
    5. MouseEvent, MouseListener, MouseMotionListener, les adapteurs.
    6. Overview sur JScrollPane, JTextArea, JColorChooser, JDesktopPane, JInternalFrame, JRadioButton, Programmation Graphique par Drag & Drop (Netbeans ou autre framework).
    7. Design Pattern : Observateur/Observé, (Utilisation des Api Java facilitant l’implémentation de ce pattern.)
    8. Utilisation de la classe JOptionPane. 
    9. ? Dessin 2D en Java et la méthode paintComponant de JPanel.
  9. Programmation des entrées/sorties
    1. Les streams d’octets (Exemple sur DataInput/OutputStream).
    2. Les streams de caractères : Reader/Writer (FileReader/Writer, BufferedReader, PrintWriter).
    3. La classe File et ses méthodes utiles
    4. Design Pattern : Décorateur.
  1. Introspection et réflexivité
    1. La classe Class. Déterminer l’objet Class à partir du nom de la classe ou d’une instance. Déterminer les attributs et les méthodes privés ou non et leurs modifieurs. Déterminer les paramètres d’une méthode.
    2. Exécution d’une méthode et/ou d’un constructeur.
  2. Les patrons de conception
    1. Patrons créateurs : Fabrique abstraite, Monteur, Méthode de Fabrique, Prototype.
    2. Patrons structurels : Adapteur, Composite, Facade.
    3. Patrons comportementaux : Chaîne de responsabilité, commande, interpréteur, Médiateur, État, Patron de méthode.
  3. Programmation concurrente.
    1. La classe Thread et l’interface Runnable (définir un thread, lancement, attente, arrêt).
    2. Synchronisation des threads et section critique,
    3. Coordination des threads et Moniteur.
    4. Collection et accès concurrente (java.util.concurrent)
  4. XML et Java
    1. Introduction à XML
    2. DTD et validation
    3. Parseur XML (API SAX et JDOM)
  5. Expressions Régulières
    1. La classe String et ses méthodes,
    2. Les classes StringTokenizer et StreamTokenizer
    3. Les classes du package java.util.regex. 
  6. ? JDBC