Introduction à l Informatique (INF 311) Amphi 4 : programmer avec des objets. Amphi 4 : programmer avec des objets

Dimension: px
Commencer à balayer dès la page:

Download "Introduction à l Informatique (INF 311) Amphi 4 : programmer avec des objets. Amphi 4 : programmer avec des objets"

Transcription

1 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 3/61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 4/61 Introduction à l Informatique (INF 311) Modéliser, Abstraire, Programmer F. Morain Amphi 4 : programmer avec des objets 5 mai 2014 Amphi 4 : programmer avec des objets I. Préambule. II. La programmation par objets. III. Polymorphisme : interfaces. IV. Modularité. V. Étude de cas: le jour d après. A1: introduction A6 : données A2: tableaux A7 : listes chaînées A3: classes, objets A8 : arbres A4 : modularité A9 : stockage efficace de l information A5 : récursivité A10 : algorithmes semi-numériques F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 1/61 I. Préambule F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 2/61 Actualités : le bug d Internet Explorer La programmation est une des activités les plus complexes jamais entreprises par l homme. Navette spatiale: 1200 hommes années, 2200 Kisl (Kilo Instructions Source Livrées), 6 ans. B777: 4000 Kisl, 7 ans. Quelques systèmes Windows Date Produit # éq. dév. # éq. test LOC Juillet-93 NT millions Déc-99 NT 5.0 1,400 1, millions Oct-01 NT 5.1 1,800 2, millions Avril-03 NT 5.2 2,000 2, millions Vista?? > 50 millions (Sources : FireEye blog + MSR, Microsoft Security Advisory , 26/04/2014) IE: 26.5 % des navigateurs dans le monde Bug dans les versions IE6 à IE11 : contournement des mécanismes de protection de la mémoire (Heap Feng Shui). Bugs dans beaucoup de versions, dont certaines tournant dans XP et ne seront pas patchées (obsolescence programmée?). BIO-DIVERSITÉ

2 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 7/61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 8/61 Mais encore? Un programme ressemble à un pont Génie logiciel (Software engineering): Spécification Programmation Correction Question primordiale: comment passe-t-on à l échelle? Grands principes : concision ; modularité interne et externe ; réutilisation. Plus le projet est grand, plus il faut soigner l architecture et le planning. Les problèmes humains ne peuvent être négligés. Découvrir les erreurs très vite est essentiel (la découverte tardive est catastrophique). Les erreurs peuvent être désastreuses (Ariane 5 1 milliard de dollars). Utiliser des préfabriqués permet de gagner du temps. Cf. The mythical Man-Month de F. P. Brooks (OS de l IBM 360, au début des années 1970). F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 5/61 Un programme n est pas un pont F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 6/61 La chaîne de production logicielle Le logiciel est purement abstrait; il est invisible, car il n est vu que par son action sur un matériel physique. Il est difficile de le faire voir à autrui. Le logiciel est écrit pour être changé, amélioré. Le logiciel est en partie réutilisable. Spécification du produit Architecture du programme Planification du travail Division en sous-systèmes Structures de données et algorithmes Découpage en modules Le logiciel peut/doit être testé à tout moment de sa création. Architecture détaillée Programmation Débogage Validation/Tests Maintenance

3 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Planification du travail II. La programmation par objets Répartition du temps : 1/3 de spécification; 1/6 de programmation; 1/4 de test (alpha par les développeurs); 1/4 d intégration et test (beta par des extérieurs). Turing award 2001 pour Nygaard et Dahl: For ideas fundamental to the emergence of object oriented programming, through their design of the programming languages Simula I and Simula 67. Fonctionnalité 90% 100% Langages avec des objets: C++, Eiffel, Java, Ocaml,... 50% Temps F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 9/61 Pourquoi la programmation par objets? F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Objets en Java Modularité: les objets favorisent le regroupement des fonctions et des données structuration. Les objets sont les instances d une classe. Ils ont un état (la valeur de leurs champs de données) et un ensemble de méthodes attachées. Rem. Modularité programmation par objets (cf. Modula, ML). Programmation incrémentale: on définit des classes qu on peut étendre par héritage a posteriori (e.g. AWT), cf. INF411, INF441. très populaire dans l industrie. données méthodes données méthodes données méthodes Très utilisée dans les boîtes à outils graphiques (look commun à toutes les fenêtres) et réseau (données et méthodes se déplacent simultanément). code données statiques

