Vous êtes sur la page 1sur 53

Introduction au langage java

et
programmation orientée objet

Ye-Qiong SONG
Ye-Qiong.Song@univ-lorraine.fr
2x1h de CM, 1h de TD et 3h de TP

• Introduction à Java
• Programmation orientée objet en Java
– Modélisation objet et programmation objet (notions de classe,
méthode et objet)
– héritage,
– protection de données,
– classes abstraite
– interface (design pattern)

Cette première partie a pour


objectif la prise en main de Java.
Elle nécessite beaucoup de
pratique !
2
Partie 1:
Introduction à java

3
Java et JVM
Java est né dans un café: Bill Joy, James Gosling
• Java est un langage objet (basé sur C++), développé par
Sun Microsystems en 1995. Un environnement de
programmation orienté objets adapté à la distribution
d'applications sur Internet et s'intégrant au Web
• L’introduction de JVM (Java Virtual Machine) assure la
portabilité du code (exécutable sur Windows, MacOS, Unix,
… sans réécriture ni recompilation), mais au prix d’une
exécution plus lente car interprété
• JDK (Java Development Kit) ou SDK téléchargeable sur le
site d’Oracle (prenez Java standard edition Java SE):
– pour compiler: javac monprog.java è monprog.class
– pour exécuter: java monprog (sans extension)
• Autres Environnements de Développement Intégré (IDE):
Netbeans, Eclipse,
cours d’algo. et prog. …
par Y.Q. Song Informatique 1 4
Autres intérêts de java
• Java et Internet
– Java a d'abord été utilisé pour animer les pages Web
– Le « World Wide Web » passe d'un « simple » instrument de
publication passive à un réseau pleinement client-serveur (avec
notions de servlet et applet)
• Avec Java, un programme précompilé stocké sur le serveur, associé à
une page spécifique, est téléchargé automatiquement sur le client
lorsqu'un browser Web lit cette page, permettant ainsi au browser doté
d'un interpréteur Java (JVM) de l'exécuter
• En cliquant sur telle icône ou en chargeant telle page HTML,
l'utilisateur voit s'activer sur son browser un dessin animé ou une mise
à jour en temps réel d'une courbe de données
• Java et interfaces graphiques
– interfaces graphiques des applications développées en Java sont
hautement performantes grâce au support du multithreading et
bibliothèque de « classes »
5
Les langages les plus utilisés

• Les plus préférés • Les plus utilisés


selon IEEE en 2021 selon magazine
– Python (100) Codeur en 2021
– Java (95,4) 1. Java
– C (94,7) 2. Python
– C++ (92,4) 3. C / C++

https://www.codeur.com/blog/top-
langages-de-programmation/

6
Java
• 4 éléments :
– un langage de programmation
– une machine virtuelle JVM ou interpréteur (JRE:
Java Runtime Envirionment)
– un ensemble d'outils JDK (Java Development
Kit: Javac, jdb, javadoc, …), Prenez Java SE
(Standard Edition), au lieu de J2EE (Entreprise
Edition), pour votre apprentissage
– un ensemble de classes standards dans des
API
7
Principales propriétés de Java (extrait de P. Itey)

• Java est un langage


– orienté objet
– à classes
• de syntaxe proche du langage C (C++)
• fourni avec le SDK (Software Développement Kit) :
– outils de développement
– ensemble de paquetages très riches et très variés
• portable (grâce JVM)

8
Autres propriétés importantes (extrait de P. Itey)

• mufti-tâches (thread)
• sûr
– fortement typé
– nombreuses vérifications au chargement des classes et
durant leur exécution
• adapté à Internet
– chargement de classes en cours d’exécution (par le
réseau : applet ou RMI)
– distribution des traitements entre plusieurs machines
(sockets, RMI, Corba)
9
Eclipse pour faciliter vos
développements en java
• Notion de projet java (‘Java project’)
• Chaque projet java contient au moins deux sous-
répertoires: src et bin (invisible depuis ‘project
explorer’)
• Les programmes sont dans des fichiers nommés
« class »
• Les classes sont regroupées dans de « packages » (si
vous ne mettez rien, le package sera « default »)
• Eclipse est un EDI (Environnement de Développement
Intégré, IDE en anglais) qui fournit beaucoup
d’assistances !
Cf. démo pour la prise en main cycle_rentree (jeu plus moins) 10
Auto-apprentissage
• Vous savez déjà programmer en Python
• Vous avez aussi pratiqué la programmation
Objet en Python.
• La première étape consistera à vous
familiariser avec la syntaxe du langage Java
(très similaire à celle du C)
– Suivre le cours en ligne sur openclassrooms
(Partie1 et Partie2)
https://openclassrooms.com/fr/courses/6173501-apprenez-a-programmer-en-java

