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



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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

Chapitre I Notions de base et outils de travail

as Architecture des Systèmes d Information

Programmer en JAVA. par Tama

Utilisation d objets : String et ArrayList

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

Java Licence Professionnelle CISII,

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

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

ACTIVITÉ DE PROGRAMMATION

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

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Algorithmique et Programmation, IMA

Cours 1: Java et les objets

Programmation en Java IUT GEII (MC-II1) 1

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

Initiation à JAVA et à la programmation objet.

TP, première séquence d exercices.

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

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

Chap III : Les tableaux

TP1 : Initiation à Java et Eclipse


TP1. Outils Java Eléments de correction

Langage Java. Classe de première SI

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

UE Programmation Impérative Licence 2ème Année

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

Annexe : La Programmation Informatique

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Présentation du langage et premières fonctions

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

TP 1. Prise en main du langage Python

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Solutions du chapitre 4

Java Licence professionnelle CISII,

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Conventions d écriture et outils de mise au point

INF 321 : mémento de la syntaxe de Java

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

INITIATION AU LANGAGE JAVA

Flux de données Lecture/Ecriture Fichiers

COMPARAISONDESLANGAGESC, C++, JAVA ET

Programmation Orientée Objets Le Langage JAVA

Algorithmique et programmation : les bases (VBA) Corrigé

Notions fondamentales du langage C# Version 1.0

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

Traitement de données

Programmation par les Objets en Java

Utiliser Java sans BlueJ

Programmation Orientée Objet

Une introduction à Java

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Java Licence Professionnelle CISII,

I. Introduction aux fonctions : les fonctions standards

Évaluation et implémentation des langages

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

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

RMI le langage Java XII-1 JMF

CPR Informatique. (poste 3159 ou 3164) Septembre 2002

Héritage presque multiple en Java (1/2)

Cours 14 Les fichiers

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Programmation Objet Java Correction

Java c est quoi? Java pourquoi?

Chapitre 2. Classes et objets

Premiers Pas en Programmation Objet : les Classes et les Objets

Cours d Algorithmique et de Langage C v 3.0

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

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

1. Langage de programmation Java

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

L informatique en BCPST

Entraînement au concours ACM-ICPC

Introduction au langage C

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

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

PROGRAMMATION PAR OBJETS

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

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

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

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

Traduction des Langages : Le Compilateur Micro Java

ALGORITHMIQUE ET PROGRAMMATION En C

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

Algorithme. Table des matières

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Initiation à la programmation en Python

Java DataBaseConnectivity

Mise en œuvre des serveurs d application

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

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

4. Groupement d objets

La mémoire. Un ordinateur. L'octet. Le bit

Transcription:

Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page web du module contrôle des connaissances examen : 3h session 1 : tous documents autorisés session 2 : aucun document autorisé contrôle continu (CC) : Assiduité, ponctualité (arrivée, départ) Interrogation 1h vers le bloc 10 Éventuellement autres (micro-interrogations, etc.) note module : 2/3 examen + 1/3 CC but du CCI : programmation : but du module être autonome dans : spécifier, concevoir, programmer, tester et maintenir des (petites) applications de qualité principes des langages de programmation (C), algorithmique, langages objets, projet C++ technologies : utiliser les ordinateurs, avec leur outils matériels et logiciels architecture, bases de données, réseau, etc. but du module Java sans objets : Programmation non objet : tout ce qu'on va voir a été vu dans modules précédents on va refaire le point à partir de zéro sur tout, mais très vite = un nouveau langage (partie sans objets), mais pas de nouveaux concepts n'est pas : approfondir algorithmique et structures de contrôle Concepts objets en Java prérequis : modules antérieurs Pourquoi Java? le langage Java (J2SE 1.4) : autres langages : C, Fortran (calcul scientifique : bibliothèques), C++ (objet), Cobol (gestion, fichiers : paie, etc.), ML et Scheme (prototypage rapide), Perl et Python (chaîne de caractères en gros), etc. possible : C++ ; mais... plus technique que Java, demande plus d'approfondissement pour écrire programme fiables (= plus de bugs délicats)

bibliographie Claude Delannoy, Programmer en Java, deuxième édition mise à jour, Eyrolles 2002, 35 euros (nouvelle présentation : «best-seller») pas d'exercices, pas destiné aux débutants objets (parfois complexe, le but n'est pas d'enseigner ou donner du recul sur la programmation objet), comparaisons avec C++ pédagogie excellente sur le reste pour les concepts au programme de ce module, on suit la progression ce livre (sauf certains points cause contexte pédagogique CCI-LO) module suit même numérotation des chapitres Claude Delannoy, Exercices en Java, Eyrolles 2001, 25 euros Java in a nutshell, O'Reilly, au moins 3ème édition, 2000 célèbre peut-être plus objet, plus de recul, plus rapide, moins axé sur la pédagogie pour les débutants, moins adpaté à CCI-LO? environnement de programmation unix emacs ligne de commande Fonctionnement d'un bloc Page «Fonctionnement» : détailler Cours TD Travail personnel esprit de la préparation à l'examen Vu dans page «Fonctionnement» travail personnel hors cours et TD entraînement dans le travail personnel : rédiger l'exercice entièrement (sans compiler, ni indentation automatique, ni rien) le tester à la main sur plusieurs tests (pas sur machine) Compiler et exécuter : il doit fonctionner correctement du premier coup Examen an passé disponible sur page présentation de Java intérêts de Java objets GUI (graphical user interface) par programmation événementielle portablité très nombreuses bibliothèques (hors programme module)

