Les programmes informatiques. Programmation Orientée Objet Java. Les langages de programmation. La programmation orientée objet (POO)

Documents pareils
Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Plan du cours. Historique du langage Nouveautés de Java 7

as Architecture des Systèmes d Information

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Java Licence Professionnelle CISII,

Notions fondamentales du langage C# Version 1.0

Programmer en JAVA. par Tama


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

Introduction au langage C

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

STAGE IREM 0- Premiers pas en Python

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d Algorithmique et de Langage C v 3.0

INF 321 : mémento de la syntaxe de Java

Java Licence Professionnelle CISII,

TD3: tableaux avancées, première classe et chaînes

Chapitre I Notions de base et outils de travail

Conventions d écriture et outils de mise au point

Une introduction à Java

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

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

Programmation Orientée Objets Le Langage JAVA

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

TP1 : Initiation à Java et Eclipse

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Programme Compte bancaire (code)

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Programmation Orientée Objet Java

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Cours 1: Java et les objets

Programmation en Java IUT GEII (MC-II1) 1

ACTIVITÉ DE PROGRAMMATION

Utilisation d objets : String et ArrayList

Initiation à la programmation en Python

TP 1. Prise en main du langage Python

INITIATION AU LANGAGE JAVA

PROGRAMMATION PAR OBJETS

Claude Delannoy. 3 e édition C++

COMPARAISONDESLANGAGESC, C++, JAVA ET

Introduction à l algorithmique et à la programmation M1102 CM n 3

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Cours Informatique Master STEP

Derrière toi Une machine virtuelle!

Programmation Web. Madalina Croitoru IUT Montpellier

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Langage Java. Classe de première SI

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Programmation C++ (débutant)/instructions for, while et do...while

Algorithmique et Programmation, IMA

Solutions du chapitre 4

Présentation du langage et premières fonctions

Informatique / Programmation

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

ALGORITHMIQUE ET PROGRAMMATION En C

TP1 : Initiation à Java et Eclipse

Java c est quoi? Java pourquoi?

SUPPORT DE COURS. Langage C

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Programmation en langage C

Les bases de l informatique et de la programmation. École polytechnique

TP, première séquence d exercices.

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

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

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

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

Principes des langages de programmation INF 321. Eric Goubault

Le langage C. Séance n 4

Bases de programmation. Cours 5. Structurer les données

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Cours d initiation à la programmation en C++ Johann Cuenin

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Apprendre Java en 154 minutes

1. Langage de programmation Java

Rappels Entrées -Sorties

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

Programmation Orientée Objet application au langage Java Version Novembre 2007

Cours 1 : La compilation

Éléments de programmation et introduction à Java

1. Structure d'un programme FORTRAN 95

Le langage C. Introduction, guide de reference

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Premiers Pas en Programmation Objet : les Classes et les Objets

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Introduction au langage Java

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Transcription:

