LICENCE MIAGE Introduction Programmation Orient - PowerPoint PPT Presentation

1 / 70
About This Presentation
Title:

LICENCE MIAGE Introduction Programmation Orient

Description:

Title: LICENCE MASS Author: IFI Created Date: 9/30/2001 10:06:51 AM Document presentation format: Affichage l' cran Other titles: Times New Roman Courier New ... – PowerPoint PPT presentation

Number of Views:49
Avg rating:3.0/5.0
Slides: 71
Provided by: ifi
Category:

less

Transcript and Presenter's Notes

Title: LICENCE MIAGE Introduction Programmation Orient


1
LICENCE MIAGE IntroductionProgrammation
Orientée ObjetJAVAphilippe.collard_at_unice.frhtt
p//deptinfo.unice.fr/pc
2
P.O.OLangage Java
  1. Introduction (rappel)
  2. Bases du langage (rappel)
  3. Programmation Orientée Objet

3
Organisation
  • 8 cours
  • jeudi 10h-11h30
  • semaine 40 - 42..45 - 47..49
  • 12 TDM
  • groupe 1 (lundi 10h-12h)
  • groupe 2 (lundi 13h-15h)
  • semaine 41..44 - 46..51 - 1 - 2
  • Évaluation
  • Contrôle continu (amphiTDMpartiel) (33)
  • Examen (67)
  • ECTS 3

4
Bibliographie
  • Java de l'esprit à la méthode
  • Michel Bonjour et al. Vuibert
  • The Java Programming Language
  • Ken Arnold et James Gosling
  • The Java Series. Addison Wesley
  • consulter la Java Book List http//metalab.unc.ed
    u/javafaq/books.html

5
Quelques sites
  • Sun
  • http//java.sun.com
  • produits, documentation, the JavaTM Tutorial
  • Java Developer Connection
  • Gamelan
  • http//www.gamelan.com
  • JavaWorld Magazine
  • http//www.javaworld.com/
  • Java FAQ
  • http//www.ibiblio.org/javafaq/javafaq.html

6
Créer votre première application
  •  Le premier programme, Hello, affiche simplement
    le texte "Hello !" 
  • Créer un fichier source Hello.java
  • Un fichier source contient du texte, écrit en
    Java
  •  
  • Compiler le source en fichier bytecode
    Hello.class
  • Le compilateur javac, traduit le texte source en
    instructions compréhensibles par la Machine
    Virtuelle Java (JVM)
  •  
  • Exécuter le programme contenu dans le fichier
    bytecode
  • L'interprète Java implémente la JVM
  • L'interprète traduit le bytecode en instructions
    exécutables par votre machine

7
Compilation vs. Interprétation
  • Le compilateur convertit le programme source en
    programme exécutable avant exécution

8
Write once, run anywhere
  • La compilation d'un programme, ne génère pas
    d'instructions spécifiques à votre plate-forme
  • Mais du bytecode Java, qui sont des instructions
    de la Machine Virtuelle Java (JVM)
  • Si votre plate-forme (Windows, UNIX, MacOS, un
    browser Internet) dispose de VM, elle peut
    comprendre le bytecode

9
(No Transcript)
10
Application "Hello"
  • Créer le fichier source Java Hello.java
  • /
  • La classe Hello implémente une
  • application qui affiche "Hello !" sur la
  • sortie standard
  • /
  • class Hello
  • public static void main(String args)
  • System.out.println("Hello !") //Affiche le
    texte

11
  • Compiler le fichier source
  • javac Hello.java
  • Si la compilation réussit, le fichier Hello.class
    est créer. Ce fichier contient le bytecodes
  • Interpréter et exécuter l'application
  • java Hello
  • L'argument de l'interprète est le nom de la
    classe à exécuter (pas le nom du fichier)
  • Faire la distinction M/m

12
Environnement de développement
  • javac le compilateur java
  • java la machine virtuelle java
  • jdb le debugger java
  • jar le système darchivage java - utile pour les
    applets multifichiers
  • javadoc convertir le code en documentation HTML
  • appletviewer exécuter des applets sans passer
    par le navigateur