– Faire les exercices du tutorat 1 (Arche)


11
Quelques différences syntaxiques
entre java et python
• Toute variable en java doit être déclarée
avec leur type:
– int x; double y; int [] coef;
char [][] mots_croisés; String s;
• Pas d’indentation, ni les deux points « : »
– En java on utilise les accolades { … }
• Le type de retour d’une fonction java doit
aussi être défini

cours d’algo. et prog. par Y.Q. Song Informatique 1 12


Méthodes statiques
import utilensemjava.Lecture;
public class Cercle
{ // Calculer la circonférence d’un cercle
public static void main(String [ ] arg)
{ double R, P;
System.out.print("valeur du rayon :");
R=Lecture.FlottantDouble();
P=2*Math.PI*R;
System.out.print("le cercle de rayon "+R+" a pour perimetre: "+P);
}
}
Méthodes java standards
Méthodes java utilisateur 13
Entrée/sortie standard
• La saisie (environnement non graphique)
– System.in.read(); //ne permet de récupérer qu’un seul caractère
• A l’ENSEM, on fournit une class lecture.java pour faciliter
la saisie au clavier (utilensemjava.jar à télécharger
depuis ARCHE, puis inclure dans votre projet Eclipse avec
import, et en indiquant le chemin du fichier par java
build path, libraries, add external JARs)
– lecture.lireChaine(); //saisir une String (chaîne de caractères)
– Tous les autres (e.g. lecture.lireEntier(); ) qui s’appuient sur
• la saisie de String
• la conversion de type (e.g. String à nombre)
• Les autres détails seront expliqués au fur et à mesure…
• Sur Openclassrooms, classe Scanner
– import java.util.Scanner; Scanner sc = new Scanner(System.in);
System.out.println("Veuillez saisir un mot :");
String str = sc.nextLine(); 14
System.out.println("Vous avez saisi : " + str);
Entier local qui
Type du résultat reçoit la valeur du
Peut être appelée
Par d ’autres classes paramètre
(si visible) Nom de la méthode

public static int somme (int deb, int fin)


{ int s = deb ;
for (int i = deb + 1 ; i ≤ fin ; i++)
{s=s+i;}
Méthode
return s ; de classe Zone des paramètres
} Leur type est déclaré
Leur valeur sera
Retour du résultat passée à la méthode
à l ’appelant lors d ’un appel

15
Partie 2:
Programmation orienté objet en java

16
Une classe d’objets en java

• Attributs
• Constructeur(s)
• Méthodes
– get() et set() publique si attributs privés
– Les autres méthodes
– Redéfinition de toString() ou méthode
d’affichage de l’objet

17
Un exemple de la programmation
orientée objet
• Nous prenons l’exemple de la classe
« Polynome » déjà vu en Python en S5
• Différentes façons de programmer
– Un programme structuré avec des méthodes statiques
– Une programmation orientée objet
• Définir l’objet: ses attributs et ses méthodes
• Décrire les méthodes

18
public class polynome_Fonction { //programme structuré en fonctions
public static void main(String[] args) {
double [] coef;
double resultat;
int n=Lecture.lireEntier("saisir le degré du polynôme: ");
coef = new double[n+1];
for (int i=0; i<coef.length; i++)
coef[i]=Lecture.lireEntier("saisir le coef de x^"+i+": ");
double x=Lecture.lireFlottantDouble("saisir la valeur de x : ");
System.out.println("résultat est = "+horner(coef,x));
}
public static double horner(double [] coefficient, double x){
//méthode de HORNER
int n=coefficient.length-1;
double Px=coefficient[n];
for(int i = n-1; i >= 0; i--){
Px = Px*x+coefficient[i];
}
return Px;
}
} cours d’algo. et prog. par Y.Q. Song Informatique 1 19
Objet polynôme
• Modélisation de l’objet « Polynôme »
– Attributs: degré, les coefficients (degré+1)
– Méthodes: créer (par constructeurs), afficher
(peut se faire via la redéfinition de toString()),
évaluer, additionner, multiplier, dériver, …
• Implémentation en Java
– Une classe « polynome »
– Une classe principale avec « main() » pour
manipuler les polynômes

