Vous êtes sur la page 1sur 26

Développement d’applications mobiles

– Cours 4 –
Chapitre 4 : Langage Java (1/2)
Programmation orienté objet

Dr. CHAOUCHE A.-C.


Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz

Université Constantine 2 2018/2019. Semestre 1


Développement d’applications mobiles
– Cours 4 –
Chapitre 4 : Langage Java (1/2)
Programmation orienté objet

Dr. CHAOUCHE A.-C.


Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz

Etudiants concernés
Faculté/Institut Département Niveau Spécialité

Nouvelles technologies IFA Licence 3 Technologies de l’information (TI)


Nouvelles technologies IFA Licence 3 Science de l’informatique (SCI)

Université Constantine 2 2018/2019. Semestre 1


Résumé

Prérequis
Maîtrise de l’algorithmique
Langage JAVA

Objectifs du cours
Comprendre le paradigme orienté objet
Assimiler la syntaxe du langage Java

Université Constantine 2 © Dr. Chaouche A.-C. 3


Classement des langages de programmation
Classement TIOBE (Septembre 2018)

N° Langages Types Ratio Evolution (2017)


- 1 Java 17,436% +4.75%

- 2 C 15,447% +8.06%

+1 3 Python 7,653% +4.67%

-1 4 C++ 7,394% +1.83%

+1 5 VB .Net 5,308% +3.33%

-1 6 C# 3,295% -1.48%

-1 7 PHP 2,775% +0.57%

-1 8 JavaScript 2,131% +0,11%

+18 9 SQL 2,062% +2,06%

Université Constantine 2 © Dr. Chaouche A.-C. 4


Langage Java (1/2)

Kit de développement SDK Java (JDK)


Compilateur : javac
Décompilateur (Parser) : javap
Générateur de documentation : javadoc
Archiveur : jar

Machine virtuelle Java (JVM)


Interpréteur : java
En utilisant le JRE (runtime)

Integrated Development Environment (IDE)


NetBeans, Eclipse, IntelliJ IDEA, ...

Université Constantine 2 © Dr. Chaouche A.-C. 5


Langage Java (2/2)

Java existe en plusieurs éditions


Java SE (standard edition) pour les applications Desktop
Java ME (Micro edition) pour les applications mobiles ou embarquées
Java EE (Entreprise edition) pour les applications Web
Java FX, pour un environnement client riche
JavaCard (OS) pour carte à puce

Université Constantine 2 © Dr. Chaouche A.-C. 6


JSE : Java™ Platform, Standard Edition 8

JSE est l'édition maitresse de la plateforme Java d'Oracle,

JSE contient les APIs de base :


JFC, Swing, AWT (pour les interfaces graphiques)
JAXP (pour le parsing XML)
JDBC (pour la gestion des bases de données)

JSE est composée de :


Java Specification Requests (JSR), constituant les spécifications de la
version considérée
Java Development Kit (JDK) contenant les bibliothèques logicielles ;
Java Runtime Environment (JRE) contenant le seul environnement
d'exécution (compris de base dans le JDK)

Université Constantine 2 © Dr. Chaouche A.-C. 7


JSE : Java™ Platform, Standard Edition 8

Université Constantine 2 © Dr. Chaouche A.-C. 8


Programmation : Convention de nommage

PascalCase MonExemple

camelCase monExemple

hyphen-lowercase mon-exemple

HYPHEN-UPPERCASE MON-EXEMPLE

snake_case mon_exemple

SCREAMING_SNAKE_CASE MON_EXEMPLE

dot.case mon.exemple

words lowercase mon exemple

Words Capitalized Mon Exemple

Université Constantine 2 © Dr. Chaouche A.-C. 9


Java : Convention de nommage

https://en.wikipedia.org/wiki/Naming_convention_(programming)#Java
http://www.jmdoudoux.fr/java/dej/chap-normes-dev.htm

package.name (dot.case)
ntic.licence.dam, com.google.maps

ClassName (PascalCase)
Activity, HttpSession

methodName (camlCase)
run(), getBackground()