4 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Objets en Java: exemple public class Rationnel{ public long num, den; public Rationnel(long n, long d){ this.num = n; this.den = d; public static Rationnel mult(rationnel r1, Rationnel r2){... public Rationnel multiplierpar(rationnel r){... Le compilateur différencie une méthode de classe, identifiée par static, d une méthode d objet sans static. On explique plus loin la raison de ces noms. F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Pour des classes quelconques? II. Polymorphisme : interfaces Ex. Écrire une fonction qui retourne le minimum d un tableau. public static int minimum(int[] t){ int mini = 0; for(int i = 1; i < t.length; i++) if(t[i] <= t[mini]) mini = i; return t[mini]; public static double minimum(double[] t){ int mini = 0; for(int i = 1; i < t.length; i++) if(t[i] <= t[mini]) mini = i; return t[mini]; F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 L interface ELEMENT Idéalement: la fonction public static ELEMENT minimum(element[] t){ int mini = 0; for(int i = 1; i < t.length; i++) if(t[i].estpluspetit(t[mini])) mini = i; return t[mini]; devrait pouvoir marcher pour toute classe ELEMENT possédant une méthode estpluspetit. En Java, on utilise une interface. C est un exemple de polymorphisme ad hoc. On verra le polymorphisme générique plus tard. Dans le fichier ELEMENT.java: public interface ELEMENT{ public String tostring(); public boolean estpluspetit(element v); Une interface peut contenir: des méthodes d objets, des variables de classe final; mais ne peut pas contenir: des champs; des méthodes de classes.

5 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Utilisation immédiate public class Tableau{ public static ELEMENT minimum(element[] t){ int mini = 0; for(int i = 1; i < t.length; i++) if(t[i].estpluspetit(t[mini])) mini = i; return t[mini]; (dans Tableau.java). Exemple 1 public class IntegerElt implements ELEMENT{ private int clef; // non requis public IntegerElt(int n){ // non requis this.clef = n; public String tostring(){ // requis return "" + this.clef; // interface + compilation public boolean estpluspetit(element w){ return this.clef <= ((IntegerElt)w).clef; (dans IntegerElt.java). F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Exemple 1 (suite) F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Exemple 2 import tc.tc; public class TestTableau{ public static void main(string[] args){ IntegerElt[] t = new IntegerElt[10]; for(int i = 0; i < t.length; i++){ t[i] = new IntegerElt((int)(Math.random()*10)); TC.println(t[i]); TC.println("min="+Tableau.minimum(t)); public class ChaineElt implements ELEMENT{ private String clef; // non requis public ChaineElt(String s){ // non requis this.clef = s; public String tostring(){ // requis return this.clef; public boolean estpluspetit(element w){ int cmp = this.clef.compareto(((chaineelt) w).clef); return cmp <= 0; (dans ChaineElt.java).

6 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Exemple 2 (suite) import tc.tc; public class TestTableau{ Comment ça marche (1/2) interface ELEMENT public static void Test(ELEMENT[] t){ TC.println("min="+Tableau.minimum(t)); public static void main(string[] args){ ChaineElt[] u = new ChaineElt[10]; for(int i = 0; i < u.length; i++){ u[i] = new ChaineElt("a"+(int)(Math.random()*10)); TC.println(u[i]); Test(u); public class Tableau{ public static ELEMENT minimum(...) public class TestTableau public static void Test(ELEMENT[] t){ public class IntegerElt implements ELEMENT F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Comment ça marche (2/2) F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Intérêt des interfaces Le compilateur se satisfait de cela (grâce à interface/implements). Le choix de la méthode est faite à l exécution: liaison retardée. static: connu à la compilation. Le reste est connu à l exécution (de façon non statique). Interface = super-type = norme Souplesse: contrats entre modules. On peut changer d implantation sans perturber le programme principal. Prévoir le futur (programme évolutif) : si une nouvelle classe apparaît, on n a pas besoin de tout recompiler, grâce à la liaison retardée. Rem. C est comme cela qu on implante/utilise des plug-in(s).

7 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 IV. Modularité Vous avez dit modularité? (2/2) Airbus : Déf. Découper une tâche en sous-tâches les plus indépendantes possible. ailes au Royaume-Uni ; avant et arrière des fuselages en Allemagne ; nez et partie centrale des fuselages en France ; empennages verticaux en Allemagne ; mâts et nacelles des réacteurs en France ; stabilisateurs horizontaux et certaines sections de l A380 en Espagne. Desktop (bureau) : le système s occupe de la gestion des fichiers; le système de fenêtrage de l affichage. F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Software city (1/2) F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Software city (2/2) Vue d eclipse (Source: ERCIM NEWS, no 88, janvier 2012) lignes de Java; 1,900 packages (les quartiers), 29,000 classes (immeubles: hauteur = nombre de méthodes, base = nombres de variables).

8 Vous l avez déjà pratiquée! Un exemple plus compliqué Math String Promotion tc.tc cie1 cie2 cie3 cie4 section natation MaClasse personnel élève A B: B utilise A. F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 A) Modularité: comment? Le découpage d un problème fait intervenir des tâches distinctes, comme dans le cas de Promotion. Classiquement, chaque tâche est appelée module. Un module a une partie publique et une partie privée. Le programmeur/utilisateur doit s attacher à ne voir des modules que la partie publique. Permet le travail collaboratif. Le programmeur de module peut se concentrer sur son module et des tests unitaires associés. En Java 1, un module est une classe. Un ensemble de classes peut former un paquetage (package) une bibliothèque (ex. MacLib). F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Contrôle d accès Pour les membres d une classe, il y a 4 types d accès: public pour permettre l accès depuis toutes les classes. private pour restreindre l accès aux seules expressions ou fonctions de la classe courante, ainsi qu aux champs/méthodes d autres instances de la même classe: encapsulation : cacher et protéger les composantes intérieures (le type) de l objet, et forcer les accès par des méthodes. protected pour restreindre l accès aux sous-classes, cf. cours d année 2. par défaut pour autoriser l accès depuis toutes les classes du même paquetage. 1. comme en C++ F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61

9 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Exemple: la classe String Complément sur le type char: les constantes s écrivent a, A, 0, +,.... Il existe des caractères spéciaux :, \n, \r, \t, \. Unicode : codage des caractères sur 16 bits (vs. 8 bits en ASCII) qui permet le codage de tous les types d alphabet. Les caractères utiles pour le français sont de code compris entre \u0020 (pour espace) et \u00fc (pour ü), le tout en hexadécimal. Comment créer une String : String s = "Bonjour!"; par concaténation : s = "Bonjour" + "!"; par conversion : s = String.valueOf(i); F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Exemple : émulons la classe String public class Chaine{ // inaccessible depuis l extérieur private char[] s; public Chaine(char[] t){ this.s = new char[t.length]; for(int i = 0; i < t.length; i++) this.s[i] = t[i]; // s.length() public int longueur(){ return this.s.length; // encapsulation // s.charat(i) public char caractere(int i){ return this.s[i]; // encapsulation On ne veut pas de c.setcharat(int i). String s char[] s s.length() retourne la longueur de s (au lieu de t.length pour un tableau) ; s.charat(i) retourne le i-ième caractère de s (compté à partir de 0) ; s.equals(t) : retourne true si s et t contiennent les mêmes caractères; plus précis s.compareto(t); Immutable : on ne peut pas écrire String s = "Bonjour!"; s.charat(0) = S ; Bug.java:4: unexpected type required: variable found : value s.charat(0) = S ; ^ 1 error F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 public class TestChaine{ public static void main(string[] args){ char[] t = new char[]{ a, b, c ; Chaine str = new Chaine(t); TC.println(str.longueur()); // affiche 3 t[0] = z ; TC.println(str.caractere(0)); // affiche a TC.println(str.s[0]); // erreur à la // compilation Chaine.java:33: s has private access in Chaine System.out.println(str.s[0]); ^ 1 error Chaine est bien non mutable, comme String.

10 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 B) Package Règles d accès dans les paquetages Math String Pour les membres d un paquetage, il y a 2 types d accès: une classe publique peut être accédée de l extérieur de son paquetage ; tc TC TestTC une classe sans qualificatif n est accessible que depuis son paquetage; de l extérieur du paquetage, double-protection: classe + méthodes doivent être publics (pas de champs public de préférence encapsulation). MaClasse tc est un package; il contient par exemple la classe TC. F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 V. Étude de cas: le jour d après F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Valider et tester Problème : à partir d une date donnée sous forme jj/mm/aaaa, afficher la date du lendemain. Remarques préliminaires : calendrier grégorien. quelles entrées? quelles sorties? Organisation : package le plus ouvert possible; traitement le plus précis des erreurs (utilisation d exceptions). G. J. Myers : tester, c est exécuter le programme dans l intention d y trouver des anomalies ou des défauts. Rem. Dans certaines branches de l industrie (aviation par ex.), les tests représentent 70% à 80% du coût du logiciel. Règle d or : il faut penser à écrire son programme de façon qu il soit facile à tester. écrire des tests avant d écrire le programme principal, ce qui permet de les réutiliser à chaque modification. Première décision : au moins une fonction jourplusun donnant la réponse sous la forme "jj/mm/aaaa".

11 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 A) Les données du problème On écrit d abord le programme de test Combien de jours m a-t-il? / Quand l année est-elle bissextile? si elle divisible par 4, sauf les années séculaires (divisibles par 100), qui ne sont bissextiles que si divisibles par 400. On veut tester (la future fonction) jourplusun. La fonction testaux(string jour, String attendu) devra comparer le résultat du calcul avec celui attendu. package calendrier; // modularité public class TestsLendemain{ public static void main(string[] args){ recette(); public static void recette(){ // cas normal testaux("11/01/2014", "12/01/2014"); // on change de mois testaux("31/01/2014", "01/02/2014"); // on change d année testaux("31/12/2013", "01/01/2014"); F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Tests (suite) F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 B) Définition de la classe // année non bissextile testaux("28/02/2011", "01/03/2011"); testaux("28/02/2014", "01/03/2014"); testaux("28/02/2100", "01/03/2100"); // année bissextile testaux("28/02/2000", "29/02/2000"); testaux("28/02/2012", "29/02/2012"); // erreurs de format testaux("12/12", "Il manque des informations"); // erreurs en entrée testaux("29/02/2011", "Date invalide"); // date fausse testaux("35/01/2011", "Date invalide"); package calendrier; // modularité public class Gregorien{ private int jour, mois, annee; public int getjour(){ return this.jour; public int getmois(){ return this.mois; public int getannee(){ return this.annee; public boolean equals(gregorien g){ return (this.jour == g.jour) && (this.mois == g.mois) && (this.annee == g.annee); etc., etc.

12 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Vérifiez les données d entrées! Principe : on doit vérifier les données avant de les passer à des fonctions qui s en servent. public static boolean estdatevalide(int j, int m, int a){ if(a < 1600) // très conservateur return false; if((m < 1) (m > 12)) return false; if((j < 1) (j > nbjoursdansmois(m, a))) return false; return true; Combien de jours dans le mois? final public static int[] JOURS_DANS_MOIS = new int[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; public static boolean estbissextile(int a){ if((a % 4)!= 0) return false; if((a % 100)!= 0) return true; return ((a % 400) == 0); public static int nbjoursdansmois(int m, int a){ if((m!= 2)!estBissextile(a)) return JOURS_DANS_MOIS[m-1]; else return 29; F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Un constructeur renforcé F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Entrée depuis une chaîne public Gregorien(int j, int m, int a) throws Exception{ // on avertit les appelants if(!estdatevalide(j, m, a)) // on lève une exception throw new Exception("Date invalide"); this.jour = j; this.mois = m; this.annee = a; Une exception est une façon propre de contrôler les cas exceptionnels (compléments dans le poly). toute fonction appelant le constructeur doit également avertir les autres (avec throws Exception), ou bien doit traiter l exception localement. // str doit etre de la forme "jj/mm/aaaa" public Gregorien(String str) throws Exception{ String[] tmp = TC.decoupage(str, / ); if(tmp.length!= 3) throw new Exception("Il manque des informations"); int j = Integer.parseInt(tmp[0]); int m = Integer.parseInt(tmp[1]); int a = Integer.parseInt(tmp[2]); if(!estdatevalide(j, m, a)) throw new Exception("Date invalide"); this.jour = j; this.mois = m; this.annee = a; TC.decoupage généralise TC.motsDeChaine().

13 C) Fonction de test Fonction de test suite public static void testaux(string s, String sp1){ try{ // on protège les appels Gregorien d = new Gregorien(s); Gregorien dp1 = new Gregorien(sp1); Gregorien dd = d.jourplusun(); if(dd.equals(dp1)) TC.println("OK : " + sp1); else TC.println("Erreur : " + dd + " au lieu de " + sp1); // si besoin on rattrape l exception catch(exception e){... public static void testaux(string s, String sp1){ try{... // si besoin on rattrape l exception catch(exception e){ // on compare l erreur avec celle attendue if(e.getmessage().equals(sp1)) TC.println("OK : " + sp1); else TC.println("J ai attrapé " + e); F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Conversion en chaîne public String tostring(){ String s = nombreverschaine(this.jour) + "/"; s += nombreverschaine(this.mois) + "/"; return s + this.annee; // retourne une chaine correspondant à // l entier n < 100 avec un // "0" en tête si nécessaire // aucun intérêt à être objet private static String nombreverschaine(int n){ if(n > 9) return "" + n; else return "0" + n; F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 La programmation par bouchons On écrit des fonctions simplistes, qui permettent de tester ce qu on a déjà écrit : public Gregorien jourplusun() throws Exception{ // contagion return new Gregorien(12, 1, 2014); Fournira seulement: OK : 12/01/2014 Erreur : 12/01/2014 au lieu de 01/02/2014 Erreur : 12/01/2014 au lieu de 01/01/2014 Erreur : 12/01/2014 au lieu de 01/03/2011 Erreur : 12/01/2014 au lieu de 01/03/2014 Erreur : 12/01/2014 au lieu de 01/03/2100 Erreur : 12/01/2014 au lieu de 29/02/2000 Erreur : 12/01/2014 au lieu de 29/02/ F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61

14 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 D) Les entrées package calendrier; public class Lendemain{ public static void action(){ TC.print("Entrez la date sous "); TC.println("la forme jj/mm/aaaa"); try{ String ligne = TC.lireLigne(); Gregorien d = new Gregorien(ligne); Gregorien dp1 = d.jourplusun(); TC.println("Date d+1=" + dp1.tostring()); catch(exception e){ TC.println("J ai attrapé l exception " + e); public static void main(string[] args){ action(); F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Quelques améliorations possibles E) Principe du calcul (enfin?) public Gregorien jourplusun() throws Exception{ // contagion à cause du new int j=this.jour, m=this.mois, a=this.annee; int njours = nbjoursdansmois(m, a); if(j < njours) j++; else{ j = 1; // on doit incrémenter le mois if(m < 12) m++; else{ // on doit incrémenter l annee m = 1; a++; return new Gregorien(j, m, a); F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F) internationalisation Plusieurs classes de sortie : forme simple; forme littéraire: le 4 juin 2012; dessin;... Différents modèles de sortie: console d eclipse; ANDROID (émulateur ou vrai téléphone... );... Calendriers différents (révolutionnaire, autres civilisations, etc.). Internationalisation. Pb. La façon d afficher les dates sous forme littéraire dépend du langage : 3 juin 2013 June 3rd, 2013 den 3. Juni 2013 On peut aussi vouloir rajouter sa propre langue! Solution: on utilise une interface. import calendrier.gregorien; public interface LANGAGE{ public String getmois(int i); public String getmessage(int i); public String chainedegregorien(gregorien g);

15 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 La classe Francais (1/2) La classe Francais (2/2) import calendrier.gregorien; public class Francais implements LANGAGE{ private static String[] mois = { "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre" ; public String getmois(int m){ return this.mois[m-1]; private static String[] messages = { "Entrer la date sous la forme jj/mm/aaaa", "J ai attrapé l exception" ; public String getmessage(int i){ return this.messages[i]; // l algorithme d affichage en français public String chainedegregorien(gregorien g){ return g.getjour() + " " + this.mois[g.getmois()-1] + " " + g.getannee(); F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Aperçu de la classe English F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61 Utilisation import calendrier.gregorien; public class English implements LANGAGE{ private static String[] mois = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ; // affichage de la date en anglais public String chainedegregorien(gregorien g){ return this.mois[g.getmois()-1] + " " + g.getjour() + " " + g.getannee(); import tc.tc; import calendrier.*; // toutes les classes public class Lendemain2{ public static void action(langage lg){ TC.println(lg.getMessage(0)); try{ String ligne = TC.lireLigne(); Gregorien d = new Gregorien(ligne); Gregorien dp1 = d.jourplusun(); TC.println("Date d+1=" + lg.chainedegregorien(dp1)); catch(exception e){ TC.println(lg.getMessage(1)+" "+e); public static void main(string[] args){ action(new Francais());

16 Derniers mots Résumé du cours : objets, interfaces, modularité. Prochains rendez-vous : Groupes aujourd hui demain h30 15h h45 17h h30 15h h45 17h45 Prochain amphi : lundi 12 mai à 10h30; pale machine le 19 mai (sujets d entraînement sur le web). Aujourd hui: rencontre profs élèves (13h30 15h30 et 15h45 17h45), Amphi Poisson. F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X /61

Introduction à l Informatique (INF 311) Amphi 9 : stockage efficace de l information. Amphi 9: stockage efficace de l information

Introduction à l Informatique (INF 311) Amphi 9 : stockage efficace de l information. Amphi 9: stockage efficace de l information F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 3/46 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 4/46 Introduction à l Informatique

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis Anne Tasso Un best-seller qui a déjà conquis des milliers d'étudiants! Java Le livre Java Le livrede de premier premier langage langage Avec 80 exercices corrigés Avec 80 exercices corrigés 5 e édition

Plus en détail

Éléments de base en Java (suite et fin)

Éléments de base en Java (suite et fin) Éléments de base en Java (suite et fin) P.O.O. LMI 2 Semestre 4 Option Info Année 2008-09 1/33 Éléments de base en Java (suite et fin) Année 2008-09 Plan du cours Les chaînes de caractères Retour vers

Plus en détail

Programmation objet en Java.

Programmation objet en Java. Programmation objet en Java. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/7/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/7/ Cours Exercices Slide 1 1. Classes,

Plus en détail

Résumé Introduction Programmation Java

Résumé Introduction Programmation Java Résumé Introduction Programmation Java Concepts Un programme : séquence, test conditionnel, boucles. Objets : Les objets Java modélisent les objets d un problème donné Classe : Les objets sont crées à

Plus en détail

S. Laporte C# mode console DAIGL TS1

S. Laporte C# mode console DAIGL TS1 Bases du langage C# I. C# en mode console (mode texte) Avantages par rapport au mode graphique (Application Windows): - C'est un mode plus proche de l'approche algorithmique (pas de notions de composants,

Plus en détail

L héritage Encore un petit topo des familles. Je pense qu'avec ce genre de chapitre, ce n'est pas du luxe...

L héritage Encore un petit topo des familles. Je pense qu'avec ce genre de chapitre, ce n'est pas du luxe... L héritage Encore un petit topo des familles. Je pense qu'avec ce genre de chapitre, ce n'est pas du luxe... Une classe hérite d'une autre classe par le biais du mot clé extends. Une classe ne peut hériter

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 2 : JUnit Nom(s) : Groupe : Date : Objectifs : Apprendre à vérifier une implantation à l aide de tests unitaires sous

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

CCI - Initiation à Java. E.Coquery emmanuel.coquery@liris.cnrs.fr

CCI - Initiation à Java. E.Coquery emmanuel.coquery@liris.cnrs.fr CCI - Initiation à Java E.Coquery emmanuel.coquery@liris.cnrs.fr Présentation du langage Outline 1 Présentation du langage 2 Types de données primitifs 3 Objets Présentation du langage Un langage orienté

Plus en détail

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau Plan Tableaux Université de Nice - Sophia Antipolis Richard Grin Version 1.0.4 25/11/10 Définition Déclaration d un tableau Création d un tableau Utilisation d un dun tableau Tableau des paramètres de

Plus en détail

Listes et arbres binaires

Listes et arbres binaires Des structures de données dynamiques Listes, Listes ordonnées Arbres binaires, arbre binaires de recherche Listes chaînées Utile si le nombre d éléments n est pas connu à l avance et évolue beaucoup. Permet

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) JDT (débogage), outils d analyse statique Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

Programmation Java. Redéfinition de méthode (masquage)

Programmation Java. Redéfinition de méthode (masquage) Programmation Java Programmation objet avec Java Concepts plus avancés Christelle Urtado & Sylvain Vauttier Janvier 2013 Redéfinition de méthode (masquage) Une sous-classe peut redéfinir le code de méthodes

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Université Mohammed Premier Année universitaire 2012-2013

Université Mohammed Premier Année universitaire 2012-2013 Université Mohammed Premier Année universitaire 2012-2013 Faculté des Sciences Filière SMI Département de Mathématiques Module : POO Java et d Informatique Semestre : S5 Responsable du cours : El Mostafa

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Introduction au Java Development Kit Et quelques instructions en Java. 1 Création des répertoires d accueil des programmes Java

Introduction au Java Development Kit Et quelques instructions en Java. 1 Création des répertoires d accueil des programmes Java HLIN406 - Janvier 2015 Le Java Development Kit offre un ensemble d outils de développement d applications Java. Pour utiliser ces outils, JDK ne propose pas d interface utilisateur, on doit donc écrire

Plus en détail

DS Java 1. 19 novembre 2005

DS Java 1. 19 novembre 2005 DS Java 1 19 novembre 2005 Durée : 2 heures. Documents (notes et polycopiés) autorisés. La rigueur et la propreté seront prises en compte dans l évaluation. Le barème est indicatif. Vous rédigerez vos

Plus en détail

Précis de vocabulaire Orienté Objet

Précis de vocabulaire Orienté Objet Dernière Mise à jour : Mars 2007 Précis de vocabulaire Orienté Objet 1 Questions Expliquer et donner un exemple pour chacun des concepts suivants 1. Qu'est-ce qu'un objet? 2. Qu'est-ce qu'une classe? 3.

Plus en détail

PPOOGL. Florent de Dinechin. Java pour les nuls

PPOOGL. Florent de Dinechin. Java pour les nuls PPOOGL Florent de Dinechin Java pour les nuls Java en 30 minutes Introduction Grands principes Pour en finir avec l organisation Types de base et objets Le reste est dans le manuel PPOOGL 1 Introduction

Plus en détail

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan Corrigé et Barème Contrôle de connaissances 2011/2012 des étudiants de 2 è année (EI2) CSC4002 : Contrôle Final Session 1 Date : jeudi 26 janvier 2012 Durée : 1H30 Coordonnateurs : Christian Bac et Denis

Plus en détail

Les exceptions. Cours 12. vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException...

Les exceptions. Cours 12. vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException... Cours 12 Les exceptions vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException... F.Gayral 1 Les exceptions, vous connaissez... public class

Plus en détail

Programmation Orientée Objet - Licence TIS CM2/9

Programmation Orientée Objet - Licence TIS CM2/9 Programmation Orientée Objet - Licence TIS CM2/9 Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.fr Poitiers, le 13/01/2006 1 2 3 4 5 Rappel sur la séance précédente La fois précédente, nous avons

Plus en détail

Algorithmique Programmation

Algorithmique Programmation Algorithmique Programmation 2ème partie DUT en alternance CNAM 2007-2008 2 Table des matières 1 Premiers Pas en Programmation Objet : les Classes et les Objets 7 1.1 Définir une Classe........................................

Plus en détail

CTRAVAUX PRATIQUES INTRODUCTION À LA PROGRAMMATION 2EBAC BIOLOGIE - 2 ND QUAD- 2010-2011 TP 0 BELGIQUE 04/366.90.43

CTRAVAUX PRATIQUES INTRODUCTION À LA PROGRAMMATION 2EBAC BIOLOGIE - 2 ND QUAD- 2010-2011 TP 0 BELGIQUE 04/366.90.43 PROFESSEUR CTRAVAUX PRATIQUES INTRODUCTION À LA PROGRAMMATION 2EBAC BIOLOGIE - 2 ND QUAD- 2010-2011 TP 0 PR. PETER SCHLAGHECK BÂT. B5 PHYSIQUE QUANTIQUE STATISTIQUE ALLÉE DU 6 AOÛT 17 4000 LIÈGE 1 BELGIQUE

Plus en détail

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012 Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques Module : POO Java et d Informatique Semestre : S5 Correction de l examen écrit de

Plus en détail

FORMATION VB.NET Visual Studio 2008

FORMATION VB.NET Visual Studio 2008 FORMATION VB.NET Visual Studio 2008 Livret 1 Introduction à Visuàl Studio Thierry TILLIER http://www.coursdinfo.fr Ce support de cours est réservé à un usage personnel. Toute utilisation et diffusion dans

Plus en détail

Mise à niveau en Java

Mise à niveau en Java Mise à niveau en Java Cours 1 Stéphane Airiau Université Paris-Dauphine Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 1 Aujourd hui Eléments de base Variables, opérateurs, type d une expression

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Université Mohammed Premier Année universitaire 2011-2012. Complément d exercices avec correction

Université Mohammed Premier Année universitaire 2011-2012. Complément d exercices avec correction Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques et d Informatique Module : POO Java Semestre : S5 Complément d exercices avec correction

Plus en détail

Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION

Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION EILCO ING 1 - POO Java Contrôle 2014/2015 Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION Dans ces exercices, nous allons définir une classe Personne qui permettra de gérer

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée Master 1 T.P. 1 Bases Java - Eclipse / Netbeans PDJ Environnements Java Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement d exécution

Plus en détail

Cours 1: Java et les objets

Cours 1: Java et les objets Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/

Plus en détail

Arité variable, énumérations. Arité variable. Arité des méthodes. Utilisation de la surcharge

Arité variable, énumérations. Arité variable. Arité des méthodes. Utilisation de la surcharge Arité variable, énumérations Théorie et pratique de la programmation Michel Schinz 2013-05-13 Arité variable 1 2 Arité des méthodes Utilisation de la surcharge Il est parfois utile d'offrir des méthodes

Plus en détail

Université de Bourgogne - UFR Sciences et Technique - Programmation objet - LPSIL - 2013

Université de Bourgogne - UFR Sciences et Technique - Programmation objet - LPSIL - 2013 Nom : Prénom : Contrôle continu n 4 Programmation objet Vous devez répondre dans les cadres aux questions posées. Documents de cours et notes personnelles autorisés. Téléphones portables, ordinateurs et

Plus en détail

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Compilation séparée ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Modularité GCC : 4 millions de lignes de code Noyau

Plus en détail

Langage Élémentaire Algorithmique Spécifications du langage

Langage Élémentaire Algorithmique Spécifications du langage Langage Élémentaire Algorithmique Spécifications du langage Lionel Clément Version provisoire Novembre 2012 Le but de ce projet est de livrer un compilateur pour un langage élémentaire algorithmique (Léa).

Plus en détail

Méthodes de test. Mihaela Sighireanu

Méthodes de test. Mihaela Sighireanu UFR d Informatique Paris 7, LIAFA, 175 rue Chevaleret, Bureau 6A7 http://www.liafa.jussieu.fr/ sighirea/cours/methtest/ Partie I 1 Propriétés 2 Un peu de génie logiciel de test 3 Eléments Problèmes Point

Plus en détail

HMIN111M Programmation en Java. Un aperçu des classes

HMIN111M Programmation en Java. Un aperçu des classes HMIN111M Programmation en Java Un aperçu des classes 1. Limites des types primitifs Programme de gestion des comptes bancaires 2 comptes par exemple (on ne connait pas les tableaux) Une classe Banque qui

Plus en détail

Objets et Programmation. origine des langages orientés-objet

Objets et Programmation. origine des langages orientés-objet Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève

Plus en détail

Introduction aux exercices en Java

Introduction aux exercices en Java Introduction aux exercices en Java Avant de commencer les séries proprement dites, nous allons voir quelques informations utiles concernant le langage de programmation principal de ce cours d'informatique

Plus en détail

Utiliser Java sans BlueJ

Utiliser Java sans BlueJ Conception objet en Java avec BlueJ une approche interactive Utiliser Java sans BlueJ Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Conception objet en Java avec BlueJ une approche

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

Plan. Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java. Amphi 9 1

Plan. Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java. Amphi 9 1 Plan Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java Amphi 9 1 Structures d'arbre Les structures d'arbre permettent de réaliser des opérations dynamiques, telles que recherche, prédécesseur,

Plus en détail

Informatique TP1 : Découverte de Python CPP 1A

Informatique TP1 : Découverte de Python CPP 1A Informatique TP1 : Découverte de Python CPP 1A Romain Casati, Wafa Johal, Frederic Devernay, Matthieu Moy Avril - juin 2014 1 Découverte de l IDE : IDLE IDLE est un environnement de développement (Integrated

Plus en détail

Cours 8 : Exceptions, un peu de graphique

Cours 8 : Exceptions, un peu de graphique 1 Cours 8 : Exceptions, un peu de graphique 1. Traiter les exceptions usuelles 2. Créer ses propres exceptions 3. Exemples: les files. 4. Quelques éléments sur les graphiques 2 Exceptions Une exception

Plus en détail

Cours 3 : Encapsulation et tests

Cours 3 : Encapsulation et tests DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.fr Cours 3 : Encapsulation et tests Plan Divers Paquetages : intérêt, utilisation des packages existants, créer un package Encapsulation

Plus en détail

Arbres binaires. Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions

Arbres binaires. Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions Arbres binaires Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions FMIN220 Structures de données Université de Montpellier 2015 FMIN220 (UM)

Plus en détail

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Polymorphisme, la classe Object, les package et la visibilité en Java... 1 Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....

Plus en détail

Programmation Objet Java Correction

Programmation Objet Java Correction INSA - 4 AE 2007 2008 Durée : 1H00 Contrôle Programmation Objet Java Correction Consignes Tous les documents sont autorisés, mais ils seront peu utiles. Indiquez vos nom et prénom sur chaque feuille. Le

Plus en détail

Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1

Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Modularité GCC : 4 millions de lignes de code Noyau Linux : 12 millions de lignes de code

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 +Cours 2 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction

Plus en détail

Cours POO Programmation Orienté. 2ème Licence Informatique par Said Bachir Université de Ouargla

Cours POO Programmation Orienté. 2ème Licence Informatique par Said Bachir Université de Ouargla Cours POO Programmation Orienté Objet 2ème Licence Informatique par Said Bachir Université de Ouargla Plan de cours 1. Introduction à la Programmation Orienté Objet. 2. Les classes. 3. Héritage et polymorphisme.

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Introduction au débogage avec Eclipse

Introduction au débogage avec Eclipse Introduction au débogage avec Eclipse C. Pain-Barre et H. Garreta IUT INFO Année 2006-2007 1 Notion de debogage Tout développeur est confronté un jour à un programme qui plante pour une raison apparemment

Plus en détail

Programmer avec les exceptions en Java

Programmer avec les exceptions en Java Programmer avec les exceptions en Java Premier Cycle Cours Eurinsa 2002 (c) P.Pollet 05/12/2002 Java 2001 (PP) 1 Plan Gestion traditionnelle des erreurs d exécution Qu est-ce qu une exception? La classe

Plus en détail

I21 Algorithmique et programmation II. David Gross-Amblard, Joël Savelli IEM-uB 2008-2009 - GFDL 1.2 CM 5/8 v2

I21 Algorithmique et programmation II. David Gross-Amblard, Joël Savelli IEM-uB 2008-2009 - GFDL 1.2 CM 5/8 v2 I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB 2008-2009 - GFDL 1.2 CM 5/8 v2 II. Programmation par objet 1. Motivation 2. Encapsulation 3. Héritage 4. Initiation à la modélisation

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

Les exceptions en Java

Les exceptions en Java Chapitre 6 Les exceptions en Java Lorsqu on conçoit un programme, on essaie évidemment qu il soit correct, c est-à-dire qu il fonctionne parfaitement dans les conditions prévues de son utilisation. L utilisateur

Plus en détail

Programmation orientée objet TP 1 Prise en main de l environnement Java

Programmation orientée objet TP 1 Prise en main de l environnement Java Programmation orientée objet TP 1 L2 MPCIE Prise en main de l environnement Java Exercice 1 Nous désirons développer un programme pour la gestion (très simplifiée) d'un parc de véhicules destinés à la

Plus en détail

Cours 1. Contenu du cours : " Premières applications. " Compilation, Exécution, Chemin. " Affichage et saisie. " Types de données. " Flux de contrôle

Cours 1. Contenu du cours :  Premières applications.  Compilation, Exécution, Chemin.  Affichage et saisie.  Types de données.  Flux de contrôle Cours 1 1 Contenu du cours : " Premières applications " Compilation, Exécution, Chemin " Affichage et saisie " Types de données " Flux de contrôle " Applets " Arrays " OO de base Edition Le fichier texte

Plus en détail

Familiarisation avec Eclipse / Netbeans

Familiarisation avec Eclipse / Netbeans Institut Galilée LEE Année 011-01 Master T.P. 0 Familiarisation avec Eclipse / Netbeans Lien important contenant le pdf du cours et du TP, et ensuite des sources : http://www-lipn.univ-paris13.fr/~fouquere/mpls

Plus en détail

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI JAVA, CORBA et RMI objectif : développer des applications client/serveur incluant des objets répartis Java / CORBA : client/serveur hétérogènes Java / RMI : client/serveur homogènes plan : l architecture

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Découverte de l EDI Visual Studio 2005 mai 2008

Découverte de l EDI Visual Studio 2005 mai 2008 (Environnement : Microsoft Windows) 1- EDI Visual Studio 2005 VB.net EDI, Environnement de Développement Intégré Anglais : IDE, Integrated Development Environment Programme regroupant : Un éditeur de texte

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

Plus en détail

IN104. Programmation orientée objet Introduction aux objets

IN104. Programmation orientée objet Introduction aux objets IN104 Programmation orientée objet Introduction aux objets Séance de Travaux Dirigés du 24 septembre 2009 B. Monsuez, F. Védrine Exercice 1 Notre compteur en C++ Nous étudions dans cet exercice l exemple

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

INF 103 Langage JAVA. Contrôle du 7 janvier 2015 Durée : 1h30

INF 103 Langage JAVA. Contrôle du 7 janvier 2015 Durée : 1h30 INF 103 Langage JAVA Contrôle du 7 janvier 2015 Durée : 1h30 Nom : Prénom : Casier : Groupe :........ Écrire les réponses directement sur les feuilles du sujet dans les cases prévues à cet effet. Le barème

Plus en détail

E2I- 4 (option HF) CONTRÔLE JAVA 1

E2I- 4 (option HF) CONTRÔLE JAVA 1 E2I- 4 (option HF) CONTRÔLE JAVA 1 Corrigé 1. Les données de type char sont codées en java comme : un octet (code ASCII) deux octets (code ASCII) un octet (code unicode) X deux octets (code unicode) un

Plus en détail

} 7 Variables (composantes)

} 7 Variables (composantes) Chapitre 4 Tableaux Jusqu ici, nous avons employé les variables pour stocker les valeurs individuelles de types primitifs : une variable de type int pour stocker un entier, une variable de type boolean

Plus en détail

Programmation orientée objets

Programmation orientée objets POO : mais pourquoi? La Programmation Orientée Objets (POO) a pour but final de faciliter le débogage, la maintenance et la mise à jour d'applications complexes. C++, Java et Scala sont des exemples de

Plus en détail

CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431

CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431 CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431 GUILLAUME HANROT ET JEAN-JACQUES LÉVY On se propose de résoudre le problème de l affectation de k tâches à n employés (k > 0, n >

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet CNAM UV 19357 Année 2003-2004 David Delahaye David.Delahaye@cnam.fr Conception et Développement Orientés Objets Cours 1 : Introduction 1 Présentation de la valeur Ce cours s adresse à toute personne ayant

Plus en détail

6.1 Une classe simple pour représenter des comptes bancaires

6.1 Une classe simple pour représenter des comptes bancaires Chapitre 6 Héritage Ce chapitre du cours traite de concepts relatifs à la programmation objet (hiérarchie de classe, héritage, extension, masquage) et sera illustré par un exemple de représentation de

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\ Exercices corrigés de programmation OO Java Préparés par : Mlle Imene Sghaier Année Académique : 2006-2007 Premiers Pas I. Avant de programmer en Java Le JDK de Sun (Java Development Kit) est l outil essentiel

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail

Le langage Java - Syntaxe

Le langage Java - Syntaxe Le langage Java - Syntaxe CLASSES, INSTANCE,MÉTHODES,... CLASSE EN JAVA, PAS À PAS UTILISER DES CLASSES: C O=NEW C() UTILISER LES MÉTHODES: O.M() UNE CLASSE AVEC PLUSIEURS CONSTRUCTEURS LA SURCHARGE DES

Plus en détail

Programmation Orientée Objet. Introduction à Java. Frédéric Mallet. http://deptinfo.unice.fr/~fmallet/

Programmation Orientée Objet. Introduction à Java. Frédéric Mallet. http://deptinfo.unice.fr/~fmallet/ Introduction à Java Frédéric Mallet http://deptinfo.unice.fr/~fmallet/ 2013-2014 F. Mallet -POO 1 Volume Horaire Programmation Orientée Objet Organisation du cours 12*1h30 de cours 12*1h30 de TD machine

Plus en détail

Tests unitaires avec Visual Studio

Tests unitaires avec Visual Studio Tests unitaires avec Visual Studio (source MSDN) Rappels (initiation aux tests unitaires SI6 Tp6) Les tests unitaires offrent aux développeurs une méthode rapide pour rechercher des erreurs de logique

Plus en détail

Cours Visual Basic URCA

Cours Visual Basic URCA Cours Visual Basic URCA Sommaire Introduction à la programmation VBA et VB Syntaxe de base, variables Opérateurs de base, boucles Introduction à la programmation Qu est-ce que la programmation? Séquences

Plus en détail

Travaux Pratiques. Introduction à la programmation 1er Bac Sc. Géographique - 2 nd Quad- 2009-2010 TP 0

Travaux Pratiques. Introduction à la programmation 1er Bac Sc. Géographique - 2 nd Quad- 2009-2010 TP 0 Travaux Pratiques Professeur C Grégoire Chêne Introduction à la programmation 1er Bac Sc. Géographique - 2 nd Quad- 2009-2010 Pr. Peter Schlagheck Bât. B5 Physique quantique statistique allée du 6 Août

Plus en détail

Introduction aux méthodes Orientées Objets Troisième partie

Introduction aux méthodes Orientées Objets Troisième partie Introduction aux méthodes Orientées Objets Troisième partie Modélisation avec UML 2.0 Programmation orientée objet en C++ Pré-requis: maitrise des bases algorithmiques (cf. 1 ier cycle), maitrise du C

Plus en détail

Programmation avec des objets : Cours 7. Menu du jour

Programmation avec des objets : Cours 7. Menu du jour 1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes

Plus en détail

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers Programmation en Python - Cours 2 : Premiers programmes Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Utilisation en mode interactif Ecriture d un programme

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Projet. Coloration lexicale et indentation de code Java

Projet. Coloration lexicale et indentation de code Java Université Paris Diderot Programmation Orientée Objet L3 Année 2011-2012 Projet Coloration lexicale et indentation de code Java Le but de ce projet est de développer un programme qui prend en entrée un

Plus en détail

Contrôle sur papier. INF441 Modex Programmation efficace juin 2010. 1. Photo de dés

Contrôle sur papier. INF441 Modex Programmation efficace juin 2010. 1. Photo de dés Contrôle sur papier INF441 Modex Programmation efficace juin 2010 1. Photo de dés Plusieurs dés ont été lancés sur une table, et une photo a été pris de haut. Cette photo est représentée par une matrice.

Plus en détail