Les programmes informatiques Programmation Orientée Objet Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 21 septembre 2016 Les étapes du traitement des données : Un ordinateur reçoit des données de différents périphériques d entrée (Carte réseau, souris, capteurs). Ces données sont codées sous la forme d une suite de 0/1. Ces données sont transformées afin de produire une nouvelle suite de 0/1. Ces nouvelles données sont envoyées sur un périphérique de sortie (Carte réseau, écran, carte son) ou de stockage. Ces données sont transportées, stockées, transformées en ondes sonores, etc. Un programme informatique spécifie une suite d instructions à effectuer sur des données afin de produire de nouvelles données en sortie. Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 1 / 171 Les langages de programmation Les langages de programmation ont été définis par les humains afin de permettre à un humain de spécifier à un ordinateur une suite d instructions. Il existe de nombreux langages de programmation : Langages impératifs et procéduraux (C, Pascal, Fortran...) Langages logiques (Prolog...) Langages fonctionnels (OCaml, Haskell, Erlang...) Langages à pile (PostScript...) Langages à objets (, C++, C#...) L exécution se fait soit par : Interprétation (Python, PHP, Script, Ruby...) Compilation et exécution (C++, C, Pascal...) Semi-compilation et exécution sur machine virtuelle (...) Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 3 / 171 Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 2 / 171 La programmation orientée objet (POO) Les objectifs : Faciliter le développement et l évolution des applications ; Permettre le travail en équipe ; Augmenter la qualité des logiciels (moins de bugs). Solutions proposées : Découpler (séparer) les parties des projets ; Limiter (et localiser) les modifications lors des évolutions ; Réutiliser facilement du code. Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 4 / 171

Le langage (utilisé dans ce cours) Le langage : est un langage de programmation orienté objet créé par James Gosling et Patrick Naughton (Sun) présenté officiellement le 23 mai 1995. Les objectifs de : simple, orienté objet et familier ; robuste et sûr ; indépendant de la machine employée pour l exécution ; très performant ; multi-tâches. Autres langages orienté objet C++ : très utilisé C# : langage de Microsoft (appartient à.net) Objective C : langage utilisé par Apple PHP : langage très utilisé sur le Web Python Ruby Eiffel Ada Smalltalk... La syntaxe change mais les concepts sont les mêmes! Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 5 / 171 Mon premier programme Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 6 / 171 Commentaires Le programme HelloWorld.java : class HelloWorld { public static void main(string arg[]) { System.out.println("Hello world!"); Compilation et exécution : $ javac HelloWorld.java $ ls HelloWorld.java HelloWorld.class $ java HelloWorld Hello world! Les commentaires permettent de rajouter du texte dans votre programme sans que le compilateur ne le considère comme du code : class HelloWorld { public static void main(string arg[]) { /* Commentaire sur plusieurs lignes. */ // sur une seule ligne. System.out.println("Hello world!"); Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 7 / 171 Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 8 / 171

Instructions, variables et expressions Les variables Les données sont manipulées à l aide de variables et d expressions : class Exemple { public static void main(string arg[]) { int a = 5; // Déclaration d'une variable int b = 9; // Déclaration d'une deuxième variable b = b + a; // L'expression "b+a" est évaluée // et le résultat est affecté à "b" a = 2*b - 3; // 25 est affecté à "a" System.out.println(a); // Affichage du contenu de "a" System.out.println(b); // Affichage du contenu de "b" Notez que les instructions sont séparées par des points-virgules. Une variable possède un nom, un type et une valeur. // Déclaration d'une variable // de nom "a", de type "int" (entier) // avec une valeur initiale égale à 3. Il est ensuite possible de changer la valeur de la variable : a = 12; // Affectation d'une nouvelle valeur En, le symbole = désigne l affectation et n a pas la même signification qu en mathématiques. Lors de la compilation, vérifie que chaque expression située à droite de l affectation est compatible avec le type de la variable. Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 9 / 171 Les types primitifs Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 10 / 171 Opérateurs de calcul byte entier 8 bits -128 à 127 0 short entier 16 bits -32768 à 32767 0 int entier 32 bits 2 31 à 2 31 1 0 long entier 64 bits 2 63 à 2 63 1 0 float flotant 32 bits 0.0 double flotant 64 bits 0.0 char caractère 16 bits caractères Unicode \u0000 boolean boolean 1 bit false ou true false Les constantes : int a = 12; double b = 13.5; char c = 't'; boolean b = true; Négation -a Opposé de a Addition a + b Somme de a et b Soustraction a - b Différence de a et b Multiplication a * b Produit de a et b Division a / b Quotient de a et b Modulo a % b Reste de a divisé par b Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 11 / 171 Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 12 / 171

Opérateurs logiques et comparaisons Les expressions Il est possible de fabriquer des expressions complexes à partir des variables, constantes et opérateurs : non!a true si a est égal à false et a && b true si a et b sont égaux true ou a b true si a ou b est égal true égal a == b true si a est égal à b différent a!= b true si a est différent de b plus petit a < b true si a est strictement plus petit que b plus grand a > b true si a est strictement plus grand que b inférieur ou égal a <= b true si a est plus petit ou égal à b supérieur ou égal a >= b true si a est plus grand ou égal à b Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 13 / 171 Incrémentation, décrémentation et affectations int b = 7; int c = 2*a + 7*b - (a+9)%(b-4); boolean d = a<=4 && b+2<=10; boolean e =!(a>=4 && b+2<=10); L ordre du calcul respecte les priorités des opérateurs. Le type de chaque partie est déterminé à la compilation. Le compilateur associe les instructions machine qui correspondent aux opérateurs et aux types des opérandes. Le compilateur connaît le type de l expression et vérifie s il est compatible avec le type de la variable (dans le cas d une affectation). Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 14 / 171 Les affectations Pre-incrémente ++a Incrémente a de 1, puis retourne a Post-incrémente a++ Retourne a, puis incrémente a de 1 Pré-décrémente --a Décrémente a de 1, puis retourne a Post-décrémente a-- Retourne a, puis décrémente a de 1 int a = 10; int b, c; a++; b = a++; // Déconseillé b = a; a++; c = --b; // Déconseillé b--; c = b; int a = 10; a+=22; int c = 12; a+=2*c; c*=4; Affectation a=b Affecte b à a Addition a+=b Ajoute b à a Soustraction a-=b Soustrait b à a Multiplication a*=b Multiplie a par b Division a/=b Divise a par b Il existe des opérateurs de ce type associés aux opérations logiques. Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 15 / 171 Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 16 / 171

Les affectations sont des opérateurs La valeur retournée par l évaluation d une affectation est égale à la valeur retournée par l évaluation de sa partie droite. int a, b; a = (b = 10); /* ou */ a = b = 10; Étapes de l évaluation de l instruction : La valeur 10 est affectée à b ; (b = 10) vaut 10 ; la valeur 10 est affectée à a ; a = (b = 10) vaut 10 ; cette valeur est ignorée. Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 17 / 171 Les tableaux L expression new int[10] retourne une référence vers un tableau : int[] array = new int[10]; int[] array2 = array; // Allocation d'un tableau // Copie de la référence Seule la référence est copiée, il n y a qu un seul tableau : array[4] = 2; // Affectation d'une valeur à la 5ème case System.out.println(array2[4]); // "5" Taille du tableau : int[] array = new int[10]; // Allocation d'un tableau int length = array.length; // Récupération de la taille System.out.println(length); /* ou directement */ System.out.println(array.length); Les tableaux Déclaration d une variable de type référence vers un tableau : int[] arrayofint; double[] arrayofdouble; Allocation d un tableau : arrayofint = new int[10]; arrayofdouble = new double[3]; Utilisation d un tableau : arrayofint[0] = 5; arrayofint[9] = 10; arrayofint[2] = arrayofint[0] + 3*arrayOfInt[9]; arrayofdouble[2] = arrayofint[2] + 3.5; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 18 / 171 Références et Garbage Collector Une variable de type référence peut valoir null : int[] array = null; // La variable "array" contient la référence "null". // Elle pointe vers aucune instance. Important : Une référence contient soit null soit la référence d un tableau ou d un objet compatible avec le type de la variable. Le Garbage collector peut supprimer les éléments devenus innaccessibles : int[] array = new int[10]; array[3] = 6;... array = null; // La mémoire utilisée pour le tableau peut être libérée Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 19 / 171 Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 20 / 171

Les instructions conditionnelles if if (condition) instruction; /* ou */ if (condition) instruction; else instruction; boolean a = true; boolean b = false; int c = 10, d = 12, e; if (a b) e = c + d; else e = c - d; if (a && b) e++; else e--; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 21 / 171 Les boucles while et do/while Les instructions conditionnelles switch switch (expression) { case valeur1 : instruction; instruction; /*...*/ break; case valeur2 : instruction; instruction; /*...*/ break; /*... */ default : instruction; instruction; /*...*/ break; int a = 2; switch (a) { case 1 : System.out.println("un"); break; case 2 : System.out.println("deux"); break; case 3 : System.out.println("trois"); break; default : System.out.println(a); break; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 22 / 171 Les boucles for while (condition) instruction; do instruction; while (condition); while (a <= 10) a++; do a--; while (a>=3); for (initialisation; condition; incrementation) instruction; for (int i = 0; i < 3; i++) System.out.println(i); for (int i = 10; i >= 10; i--) System.out.println(i); for (int i = 0; i <= 10; i+=2) System.out.println(i); Équivalence avec le while : initialisation; while (condition) { instruction; incrementation; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 23 / 171 Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 24 / 171

Les blocs d instructions Les blocs d instructions { instruction_1; instruction_2;... instruction_k; Les instructions du bloc sont exécutées séquentiellement. Une instruction peut être remplacée par un bloc d instructions : boolean a = true; int c = 0, d=2; if (a) { c++; d+=4; else { c--; d-=2; Il est important d indenter correctement le code : for (int i = 0; i < 10; i++) { for (int j = i+1; j < 10; j++) { int k = i*j; if (k < 10) System.out.print(" "); System.out.print(i*j); System.out.print(" "); System.out.println(); Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 25 / 171 Les tableaux à plusieurs indices Déclaration : int[][] matrix; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 26 / 171 Création : matrix = new int[10][]; for (int row = 0; row < matrix.length; row++) matrix[row] = new int[5]; /* ou directement */ matrix = new int[10][5]; Tableaux multidimensionnels non rectangulaires : array = new int[10][]; for (int row = 0; row < array.length; row++) array[row] = new int[row+1]; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 septembre 2016 27 / 171