13
Disséquons l'application"Hello"
  • Insérer des commentaires
  • Définir une classe
  • Définir la méthode main
  • Utiliser des classes et des objets

14
Insérer des commentaires
  • /
  • Documentation
  • ignorer par le compilateur
  • générée par l'outil javadoc
  • /
  • class Hello
  • public static void main(String args)
  • System.out.println("Hello !")
  • // commentaire sur une ligne
  • / commentaire /

15
Définir une classe
  • /
  • documentation
  • /
  • class Hello
  • public static void main(String args)
  • System.out.println("Hello !")
  • // afficher le texte
  • une classe est la brique de base d'un langage
    orienté-objet elle fournit une description des
    données et des comportements associés

16
Définir la méthode main
  • /
  • documentation
  • /
  • class Hello
  • public static void main(String args)
  • System.out.println("Hello !")
  • // afficher le texte
  • Une application Java doit contenir une méthode
    main
  • Appelée en premier par l'interprète
  • Qui appelle les autres méthodes nécessaires pour
    exécuter l'application

17
Utiliser une méthode et une variable
  • class Hello
  • public static void main(String args)
  • System.out.println("Hello !")
  • System.out.println("Hello !")
  • La classe System (package java.lang) fournie des
    accès "system-independent" à des fonctionnalités
    "system-dependent"
  • System.out.println("Hello !")
  • Variable out de la classe System
  • System.out.println("Hello !")
  • Méthode println()
  • http//java.sun.com/j2se/1.4.2/docs/api/index.html

18
(No Transcript)
19
(No Transcript)
20
Conventions décriture de code
  • Classe CompteEnBanque
  • Méthodes
  • crediterCompte(25)
  • getSolde()
  • setSolde(10)
  • Variables
  • empruntCourant
  • Constantes
  • TAUX_INTERET
  • Java les respecte donc respectez-les !!

21
P.O.OLangage Java
  1. Introduction (rappel)
  2. Bases du langage (rappel)
  3. Programmation Orientée Objet

22
Bases du Langage
  • public class BasicsDemo
  • public static void main(String args)
  • int sum 0
  • for (int c 1 c lt 10 c)sum c
  • S.o.p("Sum " sum)
  • Que fait ce programme ?
  • Même un petit programme comme celui-ci utilise de
    nombreuses caractéristiques du langages comme des
    variables, des opérateurs, et des instruction de
    flux de contrôle

23
Concept de Variable
  • Définition un élément dinformation identifié
    par un nom
  • On doit explicitement indiquer le nom et le type
    dune variable
  • On utilise le nom pour faire référence à
    linformation que la variable contient
  • Le type détermine les valeurs licites pour la
    variable et les opérations autorisées
  • Pour donner un nom et un type à une variable il
    faut la déclarer
  • type name
  • Une variable, a une portée la section de code
    ou le nom de la variable peut être utilisé

24
  • int maxInteger Integer.MAX_VALUE
  • float maxFloat Float.MAX_VALUE
  • char aChar 'S'
  • boolean aBoolean true
  • S.o.p("Plus grand integer " maxInteger)
  • S.o.p("Plus grand float " maxFloat)
  • S.o.p("Le caractère est " aChar)
  • S.o.p("Valeur du booléen " aBoolean)
  • Plus grand integer 2 147 483 647
  • Plus grand float 3.40282e38
  • Le caractère est S
  • Valeur du booléen true

25
(No Transcript)
26
(No Transcript)
27
(No Transcript)
28
Types élémentaires
Primitive Data Types
Floating
Integer
byte 8bits -128 to 127
float 32bits 1.4E-45 3.4E38
short 16bits -32768 to 32767
double 64bits 4.9E-324 1.8E308
int 32bits -231 to 231-1
long 64 bits -263 to 263-1
Logical
Textual
one bit true or false
char 16bits 0 to 65535
29
Variable Final
  • La valeur dune variable déclarée final ne peut
    pas être modifiée après avoir été initialisée
  • Une telle variable est similaire à une constante
    dans les autres langages de programmation
  • Pour déclarer une variable final
  • final int A_FINAL_VAR 0