instanceVariable / localVariable (camlCase)


i, myWidth, currentUser, threadList

CONSTANT_NAME (SCREAMING_SNAKE_CASE)
LENGTH_SHORT, DEFAULT_CONTEXT

Université Constantine 2 © Dr. Chaouche A.-C. 10


Programmation Orienté Objet

1. Objet et classe

2. Classe abstraite et interface

3. Héritage

4. Encapsulation

5. Surcharge

6. Redéfinition

7. Polymorphisme

8. Associations

Université Constantine 2 © Dr. Chaouche A.-C. 11


Programmation Orienté Objet
Objet et Classe

Objet (Etat + Comportement) :


Personnes, lieux, …
Composés d’un état (propriété, données) et dotés de comportements (opérations,
méthodes …)
Peuvent opérer directement sur leurs données
Peuvent envoyer des messages les uns aux autres

Classe :
Une structure contenant les données et les comportements communs à un
ensemble d’objets qu’elle décrit
Chaque objet est une instance d’une classe

Voiture v = new Voiture();

Université Constantine 2 © Dr. Chaouche A.-C. 12


Programmation Orienté Objet
Classe et classe abstraite

public class A {
public String a1;
package String a2;
protected String a3;
private String a4;

public void op1() { ... }


public void op2() { ... }
}

public abstract class A {


...
public abstract void op1();
}

Université Constantine 2 © Dr. Chaouche A.-C. 13


Programmation Orienté Objet
Réalisation d'une interface

Interface :
Définitions de méthodes (sans implémentation) et de valeurs constantes (classe
abstraite/héritage multiple …)

public interface Ia {
...
public int add(int op1, int op2);
}

public class A implements Ia {


...
public int add(int op1, int op2) { ... }
}

Université Constantine 2 © Dr. Chaouche A.-C. 14


Programmation Orienté Objet
Héritage simple de classe

public class A {
public int add(int op1, int op2) { ... }
}

public class B extends A {


public int substract(int op1, int op2) { ... }
}

Université Constantine 2 © Dr. Chaouche A.-C. 15


Programmation Orienté Objet
Encapsulation

Accesseurs :
protéger l'information contenue dans un objet
ne proposer que des méthodes de manipulation de cet objet (getters et setters)

Modificateur Classe Package Sous-classe Partout


public

protected

no modifier

private

Université Constantine 2 © Dr. Chaouche A.-C. 16


Programmation Orienté Objet
Surcharge d’une méthode

même nom de méthodes avec différents paramètres : type et/ou nombre


la surcharge des operateur n’existe pas sous java

public class A {
...
public int add(int op1, int op2) { ... }
public float add(float op1, float op2) { ... }
...
}

Université Constantine 2 © Dr. Chaouche A.-C. 17


Programmation Orienté Objet
Redéfinition d’une méthode

Ecraser dans la sous classe la définition d’une méthode de la superclasse


L’annotation (mot clé spécial) : @Override

public class A {
public int add(int op1, int op2) { ... }
}

public class B extends A {


@Override
public int add(int op1, int op2) { ... }
}

Université Constantine 2 © Dr. Chaouche A.-C. 18


Programmation Orienté Objet
Polymorphisme (1/3)

Attribuer à un objet d’une super-classe A une instance de la sous-classe B


Cela permet de manipuler des objets sans vraiment connaître leur type
Appel des méthodes polymorphiques (les méthodes redéfinis)

public class A {
public int add(int op1, int op2) { ... }
}

public class B extends A {


public int substract(int op1, int op2) { ... }
}

A a = new B(); ok (upcasting)

Université Constantine 2 © Dr. Chaouche A.-C. 19


Programmation Orienté Objet
Polymorphisme (2/3)

Attribuer à un objet d’une super-classe A une instance de la sous-classe B


Cela permet de manipuler des objets sans vraiment connaître leur type
Appel des méthodes polymorphiques (les méthodes redéfinis)

public class A {
public int add(int op1, int op2) { ... }
}

public class B extends A {


public int substract(int op1, int op2) { ... }
}