20
public class Polynome_obj {//programme objet
int deg;
double [] coef;
public Polynome_obj(){// constructeur par défaut
deg=Lecture.lireEntier("saisir le degré du polynôme: ");
coef = new double[deg+1];
for (int i=0; i<coef.length; i++)
coef[i]=Lecture.lireEntier("saisir le coef de x^"+i+": ");
}
public double horner(double x){//méthode de HORNER
double resultat=coef[deg];
for(int i = deg-1; i >= 0; i--){
resultat = resultat*x+coef[i];
}
return resultat;
}
} d’algo. et prog. par Y.Q. Song
cours Informatique 1 21
Utilisation de la classe
« Polynome_obj »

public class ManipPolynome {


public static void main(String[] args) {
Polynome_obj p= new Polynome_obj();
double x=Lecture.lireFlottantDouble("saisir la valeur de x: ");
System.out.println("valeur du polynome = "+p.horner(x));
}
}

22
Objet polynôme
• Si on veux ajouter d’autres méthodes?
– Afficher un polynôme
• Par une chaîne de caractères. E.g. coef(3, 0, 1, 4)
3*X^3+0*X^2+1*X^1+4 ou 3*X^3+X^1+4
et si coef(3, 0, -1, 4)?
– Additionner deux polynômes
n m

P( X ) = å pi X i Q( X ) = å qi X j

i =0 j =0

min( n , m ) n m
P( X ) + Q( X ) = å
k =0
( pk + q k ) X +
k
å
i = min( n , m ) +1
pi X +
i
å
j = min( n , m ) +1
qj X j

Pas Informatique
d’effet si 1 m ou n < min(m,n)+1
23
Méthode afficher() ou redéfinir toString()

public void afficher(){


String s="";
for (int i=deg; i>=0; i--)
s=s.concat("+"+coef[i]+"*X^"+i);
System.out.println(s);
}

Concaténation de chaînes de caractères.


Équivalent à: s = s+ "+"+coef[i]+"*X^"+i

24
Mais de préférence redéfinir toString()

public String toString(){


String s="";
for (int i=deg; i>=0; i--)
s=s.concat("+"+coef[i]+"*X^"+i);
return(s);
}

Concaténation de chaînes de caractères.


Équivalent à: s = s+ "+"+coef[i]+"*X^"+i

25
public Polynome_obj additionner(Polynome_obj P){
int maxdeg = (P.deg >= this.deg ? P.deg : this.deg);
int mindeg = (P.deg <= this.deg ? P.deg : this.deg);
Ou Math.max()
Polynome_obj R = new Polynome_obj(maxdeg);
for(int i = 0; i <= mindeg; i++) et Math.min()
R.coef[i] = P.coef[i] + this.coef[i];
for(int i = mindeg+1; i <= P.deg; i++)
R.coef[i] = P.coef[i];
for(int i = mindeg+1; i <= this.deg; i++)
R.coef[i] = this.coef[i];
return R;
}

Besoin d’un constructeur avec degré comme paramètre et sans la saisie des coef !

public Polynome_obj(int d){ this.deg pour distinguer avec


this.deg=d; la variable d’instance deg de la classe
this.coef=new double[d+1];
}
26
Exemple d’un programme principal pour manipuler des polynômes

public class ManipPolynome {


public static void main(String[] args) {
Polynome_obj p= new Polynome_obj();
//double x=Lecture.lireFlottantDouble("saisir la valeur de x: ");
//System.out.println("valeur du polynome = "+p.horner(x));
p.afficher();
Polynome_obj q= new Polynome_obj();
q.afficher();
Polynome_obj r= new Polynome_obj(Math.max(p.deg,q.deg));
r=q.additionner(p); //ou p.additionner(q);
r.afficher();
}
}
27
Méthodes et variables statiques et non
statiques
• Une variable déclarée static est commune à
tous les objets de la classe è variable de classe
(globale)
• Une variable non statique aura une instance par
objet è variable d’instance
• Règle: toute modification d’une variable statique
peut être faite indistinctement par n’importe quel
objet de la classe. Cette modification est visible
par tous les objets de la classe.