30
Opérateur Arithmétique
31
Opérateur Relationnel
32
Opérateur Conditionnel
Operator Use Returns true if
op1 op2 op1 and op2 are both true conditionally evaluates op2
op1 op2 either op1 or op2 is true conditionally evaluates op2
! ! op op is false
op1 op2 op1 and op2 are both true always evaluates op1 and op2
op1 op2 either op1 or op2 is true always evaluates op1 and op2
op1 op2 if op1 and op2 are different that is if one or the other of the operands is true but not both
33
Entrées au clavier classe Console
  • Problème les entrées au clavier ne sont pas
    aisées en Java
  • Nous allons utilisé (Travaux Dirigés) la classe
    Console pour simplifier la tâche
  • Console.readInt(str)
  • retourne un nombre entier de type int entré au
    clavier
  • Console.readDouble(str)
  • retourne un nombre de type double entré au clavier

34
Utiliser la classe Console
  • Pour chaque classe qui fait appel à la classe
    Console ajoutez (entre votre commentaire de début
    et le mot class)
  • import unsa.Console
  • ajouter comme dernière instruction de la méthode
    main()
  • System.exit(0)

35
Classe ConsoleExemples
  • import unsa.Console
  • public class TestConsole
  • public static void main (String args)
  • char c Console.readChar("Entrez un char")
  • S.o.p("echo " c )
  • int i Console.readInt("Entrez un int")
  • S.o.p("echo " i )
  • double d Console.readDouble("Entrez un
    double")
  • S.o.p("echo " d )
  • long l Console.readLong("Entrez un long")
  • S.o.p("echo " l )
  • System.exit(0)

36
Contrôle du Flux dinstructions
  • Sans contrôle du flux
  • les instructions sont exécutées dans lordre où
    elles apparaissent dans le fichier source
  • Contrôler le flux pour
  • Exécuter conditionnellement des instructions
  • Exécuter de façon répétitive un bloc de code

37
Les Instructions de Contrôle
Les Instructions de Contrôle
if
return
switch
continue
while
do-while
for
break
38
Instruction while
  • On utilise l'instruction while pour exécuter
    répétitivement un bloc de code tant qu'une
    condition reste vraie
  • while (expression) instructions
  • On commence par évaluer l'expression, qui doit
    retourner une valeur booléenne
  • Si expression retourne true, alors on exécute les
    instructions associées
  • L'instruction while continue en testant
    expression et en exécutant les instructions
    jusqu'à ce que expression retourne false

39
Instruction while (2)
  • Ce programme utilise une instruction while pour
    parcourir une string, copiant les caractères dans
    un buffer jusqu'à rencontrer la lettre 'g'
  • String copyFromMe "Copy this string until you
    encounter the letter 'g'."
  • StringBuffer copyToMe new StringBuffer()
  • int i0
  • char ccopyFromMe.charAt(i)
  • while (c ! 'g')
  • copyToMe.append(c) ii1
  • c copyFromMe.charAt(i)
  • S.o.p(copyToMe)
  • Valeur affichée par S.o.p ?

40
Instruction do-while
  • Java fournit une autre structure similaire
    do-while
  • do
  • instructions
  • while(expression)
  • expression est évaluée à la base de la boucle
  • les instructions associées sont donc exécutées au
    moins une fois

41
Instruction do-while (2)
  • String copyFromMe "Copy this string until you
    encounter the letter 'g'."
  • StringBuffer copyToMe new StringBuffer()
  • int i0
  • char c
  • do
  • c copyFromMe.charAt(i)
  • copyToMe.append(c)
  • ii1
  • while (c ! 'g')
  • S.o.p(copyToMe)
  • Valeur affichée par S.o.p ?

42
Instruction for
  • for (initialisation terminaison incrément)
  • instructions
  • initialisation initialise la boucle exécuté une
    seule fois au début de la boucle
  • terminaison détermine quand terminer la boucle
  • evalué au début de chaque itération
  • Quand l'expression retourne false, la boucle se
    termine
  • incrément exécuté à la fin de chaque itération
  • Souvent utilisé pour parcourir les éléments d'un
    tableau (array), ou les caractères d'une chaîne
    (string)

43
Instruction for
  • int arrayOfInts 32, 87, 3, 589
  • for(int i0 iltarrayOfInts.length i)
  • S.o.p(arrayOfIntsi " ")
  • Valeurs affichées par S.o.p ?

44
for vs. while
  • for(int i0 iltarrayOfInts.length i)
  • S.o.p(arrayOfIntsi " ")
  • int i0
  • while(iltarrayOfInts.length)
  • S.o.p(arrayOfIntsi " ")
  • i

45
Garantir la fin des itérations
do afficher(a) a a1 while (a ! 10)
  • do
  • afficher(a)
  • while (a ! 10)

a 1 do afficher(a) a a1 while (a !
10)
a 10 do afficher(a) a a1 while (a !
10)
46
Instructions if/else
  • if (reponse OK)
  • // code to perform OK action
  • if (reponse OK)
  • // code to perform OK action
  • else
  • // code to perform Cancel action

47
Une cascade de if
  • int score 76
  • char grade
  • if (score gt 90) grade 'A'
  • else // score lt 90
  • if (score gt 80) grade 'B'
  • else // score lt 80
  • if (score gt 70) grade 'C'
  • else // score lt 70
  • if (score gt 60) grade 'D' else //
    score lt 60
  • grade 'F'
  • S.o.p("Grade " grade)
  • Valeur affichée par S.o.p ?

48
Instruction switch
  • Permet d'exécuter, conditionnellement à la valeur
    d'un entier, certaines instructions
  • int mois 10
  • switch (mois)
  • case 1 S.o.p("Janvier") break
  • case 2 S.o.p("Février") break
  • case 3 S.o.p("Mars") break
  • case 10 S.o.p("Octobre") break
  • case 11 S.o.p("Novembre") break
  • case 12 S.o.p("Décembre") break
  • default S.o.p("non valide!")
  • Valeur affichée par S.o.p ?

49
Un exemple
  • Un programme qui permette de
  • Saisir deux nombres réels au clavier
  • Afficher un menu à l'écran
  • S)omme des deux nombres
  • P)roduit des deux nombres
  • M)oyenne des deux nombres
  • Saisir le choix de l'utilisateur, S', 'P' ou 'M
  • Afficher le résultat correspondant