A a = new B(); ok (upcasting)


int res1 = a.add(2,3);
int res2 = a.substract(5,4); Erreur syntaxique

Université Constantine 2 © Dr. Chaouche A.-C. 20


Programmation Orienté Objet
Polymorphisme (3/3)

Attribuer à un objet d’une super-classe A une instance de la sous-classe B


Cela permet de manipuler des objets sans vraiment connaître leur type
Appel des méthodes polymorphiques (les méthodes redéfinis)

public class A {
public int add(int op1, int op2) { ... }
}

public class B extends A {


public int substract(int op1, int op2) { ... }
}

A a = new B(); ok (upcasting)


int res1 = a.add(2,3);
int res2 = a.substract(5,4); Erreur syntaxique
if (a instanceof B)
int res3 = ((B)a).substract(5,4); ok (downcasting)

Université Constantine 2 © Dr. Chaouche A.-C. 21


Programmation Orienté Objet
Associations, cardinalités et navigabilité (1/2)

Associations
Simple
Agrégation
Composition

Cardinaltés
1 1
one-to-one
one-to-many 1 *
many-to-many
* *

Navigabilité
Unidirectionnelle
Bidirectionnelle ou

Université Constantine 2 © Dr. Chaouche A.-C. 22


Programmation Orienté Objet
Associations, cardinalités et navigabilité (2/2)

public class A {
private B rb;
public void addB(B b) {
this.setB(b);
}
public B getB() { return rb; }
public void setB(B b) { this.rb = b; }
}

public class B {
...
// La classe B ne connaît pas
l'existence de la classe A
}

Aller plus loin : Consulter le chapitre 6 du module BDA1 de la formation STIC – Master 1
Université Constantine 2 © Dr. Chaouche A.-C. 23
Mots clés spéciaux en Java

package : conteneur avec un ensemble de classes


this : référence l’objet courant dans la classe
super : référence la superclasse
final : définit une constante, une méthode non redéfinissable, une classe non
héritable.
static : variable ou méthode de classe
abstract : classe qui ne peut être instanciée (méthodes à définir dans les sous
classes)
instantceof : vérifie le type de l’objet
getClass() : permet de découvrir le type de l’objet

Université Constantine 2 © Dr. Chaouche A.-C. 24


Quelques liens utiles

Javadoc JSE 8 :
https://docs.oracle.com/javase/8/docs/api/

Outils et JDK (Java SE) :


http://www.oracle.com/technetwork/java/javase/downloads/index.html

Java et paradigme orienté objet :


http://java.developpez.com/cours/

Associations sous Java


http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes#L3-3

Université Constantine 2 © Dr. Chaouche A.-C. 25


Références
A. Crochet-Damais, «Le Go de Google, sacré langage de l'année par Tiobe,» 10
Janvier 2017. Lien : www.journaldunet.com/solutions/dsi/1190145-go-sacre-
langage-de-l-annee-par-tiobe/.
The Eclipse Foundatio, «Eclipse Oxygen,» Juin 2017. Lien :
http://www.eclipse.org/.
Oracle Corporation, «NetBeans IDE - The Smarter and Faster Way to Code,» 2017.
Lien : https://netbeans.org/features/index.html.
JetBrains, «Intellij IDEA,» 2017. Lien : https://www.jetbrains.com/idea/.
J.-M. Doudoux, «Développons en Java - Des normes de développement,» 2016.
Lien : https://www.jmdoudoux.fr/java/dej/chap-normes-dev.htm.
P. Valicov, «Bases de la conception orientée objet - Concepts objet (Diagrammes
de Classes),» 2017. Lien : http://pageperso.lif.univ-
mrs.fr/~petru.valicov/Cours/M2104/Diagrammes_classes_x4.pdf.
S. Laporte, «Les relations entre classes,» 2017. Lien :
http://stephanie.laporte.pagesperso-
orange.fr/Pdf/LES%20RELATIONS%20ENTRE%20OBJETS.htm.

Université Constantine 2 © Dr. Chaouche A.-C. 26

Vous aimerez peut-être aussi