28
Méthodes et variables statiques et non
statiques
• Une méthode déclarée static peut être utilisée sans
référence à un objet particulier è méthode de classe
• Une méthode statique n’a pas directement accès aux
variables non statiques
• Une méthode non statique est toujours utilisée en
référence à un objet
Appel d’une méthode statique:
NomDeClasse.nomDeMethode()

Appel d’une méthode non statique:


nomObjet. nomDeMethode()
29
Méthodes et variables statiques et non
statiques
public class Paire {
static int x; //variable de la classe
int y; //variable d’instance

void affiche_x() {
System.out.println("s.x = " + this.x);
}
void affiche_y() {
System.out.println("s.y = " + this.y);
}
static void affiche2_x() {
System.out.println("s.x = " + x);
}
// static void affiche2_y() { variable y non-statique
// System.out.println("s.y = " + y); ne peut pas être
// } référencé depuis un
static void affiche3_y(Paire s) {
contexte statique
System.out.println("s.y = " + s.y);
} d’algo. et prog. par Y.Q. Song
cours Informatique 1 30
}
Méthodes et variables statiques et non
statique
public class TesterPaire {
public static void main(String[] args) {
Paire s = new Paire();
Paire t = new Paire();
t.x = 2;
t.y = 3;
System.out.println("t.x = " + t.x + ", t.y = " + t.y); //1
System.out.println("s.x = " + s.x + ", s.y = " + s.y); //2
s.affiche_x(); //3
t.x = 2, t.y = 3
s.affiche_y(); //4
s.x = 2, s.y = 0
Paire.affiche2_x(); //5
s.x = 2
s.affiche2_x(); //6
s.y = 0
Paire.affiche3_y(s); //7
s.x = 2
}
s.x = 2
} cours d’algo. et prog. par Y.Q. Song Informatique 1 31
s.y = 0
L’héritage
• L’héritage permet la réutilisation des
fonctionnalités d’une classe, tout en apportant
certaines variations, spécifiques de l’objet héritant
• Exemple: une classe « Forme » qui définit un
ensemble de comportements propres à toute
forme géométrique
– Ces comportements peuvent être réutilisés par la classe
« Cercle ». Cette réutilisation est effectuée sans avoir à
modifier les instructions de la classe « Forme »
– Possibilité d’ajouter d’autres comportements spécifiques
des objets « Cercle ». Ces nouveaux comportements
sont valides uniquement pour la classe « Cercle » et
non pour la classe « Forme »
32
Modélisation UML:
association entre
classes