50
  • import unsa.Console
  • public class Test
  • public static void main(String args)
  • float nb1 Console.readFloat("Entrer un nombre
    réel ")
  • float nb2 Console.readFloat("Entrer un nombre
    réel ")
  • S.o.p("")
  • S.o.p(" S)omme des deux nombres ")
  • S.o.p(" P)roduit des deux nombres ")
  • S.o.p(" M)oyenne des deux nombres ")
  • S.o.p("")
  • char repConsole.readChar("Faites votre
    choix")
  • switch (rep)
  • case 'S' S.o.p(nb1nb2)break
  • case P' S.o.p(nb1nb2)break
  • case M' S.o.p((nb1nb2)/2)break
  • default S.o.p("erreur de saisie")
  • System.exit(0)

51
  • import unsa.Console
  • public class Test
  • public static void main(String args)
  • float nb1 Console.readFloat("Entrer un nombre
    réel ")
  • float nb2 Console.readFloat("Entrer un nombre
    réel ")
  • S.o.p("")
  • S.o.p(" S)omme des deux nombres ")
  • S.o.p(" P)roduit des deux nombres ")
  • S.o.p(" M)oyenne des deux nombres ")
  • S.o.p("")
  • char repConsole.readChar("Faites votre
    choix")
  • switch (rep)
  • case 'S'
  • case 's' S.o.p(nb1nb2)break
  • case 'p'
  • case 'P' S.o.p(nb1nb2)break
  • case 'm'
  • case 'M' S.o.p((nb1nb2)/2)break
  • default S.o.p("erreur de saisie")

52
  • public static void main(String args)
  • char rep
  • float nb1 Console.readFloat("Entrer un nombre
    réel ")
  • float nb2 Console.readFloat("Entrer un nombre
    réel ")
  • S.o.p("")
  • S.o.p(" S)omme des deux nombres ")
  • S.o.p(" P)roduit des deux nombres ")
  • S.o.p(" M)oyenne des deux nombres ")
  • S.o.p("")
  • do
  • repCharacter.toLowerCase(Console.readChar("cho
    ix ?"))
  • switch (rep)
  • case S' S.o.p("somme "(nb1nb2))
    break
  • case P' S.o.p("produit "(nb1nb2))
    break
  • case M' S.o.p("moyenne "(nb1nb2)/2)break
  • default S.o.p("erreur de saisie")
  • while ((rep ! 's') (rep ! 'p') (rep !
    'm'))

53
Conversion d'un caractèreminuscule en MAJUSCULE
Il faut distinguer le type primitif char et la
classe Character
  • char rep
  • repCharacter.toLowerCase(Console.readChar("votre
    choix ?"))
  • S.o.p(rep)

Console.readChar("votre choix ?") readChar est
une méthode de la classe Console qui retourne le
char lu au clavier static char
toLowerCase(char ch) Méthode static de la classe
Character le caractère donnée char ch est
converti en minuscule avant d'être retourné en
résultat char
54
Capitaliser un texte
  • Public static void main(String args)
  • String strConsole.readLine("Tapez un texte")
  • char ch // un caractère de str
  • char prevCh'.' // le caractère précédent ch
  • for (int i 0 i lt str.length() i )
  • ch str.charAt(i)
  • if ( Character.isLetter(ch)
  • ! Character.isLetter(prevCh) )
  • S.o.p( Character.toUpperCase(ch) )
  • else S.o.p(ch)
  • prevCh ch

55
Algorithme d'Euclide
  • Calculer le PGCD de deux entiers A et B
  • PGCD(A,B) PGCD(B,R)
  • A (B x Q) R 0 lt R lt B
  • 294 (231 x 1) 63
  • 231 (63 x 3) 42
  • 63 (42 x 1) 21
  • 42 (21 x 2) 0
  • PGCD(294,231) 21

56
Algorithme d'Euclide
  • int a21, b14
  • int r
  • S.o.p("PGCD "a" et "b)
  • rab
  • / division euclidienne de a par b
  • abqr et 0ltrltb /
  • while (r!0)
  • ab br // pgcd(a,b)pgcd(b,r)
  • rab
  • S.o.p(b)

57
Le nombre Mystérieux
  • public static void main (String args)
  • int inconnu (int) (Math.random()100)
  • int score0
  • int propConsole.readInt("proposition ")
    score
  • while (prop ! inconnu)
  • if (prop lt inconnu)
  • S.o.p("TROP PETIT")
  • else S.o.p("TROP GRAND")
  • propConsole.readInt("proposition ")
    score
  • S.o.p("Vous avez trouvé en "score" coups")
  • System.exit(0)

58
É s o p e r e s t e i c i e t s e r e p o s e
  • public static void main(String args)
  • final int taille
  • String phraseConsole.readLine("Entrez une
    string")
  • taille phrase.length()
  • int i 0, j taille - 1
  • while(ilttaille/2
  • phrase.charAt(i) phrase.charAt(j))
  • i j--
  • if (I gt taille/2)
  • S.o.p(phrase" est un palindrome")
  • else
  • S.o.p (phrase" nest pas un palindrome")
  • System.exit(0)

59
É s o p e r e s t e i c i e t s e r e p o s e
  • public static void main(String args)
  • String phrase
  • phraseConsole.readLine("votre
    texte").toUpperCase()
  • StringBuffer sb1 new StringBuffer(phrase)
  • StringBuffer sb2 new StringBuffer(phrase)
  • sb1.reverse()
  • if (sb1.toString().equals(sb2.toString()))
  • S.o.p(phrase" est un palindrome")
  • else S.o.p(phrase" n'est pas un palindrome")
  • System.exit(0)

60
Algorithme du drapeau tricolore
  • On aligne n boules, réparties en un nombre
    quelconque de boules bleues, blanches ou rouges,
    disposées dans un ordre quelconque
  • Écrire un algorithme qui trie le tableau de telle
    façon que toutes les boules bleues apparaissent
    au début, suivies des boules blanches puis des
    boules rouges
  • Le tri doit être réalisé en unique parcours

61
(No Transcript)
62
(No Transcript)
63
Algorithme du drapeau tricolore
  • int d3,1,3,1,2,3,2,3,2,1
  • // 1bleu 2blanc 3rouge
  • for(int k0 kltd.length k) S.o.p(dk"
    ")
  • int i0 , b0 , rd.length-1
  • while ( i lt r )
  • switch (di)
  • case 1 echanger(b,i) bibreak
  • case 2 i break
  • case 3 echanger(r,i) r-- break
  • S.o.p("le drapeau ...")
  • for(int k0 kltd.length k) S.o.p(dk"
    ")

64
Comment les arguments sont-ils passés aux
méthodes ?
  • public class CallDemo
  • static void f(int b)
  • b 10
  • public static void main(String args)
  • int a 5
  • f(a)
  • S.o.p("a " a)
  • Quelle est la valeur affichée, 5 ou 10 ?

65
Passage des arguments par valeur
  • public class CallDemo
  • static void f(int a)
  • a 10
  • S.o.p("a de f " a)
  • public static void main(String args)
  • int a 5
  • f(a)
  • S.o.p("a du main " a)

66
Passage d'un objet en argument
  • static void lireTableau(int tl)
  • for (int i0 ilttl.length i)
    tliConsole.readInt("Taper un entier ")
  • static void afficherTableau(int ta)
  • for (int i0iltta.lengthi) S.o.p(tai "
    ")
  • public static void main(String args)
  • final int TAILLE5
  • int tableau new intTAILLE
  • lireTableau(tableau)
  • afficherTableau(tableau)
  • System.exit(0)

67
Sélectionner pour trier
  • public static void main(String args)
  • int tab -2, 0, 8 ,7 ,1, -5, 12, 10, 25, 5
  • final int TAILLEtab.length int aux int
    indMin
  • for(int k0 kltTAILLE k)
  • // rechercher la place IndMin du plus petit
    élément dans
  • // le sous tableau tabk..TAILLE
  • indMink
  • for(int jk1 jltTAILLE j)
    if(tabj lt tabindMin) indMinj
  • // échanger l'élément d'indice indMin
  • // avec l'élément d'indice k
  • aux tabindMin
  • tabindMin tabk
  • tabk aux

68
Sales tax in New York City is 8.25
  • public static void main (String args)
  • final double TAUX 0.0825
  • double prixDouble.valueOf(args0).doubleValue()
  • //double prix Double.parseDouble(args0)
  • S.o.p("taxe " prixTAUX)
  • S.o.p("prix ttc " prix(1TAUX))
  • static Double valueOf(String s) Returns a new
    Double object initialized to the value
    represented by the specified String
  • Double doubleValue()  Returns the double value
    of this Double
  • static double parseDouble(String s) Returns a
    new double initialized to the value represented
    by the specified String

69
(No Transcript)
70
NEUTRE ARCHITECTURALEMENT
  • Le compilateur JAVA compile le code dans un
    langage fait dinstructions élémentaires, en
    fait, un code exécutable dans une machine virtuel
    (la java virtual machine)
  • Toutes les plates-formes, PC windows, Mac,
    UNIX, digital contiennent la JVM. Ainsi que les
    navigateurs internet

code.java
Compilateur JAVA
code.class
JVM
JVM
JVM
Unix
MAC
Windows
Write a Comment
User Comments (0)
About PowerShow.com