historique 1991 : Sun, code embarqué, syntaxe proche C++ «compilation» : 1. compilateur unique : programme source -> code intermédiaire (byte codes), indépendant machine 2. chaque architecture possède machine virtuelle Java (JVM) qui l'interprète (lenteur à l'exécution) : portabilité 1995 : HotJava, navigateur Web Sun en Java : exécute «applets» en byte codes Java et la programmation orientée objets POO : (programmation à objets, programmation par objets) fiabilité des logiciels réutilisation (au lieu réécrire) nouveaux concepts (1986) : objets, encapsulation, classes, héritage, etc. POO pure : tout est objet, encapsulation, que méthodes (Simula, Smalltalk, Eiffel) Java : POO «+» types primitifs, procédures, encapsulation non obligatoire (possible programmation pas du tout objet) Java et la programmation événementielle vu lors introduction à la programmation graphique Java et la portabilité un programme source est portable s'il fonctionne dans différents environnements moyennant nouvelle compilation Java : code compilé portable présentation de Java : récapitulatif objets GUI (graphical user interface) par programmation événementielle portablité (Delannoy chapitre 1) généralités généralités premier exemple exécution instructions de base Déroulement mémoire lecture au clavier differentes sortes d'instruction règles d'écriture

premier exemple de programme Java on va découvrir et manipuler intuitivement un premier programme complet on ne rentrera pas tout de suite dans tous les détails pas d'objets dans ce chapitre écrire un programme qui affiche «Bonjour a tous» Class Bonjour { } public static void main(string [ ] args) { } System.out.println("Bonjour a tous"); c'est un peu lourd! on va comprendre pourquoi au fur et à mesure du module structure générale du programme class Bonjour {... } définition d'une classe de nom Bonjour {... } : le contenu de la classe public static void main(string [ ] args) {... } définition d'une fonction de nom main String [ ] args : le paramètre, de nom args, est un tableau de chaînes de caractères void : cette fonction ne renvoie pas de valeur {... } : le corps de la fonction : des instructions contenu du programme : System.out.println("Bonjour a tous"); fonction d'impression prédéfinie détails de syntaxe bref, pour l'instant... un programme est une classe cette classe est composée d'une fonction main on place dans le corps de main les instructions qu'on veut il y a plusieurs choses obligatoires qu'on accepte d'écrire sans les comprendre (pour l'instant) : class, public, static, main, String[ ], System.out exécution d'un programme Java fichier source éditer programme source ci-dessus, sauver dans un fichier nom quelconque + extension.java, ex : Ex1.java compilation sur la ligne de commande Unix unix> javac Ex1.java génère Bonjour.class : exemple complet exécution par la JVM : unix> java Bonjour affiche dans la fenêtre : Bonjour a tous sauf en cas d'erreur : messages fichier des byte codes (exécutable) non généré il faut «débuguer» (cf section bientôt) Tous exemples cours déjà distribués ci-joint (programmation en direct de cet exemple : selon temps) javac,.class, java Ex : erreur compilation : pas de.class

exemple 2 : quelques instructions de base class Exemple2 { public static void main(string [ ] args) { int n; double x; n = 5; x = 2*n + 1.5; System.out.print("n = "); System.out.print(n); System.out.println("Pi + racine de 2 = " + (Math.PI + Math.sqrt(2))); double y; y = n*x + 12; System.out.println("y vaut " + y); } } ci-joint Même structure qu'exemple 1 : class Exemple2 {... main... } int n; double x; déclarations de variables obligatoires avant utilisation (pas nécessairement début bloc ou programme) n = 5; x = 2*n + 1.5; affectation System.out.print("n ="); System.out.println(n); paramètre : variable entière pas de retour à la ligne : print Math.PI, Math.sqrt conversion implicite automatique de 2*n en double remarques System.out.println("x = " + x); paramètre : 1. conversion automatique de x double en la suite de caractères représentant x en décimal 2. concaténation 3. affichage dès qu'un opérande est une chaîne, l'autre est converti en chaîne déclaration «tardive» de y aucun objet, idem C System.out.println("x=" + 2*n + 1.5); affiche : x = 101.5 System.out.println("x=" + (2*n + 1.5)); affiche : x = 11.5 levée usuelle des ambiguïtés par parenthèses

premier exemple exécution instructions de base généralités Déroulement mémoire Exemple ci-joint : déclarer, initialiser un entier l'incrémenter et l'afficher Déroulement mémoire lecture au clavier differentes sortes d'instruction règles d'écriture int n; principe Int n; 101 102 103 104 N Réserve une case mémoire pour un entier (4 octets) Alloue 4 octets de la mémoire, associés à la variable n de type int n ne contient aucune valeur et est inaccessible (compilateur) n = 7; Écrit 7 dans cet espace de 4 octets n = 7; 101 102 103... 7... N Exemple déroulement mémoire Au tableau : exemple ci-joint (Exercices possibles : dérouler tous les programmes de ce cours) lecture d'informations au clavier moins immédiat que System.out.println sera vu en fin de module on va voir une manière restreinte mais simple bientôt Différentes sortes d'instructions Instructions de déclaration Instructions exécutables Instructions simples, comprenant le point-virgule Instructions de contrôle (ex : for, if) Bloc, délimité par accolades { et } (contient des instructions) règles de présentation pour écrire un programme pouvoir se relire (et les autres aussi) noms pertinents une instruction par ligne indenter, toujours pareil commenter les passages délicats programme facilement utilisable (messages)

règles générales d'écriture Identificateur : Lettre (majuscule, minuscule, souligné, éviter $) + lettre ou chiffre Rq : A n'est pas a Nombre de caractères quelconque Tradition (à respecter) : Minuscules sauf suite Première lettre classe majuscule Variable, fonction : Minuscule Si juxtaposition mots : chaque initiale en majuscule (sauf le premier) Ex : valeur, nombredevaleurs Classes : idem, sauf première lettre majuscule Constantes symboliques : tout majuscule Rq : System est classe, mais pas out Mots réservés (mots-clé) : Liste dans documentation ou livre Réservés Séparateurs Entre identificateurs Espace, fin de ligne, :, = ; * ( ) [ ] { } + - / < > & Le format libre : Espaces et fins de ligne non séparateurs : Possibles à ajouter Non obligatoires, mais indispensables lisibilité Pas de fin de ligne dans les constantes chaîne Impossible couper identificateurs Les commentaires : Usuels (comme C) : /*...... */ Non imbriqués De fin de ligne (comme C++) : //... Rq : /* a // b */ c A // b /* c */ d Commentaires de documentation (usuel) : /**... */ pour extraction automatique En résumé Java reprend beaucoup des concepts et de la syntaxe de C identique jusqu'ici (sauf détail syntaxe programme principal et déclaration fonction) concepts déjà vus dans module Programmation on va voir bientôt (cours suivants) pourquoi la syntaxe est différente (ex : objets) rem : jusqu'ici : pas d'objets autrement dit : «Java sans objets c'est simplement C» (Java conçu pour) Généralités : récapitulatif premier exemple exécution instructions de base Déroulement mémoire lecture au clavier differentes sortes d'instruction règles d'écriture (Delannoy chapitre 2) La ligne de commande et les chaînes de caractères

La classe String "Bonjour!" est une chaîne de caractères : String String s; s = "cou"; s = s + "cou"; // s += "cou"; / / on connaît déjà ce + System.out.println(s + " " + s); Conversion d'une chaîne en entier ci-joint s = "123"; int n = Integer.parseInt(s); System.out.println(n + 1); // affiche 124 ; rem : + int Les arguments de la ligne de commande public static void main(string[] args) Fonction main reçoit tableau de chaînes, qui contient les arguments de la ligne (sauf nom du programme) ci-joints Lire un entier et afficher son successeur Le bon Un mauvais La ligne de commande et les chaînes de caractères : récapitulatif Variable String Affectation, concaténation Ligne de commande (Delannoy chapitre 9.1.1, 9.8) Exemples : if, for while ci-joints If : tester une valeur lue au clavier For : afficher les entiers de 1 à 10 en décroissant While : idem

Environnement : unix, emacs Unix Emacs Operating system Données : fichiers, répertoire, arborescence (dessin) Actions sur données: Manipuler : créer, détruire, modifier Consulter Se déplacer dans arborescence Démonstration complète : page Environnement Editeur de texte Actions sur un fichier : Création Visualisation Dans contenu : Déplacements Modifications : ajouts, suppressions (caractères) Démonstration complète : page Environnement Démonstration page «Environnement» plan du module introduction, types primitifs, opérateurs et expressions, structures de contrôle tableaux délégués? champs de classe, fonctions, objets encapsulation, méthodes dynamiques héritage, redéfinition, polymorphisme et classes abstraites exceptions, entrées/sorties texte, introduction à la programmation graphique (?)