[schéma extrait du http://uml.free.fr/cours]


cours d’algo. et prog. par Y.Q. Song 33
Liens entre classes en UML

l'ObjetA a un ObjetC

l'ObjetA est composé de plusieurs instances d'ObjetD


(e.g. un tableau d’objet D)
Héritage: est un

[Extrait du site du zero]

34
public class ObjetA{
protected ObjetC obj = new ObjetC();
protected ObjetD[] objD = new ObjetD[10]; public class ObjetC{
public ObjetC getObject(){ }
return obj;
}
public ObjectD[] getObjectD(){
return objD;
}
}

public class ObjetB extends ObjetA{ public class ObjetD{

} }

35
import utilensemjava.*;
public class Forme {
protected int x, y; Protected permet l’accès
private int couleur ; //0-255 par la sous-classe
public Forme() {
x = Lecture.lireEntier ("Position en x : ");
y = Lecture.lireEntier ("Position en y : ");
couleur = Lecture.lireEntier ("Couleur : ");
}
public Forme(int nx, int ny) {
x = nx; y = ny; couleur = 0;
}
public Forme(int nx, int ny, int nc) {
x = nx; y = ny; couleur = nc;
}
public void afficher() { //ou redéfinition de toString()
System.out.println("Position en " + x + ", " + y);
System.out.println("Couleur : " + couleur);
}
public void déplacer(int nx, int ny) {
x = nx;
y = ny;
}cours d’algo. et prog. par Y.Q. Song Informatique 1 36
} // Fin de la classe Forme
import utilensemjava.*;
public class Cercle extends Forme {
private int r ;
Private final static int TailleEcran=600;
public Cercle() { Constructeur de
System.out.print ("Rayon : " ); la classe héritée
r = rayonVérifié();
}
public Cercle(int xx, int yy) { Constructeur de
super(xx, yy); la classe héritée
r = rayonVérifié();
}
private int rayonVérifié() {
// cf. transparents déjà présentés }
private int rayonVérifié(int tmp) {
// cf. transparents déjà présentés }
public void afficher() { Deux formes différentes dans
super.afficher(); • classe Forme
System.out.println("Rayon : " + r);
} • classe Cercle
public double périmètre() {
return 2*Math.PI*r;
è polymorphisme
}
public void agrandir(int nr) {
r = rayonVérifié(r + nr);
}
cours d’algo. et prog. par Y.Q. Song Informatique 1 37
} // Fin de la classe Cercle
Protection des données
Modificateur Classe Paquet Sous-classe extérieur
(package)

public accessible accessible accessible accessible

protected accessible accessible accessible Inaccessible

Sans accessible accessible Inaccessible Inaccessible


modificateur
private accessible Inaccessible Inaccessible Inaccessible

38
Classes abstraites: un exemple

On définit la classe « Forme » qui modélise des formes


géométriques, planes, délimitées par une courbe fermée

On peut mélanger des méthodes abstraites avec des


méthodes non abstraites

Forme

Ellipse Rectangle
39
Un exemple: Classe Forme
abstract class Forme {
abstract double perimetre(); //methode abstraite
abstract double surface(); //methode abstraite
void decritEtalement() {
double lePerimetre = perimetre();
if (surface() >= lePerimetre*lePerimetre/16)
System.out.println(this + " s'etale plus qu'un carre");
else System.out.println(this + " s'etale moins qu'un carre");
}
}

- decritEtalement() compare si, à périmètre fixe, la forme a


une surface supérieure ou égale à celle d’un carré, ou inférieure
- System.out.println(this) exécute la méthode toString()
de la classe Object du paquetage standard java.lang. La
méthode toString() retourne le nom de la classe de l’objet
concerné suivi de l’adresse de cet objet sous forme d’une chaîne de
cours d’algo. et prog. par Y.Q. Song Informatique 1 40
caractères. Cette méthode est redéfinie comme suit…
Un exemple: sous-classe Ellipse
class Ellipse extends Forme{
private int grandAxe, petitAxe;
Ellipse(int grandAxe, int petitAxe) {
this.grandAxe = grandAxe;
this.petitAxe = petitAxe;
}
double perimetre() { // calcul approché
double sinus, cosinus, resultat = 0;
double pcarre = petitAxe * petitAxe;
double gcarre = grandAxe * grandAxe;
for (int i = 0; i < 1000; i++) {
sinus = Math.sin(i*Math.PI/2000);
cosinus = Math.cos(i*Math.PI/2000);
resultat += Math.sqrt(pcarre*sinus*sinus+gcarre*cosinus*cosinus);
}
resultat *= 4*Math.PI/2000;
return resultat;
} //à suivre
cours d’algo. et prog. par Y.Q. Song Informatique 1 41
Un exemple: sous-classe Ellipse
// Suite et fin de classe Ellipse
double surface() {
return Math.PI*petitAxe*grandAxe;
}

public String toString() {


return ("L'ellipse de grand axe " + grandAxe + ", de petit axe " + petitAxe);
}
}

public String toString() redéfinit la méthode toString().


C’est à dire qu’au lieu de retourner le nom de la classe de l’objet
concerné suivi de l’adresse de cet objet sous forme d’une chaîne de
caractères, on retourne la chaîne ci-dessus.

42
Un exemple: sous-classe Rectangle
class Rectangle extends Forme{
private int longueur, largeur;
Rectangle(int longueur, int largeur) {
this.longueur = longueur;
this.largeur = largeur;
}
double perimetre() {
return 2*(longueur + largeur);
}
double surface() {
return longueur*largeur;
}
public String toString() {
return (" Le rectangle de longueur " + longueur + " et de largeur " +
largeur);
}
} cours d’algo. et prog. par Y.Q. Song Informatique 1 43
Un exemple: EssaiFormes
class EssaiFormes {
public static void main(String[ ] arg) {
(new Ellipse(2, 1)).decritEtalement();
(new Ellipse(4, 1)).decritEtalement();
(new Rectangle(2, 1)).decritEtalement();
}
}

java EssaiFormes donne le résultat suivant:

L'ellipse de grand axe 2, de petit axe 1 s'etale plus qu'un carre


L'ellipse de grand axe 4, de petit axe 1 s'etale moins qu'un carre
Le rectangle de longueur 2 et de largeur 1 s'etale moins qu'un carre

44
Interface: Un exemple
Interface (à ne pas confondre avec interface graphique): Définit le
prototype (ou design pattern – patron de conception) d’une classe
- méthodes abstractes: l’en-tête de la méthode

Permet d’implémenter un type abstrait

Interface: Tracable
________________________
classe: Cercle classe: Carre
- DIM_MAX
- dessine(java.awt.Graphics g)

45

CercleGraphique CarreGraphique
Un exemple
Fichier Tracable.java: interface Tracable {
static final int DIM_MAX = 500;
void dessiner(java.awt.Graphics g);
}

Fichier Cercle.java: class Cercle {


int rayon;
Cercle(int rayon) {
this.rayon = rayon;
}
double circonference() {
return 2 * Math.PI * rayon;
}
}

46
Un exemple
class CercleGraphique extends Cercle implements Tracable {
// x et y : coordonnees du centre du cercle
int x, y;
// couleur : la couleur du cercle
java.awt.Color couleur;
CercleGraphique(int rayon, int x, int y, java.awt.Color couleur) {
super(rayon);
this.x = x;
this.y = y;
this.couleur = couleur;
}
public void dessiner(java.awt.Graphics g) {
if (rayon < DIM_MAX) {
g.setColor(couleur);
g.drawOval(x - rayon, y - rayon, 2*rayon, 2*rayon);
}
}
} cours d’algo. et prog. par Y.Q. Song Informatique 1 47
Un exemple

class Carre {
int cote;

Carre(int cote) {
this.cote = cote;
}

int surface() {
return cote * cote;
}
}

48
import java.awt.*;
Un exemple
class CarreGraphique extends Carre implements Tracable {
int x, y; //coordonnees du centre
Color couleur = Color.black; // couleur par défaut du carre
CarreGraphique(int cote, int x, int y) {
super(cote);
this.x = x;
this.y = y;
}
CarreGraphique(int cote, int x, int y, Color couleur) {
this(cote, x, y);
this.couleur = couleur;
}
public void dessiner(Graphics g) {
if (cote < DIM_MAX) {
g.setColor(couleur);
g.drawRect(x - cote/2, y - cote/2, cote, cote);
}
}
} d’algo. et prog. par Y.Q. Song
cours Informatique 1 49
Un exemple: EssaiTracable.java
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JFrame;

class EssaiTracable extends JPanel {


Tracable[] desFormes = new Tracable[5];

EssaiTracable() {
setPreferredSize(new Dimension(200, 200));
desFormes[0] = new CercleGraphique(75, 100, 100, Color.black);
desFormes[1] = new CercleGraphique(10, 65, 75, Color.blue);
desFormes[2] = new CercleGraphique(10, 135, 75, Color.blue);
desFormes[3] = new CarreGraphique(10, 100, 110, Color.magenta);
desFormes[4] = new CarreGraphique(15, 100, 150, Color.red);
} //à
cours suivre
d’algo. et prog. par Y.Q. Song Informatique 1 50
Un exemple: EssaiTracable.java
// suite et fin
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (int i = 0;i < desFormes.length;i++) desFormes[i].dessiner(g);
}

public static void main(String[] arg) {


JFrame monDessin = new JFrame();
monDessin.setContentPane(new EssaiTracable()) ;
monDessin.pack();
monDessin.setVisible(true);
}
}

51
Résumé des concepts fondamentaux

• Modéliser une classe d’objets (attribut,


constructeur, méthode)
• Variable et méthode statique (de classe) et
d’instance (d’objet)
• Héritage
• Protection de données (attributs et méthodes)
• Méthode abstraite et classe abstraite
• Interface (design pattern)

cours d’algo. et prog. par Y.Q. Song Informatique 1 52


Auto-apprentissage
• Vous vous êtes familiarisé avec la syntaxe
de Java
• Vous allez apprendre à programmer selon le
principe de la programmation orientée objet
(modularité et réutilisabilité)
– Suivre le cours en ligne sur openclassrooms
(partie2 java orienté objet)
https://openclassrooms.com/fr/courses/6173501-debutez-la-programmation-avec-java

– Faire le TP1 (Arche)

53

Vous aimerez peut-être aussi