Module BA3a, séminaire d'info II
Séminaire de programmation Java
http://cui.unige.ch/isi/cours/javalettres/
M. Berthouzoz
Cours préparé par L. Nerima
Université de Genève
Plan
Introduction: langages de programmation, Web, programme
Java, applet
Les bases du langage
Objets et classes
Classes, package, API
Les structures de données « collection »
Programmation de l’interface utilisateur
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 2
Bibliographie
* Barnes, D. et Michael Kölling, Conception objet en Java avec BlueJ,
4e édition, Pearson, 2009
Edition anglaise: Barnes, D. et Michael Kölling, Object First with Java –
A Practical Introduction using BlueJ , 6th Edition, Pearson, 2016
Delannoy, C., Programmer en Java, 9e éd, Eyrolles, 2014
Weiss, M. A., Data Structures & Algorithm Analysis in Java, Addison-
Wesley, 2011.
Bonjour, M., Falquet, G., Guyot, J.et Legrand, A., JAVA: de l’esprit à la
méthode, 2e édition, Vuibert, 1999. (pdf disponible sur le site du
séminaire Java)
I
S * Idée de lecture pour la semaine d’études !
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 3
Pourquoi Java ? - motivations
Très bon représentant des langages orientés objet
Syntaxe proche d’autres langages de programmation
populaires : C, C++, JavaScript, PHP, …
et …
Un des langages de programmation les plus populaires (utilisés)
dans le monde : 4ème en 2023 ! (derrière Python, C et C++)
https://www.tiobe.com/tiobe-index/
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 4
Introduction : langages de programmation (1)
Étapes du développement d’un logiciel :
Analyse du problème
Conception/Modélisation
Décomposition des tâches en sous-tâches
Choix des structures de données, des algorithmes
Programmation/Implémentation
Évaluation/Validation
Documentation
Maintenance
Programmer = Implémenter les structures de données et les
I algorithmes au moyen d’un langage de programmation
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 5
Introduction : langages de programmation (2)
Langage de programmation = Un langage artificiel créé pour
simplifier la réalisation de programmes informatiques
Historiquement : langage machine, aussi appelé langage binaire –
codage des instructions sous forme de séquences de bits (0 et 1)
Historiquement : langage d’assemblage, aussi appelé assembleur –
remplacement des séquences binaires par des codes symboliques
(p.ex. ADD, SUB, DIV, MOVE)
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 6
Introduction : langages de programmation (3)
Aujourd’hui : langages évolués, aussi appelés langages de haut
niveau – C, C++, PHP, JavaScript, Python, Java…
Haut niveau d’abstraction
Focalisation sur les algorithmes ou les données
Grande indépendance par rapport au matériel
Définis sur la base d’un vocabulaire (lexique), d’une syntaxe
(grammaire) et d’un compilateur ou interpréteur
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 7
Introduction : langages de programmation (4)
Les langages évolués ne sont pas directement compréhensibles
par une machine. Il faut les transformer en langage machine.
Compilation = la traduction « hors ligne » du code source (le
programme) en code objet
Interprétation = traduction du code source en code objet au fur et à
mesure de l’exécution
Note : Si le programme n’est pas syntaxiquement correct, il n’est pas
compilé !
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 8
Java : historique et contexte
Hypertexte
Langage de programmation Syntaxe
Un langage possède une la syntaxe peut
syntaxe et une s’exprimer en BNF
sémantique qui … où par des
Il faut un compilateur pour diagrammes
…
Par exemple Java
Sémantique…
Programme
Un programme définit … Compilateur
programme qui
traduit du langage
Le langage Java
source vers un …
La syntaxe de java est
proche de celle de C++
Le compilateur Java …
…
Web : hypertexte réparti sur les hôtes d’Internet
HTML : langage de description du contenu d’un nœud d’information
I Java : langage de programmation orienté objet développé par Sun
S (racheté par Oracle) adapté à la distribution d’applications sur le Web
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 9
Java : caractéristiques
langage général
procédural, typé
compilé en bytecode, puis exécuté par machine virtuelle Java
syntaxe inspirée de C et C++ (C pour réécrire UNIX, ancêtre de Linux)
ressemble en surface à JavaScript … mais ce n’est pas du JavaScript !
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 10
Java : exemple de programme
Programme qui calcule la somme de la série S = 1 + 2 + … + n :
class TestWhile{
public static void main (String args[]) {
int n=100, somme_i=0, j=1;
// boucle calculant la somme de la série S = 1 + 2 + … + n
while (j<=n) {
somme_i+=j;
j++;
}
System.out.println("boucle 1:" + somme_i);
// même somme mais boucle écrite de manière condensée
somme_i=0; j=0; // attention: il faut que j=0 (et non 1)
while (++j<=n ) somme_i+=j;
System.out.println("boucle 2:" + somme_i);
}
}
Exécution :
boucle 1:5050
I boucle 2:5050
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 11
Instruction conditionnelle
if (i==1)
s=" i est égal à 1 ";
else if (i==2)
s=" i est égal à 2 ";
else if (i==3)
s=" i est égal à 3 ";
else s=" i est différent de 1,2 et 3 ";
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 12
Instruction itérative «for»
for (int i = 0; i <= 10; i++ )
System.out.println(i + " " + i*i);
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 13
Java est orienté objet
Le paradigme objet
les objets (instances) sont issus de moules (classes) ;
ils communiquent entre eux à l’aide de messages ;
les messages sont évalués par les méthodes de l’objet, induisant des
modifications de son état ou de son comportement ;
les objets vivent en famille, ils héritent du comportement de leurs aînés
(héritage entre classes) et spécialisent ce comportement.
Dans Java, tout est objet (presque)
Par rapport à C et C++, Java supprime l’utilisation des pointeurs
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 14
Où trouver Java ?
Il est possible que Java soit déjà installé sur votre ordinateur !
Sinon, le kit de développement Java JDK fourni par Oracle est disponible pour:
Linux
MacOS
Microsoft Windows
Version Java la plus récente: Java SE JDK 21
Adresse web pour le téléchargement
https://www.oracle.com/java/technologies/downloads/
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 15
Contenu du JDK
Un compilateur : le programme qui va traduire vos fichiers de texte
source Java en byte-code ;
Un viewer : le programme qui interprète vos fichiers byte-code ;
L’API Java : un ensemble de classes prédéfinies qui vous permettront
de développer vos programmes ;
Une documentation : un ensemble de fichiers HTML qui constitue une
aide indispensable à la bonne compréhension de l’API Java.
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 16
Tutoriels Java
https://docs.oracle.com/javase/tutorial/
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 17
Développement d’un programme Java
main()
application interpréteur
a.java a.class Java
(main())
compilateur
Java
HTML
butineur
<APPLET>
interpréteur
p.java applet p.class Java
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 18
Application Java
class MaPremiereApplication {
public static void main (String args[]) {
System.out.println("Ma première application");
}
}
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 19
Applet Java
import java.awt.Graphics;
public class MaPremiereApplet extends java.applet.Applet {
public void paint(Graphics g) {
g.drawString("Ma première applet !", 20, 20);
}
}
Exécution: au moment où la page html est chargée dans le butineur (tag
<applet>)
<applet code=MaPremiereApplet.class width=200 height=50>
</applet>
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 20
Applet Java (suite)
<title>Applet Une</title>
<h1>Vraiment la première</h1>
<hr>
<applet code=MaPremiereApplet.class width=200 height=50>
</applet>
<hr>
<a href="MaPremiereApplet.java">Le source.</a>
<hr>
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 21
L’environnement de développement Java BlueJ
l’environnement de développement Java que nous allons utiliser
s’appelle BlueJ
l’environnement lui-même est écrit en Java
développé à l’Université de La Trobe (Australie) et à l’Université
de Kent (Canterbury, Grande-Bretagne)
but pédagogique
site Web de BlueJ: www.bluej.org
dernière version : 5.2.0 (20 juin 2023)
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 22
Installation de l’environnement BlueJ
www.bluej.org
Installation de BlueJ (si Java est déjà installé sur votre ordinateur)
cliquer sur le bon OS (Windows, Mac OS X, Linux …)
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 23
Écriture et compilation de « MaPremiereApplication »
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 24
Exécution de « MaPremiereApplication »
I
S
I Automne 2023 - M. Berthouzoz,
d'après le cours de L. Nerima Intro Java 25