Initiation à la Programmation Mobile, Java et Eclipse Mobile

Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse Programmation Mobile – 2

ème Licence – Systèmes Embarqués Année Universitaire : 2011/2012 Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse

MME. LILIA SFAXI

2011/2012 1 Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse Programmation Mobile I. Programmation Mobile Appareils Mobiles : -­‐‑ deviennent de plus en plus petits -­‐‑ deviennent de plus en plus intelligents -­‐‑ les OS et les appareils se multiplient  Plusieurs moyens de développer des applications mobiles : 1. Développement de sites web mobiles • Indépendants du site traditionnel • Exploitant les données ou le CMS du site traditionnel 2. Développement d’applications natives sur les différents OS • iOS • Blackberry OS • Android • Windows Phone 7 3. Développement d’applications en HTML5 pour les différents systèmes d’exploitation basés sur Webkit  Plusieurs fonctionnalités sont populaires sur les plateformes mobiles 1. Géo-­‐‑localisation de l’utilisateur

2. Partage d’information avec les utilisateurs à proximité 3. Intégration avec les plateformes sociales 4. Reconnaissance des images prises avec la caméra  Il faut prendre en considération plusieurs critères pendant le développement :

1. Un écran très petit 2. Pas de clavier/souris (du moins, un clavier virtuel assez difficile à manipuler) 3. Taille de stockage souvent réduite 4. Fonctionne sur batterie (attention à la consommation !)  Le marché des mobiles : Le nombre d'ʹutilisateur de mobiles évolués, faisant tourner des applications réalisées par de tierces parties, est déjà plus important que le nombre d'ʹordinateurs de bureau. Il est donc évident qu'ʹun programmeur doit maintenant privilégier ce marché. Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse

MME. LILIA SFAXI

2011/2012 2 Il ne faut pas compter sur la compatibilité avec les systèmes de bureau (même si des émulateurs sont fournis pour developper sous Windows, Mac, Linux). Les interfaces, les écrans sont différents et à moins qu'ʹon ne se limite aux applications dans le navigateur, il faut repenser l'ʹapplication, et prévoir d'ʹutiliser des APIs différentes.  Parts de marché :  Systèmes d’exploitation Mobiles OS Téléphone/Société Langage Remarques iOS iPhone C / Objective C ou HTML Outil de développement : Cocoa Framework : UIKit Android Google Java Portable, open source, gratuit Plugin Eclipse (ADT) NDK (Native DK) : ajouter du code natif en C Tizen Intel/Samsung HTML5 / Linux

Windows Mobile Windows Phone C# / C++ Applications tournent sur une version allégée de .Net Blackberry OS Blackberry / RIM Java / SDK pour le web

WebOS Palm puis HP HTML5/Javascript/CSS C/C++ (bientôt abandonné) Symbian Nokia C++ / J2ME / Python/ Ruby / Flash / HTML5 (bientôt abandonné, progressivement remplacé par Windows 7)  Les outils de développement portables -­‐‑ Titanium : Interface de developpement pour Android ou les applications locales. Il dispose de son propre SDK, interface aux APIs du système, qui facilite le port d'ʹune plateforme à l'ʹautre. Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse

MME. LILIA SFAXI

2011/2012 3 -­‐‑ Unity3D : Unity est une plateforme de développement et Unity3D une version spécialisée pour les jeux. L'ʹAPI peut être programmée en JavaScript ou C#. Ces langages sont compilés en langage natif (ARM) pour les mobiles.

Les mêmes applications peuvent fonctionner sur un navigateur grâce à un plugin. Elles fonctionnent aussi sur Windows et Mac, sur .NET. -­‐‑ MonoTouch : Produit par Novell, c'ʹest une version pour iPhone et iPad du framework Mono. Les applications écrites en C# sont compilées et liées à l'ʹAPI du mobile ou la tablette. Elles ne seront pas distribuées sur l'ʹApp Store.  La plateforme universelle: HTML 5 HTML 5 reste la plateforme universelle, fonctionnant sur tous les mobiles sans aucune adaptation du code mais avec des limitations. Nokia propose un outil de développement pour des applications portables sans code natif. II. Environnement de Développement : Eclipse Eclipse est un environnement de développement intégré libre extensible, universel et polyvalent, permettant de créer des projets de développement mettant en œuvre n'ʹimporte quel langage de programmation. Eclipse IDE est principalement écrit en Java (à l'ʹaide de la bibliothèque graphique SWT, d'ʹIBM), et ce langage, grâce à des bibliothèques spécifiques, est également utilisé pour écrire des extensions. La spécificité d'ʹEclipse IDE (Integrated Development Environement) vient du fait de son architecture totalement développée autour de la notion de plugin (en conformité avec la norme OSGi) : toutes les fonctionnalités de cet atelier logiciel sont développées en tant que plug-­‐‑in. Plusieurs logiciels commerciaux sont basés sur ce logiciel libre, comme par exemple IBM Lotus Notes 8, IBM Symphony ou WebSphere Studio Application Developer. III. Initiation à Java Le langage Java est un langage de programmation informatique orienté objet créé par James Gosling et Patrick Naughton, employés de Sun Microsystems, avec le soutien de Bill Joy (cofondateur de Sun Microsystems en 1982), présenté officiellement le 23 mai 1995 au SunWorld.

Pour un cours ciblé pour Android : séries/learn-­‐‑java-­‐‑android-­‐‑development/ III. 1. Cas d’étude : Gestion des cours Nous allons dans cette partie vous initier aux concepts en base de Java en réalisant une petite application de gestion des cours. Cette application permet de gérer l’affectation des étudiants et enseignants à une ou plusieurs matières.

Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse

MME. LILIA SFAXI

2011/2012 4 TAF-­‐‑1 : Pour commencer, créer un projet qui s’appelle GestionCours sur Eclipse. Dans le répertoire src, créer un package appelé cours et un package appelé main. Dans le package main, créer une classe Main contenant une méthode main qu’on laissera vide pour l’instant.

III. 2. Classes et objets Une classe représente la description informatique des caractéristiques d'ʹun objet abstrait (destiné à modéliser un objet réel). Elle décrit les constituantes élémentaires de l'ʹobjet ainsi que les opérations (méthodes) pouvant s'ʹappliquer à cet objet. class Vehicule {

int age ;

float taille ;

float poids ;

boolean moteur ;

int getWeight() {

return(poids) ;

} } Une classe Vehicule sauvegardée dans un fichier Vehicule.java Quatre "ʺattributs"ʺ : age, taille, poids et moteur Une "ʺméthode"ʺ : getWeight retourne le poids d'ʹun véhicule Un objet est une instance d'ʹune classe. Il est généré à partir d'ʹune classe et stocké dans une variable. Pour créer un nouvel objet, l’opérateur new est utilisé :

Vehicule v = new Vehicule() ; Conventions de nommage: 1. Une classe commence toujours par une majuscule, tous les autres identifiants commencent en minuscule (les objets, les méthodes, les types primitifs, les variables...) 2. Si un identifiant est composé de plusieurs mots, ces mots sont collés l’un à la suite de l’autre avec une majuscule pour chaque début de mot, mais en respectant la convention 1. Par exemple, pour une classe : NomDeClasse, et pour un objet nomDeLObjet. Un constructeur est une méthode spécifique appelée automatiquement lors de l'ʹinstanciation d'ʹun objet. Le constructeur a les particularités suivantes :

1. C’est la seule méthode qui porte le nom de la classe 2. C’est la seule méthode qui ne contient pas de type de retour (même pas void) 3. C’est la seule méthode dont le nom commence par une majuscule (puisque c’est le nom de la classe) Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse

MME. LILIA SFAXI

2011/2012 5 class Vehicule {

int age ;

float taille ;

float poids ;

boolean moteur ;

Vehicule() {

age = 0 ;

taille = 0.0 ;

poids = 0.0 ;

moteur = false ;} int getWeight() {

return(poids) ;

} } Il est possible de définir un ou plusieurs constructeurs avec paramètres en plus du constructeur par défaut (sans paramètres) class Vehicule {

int age ;

float taille ;

float poids ;

boolean moteur ;

Vehicule(int a, float t, float p, boolean m) {

age = a ;

taille = t ;

poids = p ;

moteur = m ;} ... } (méthode main) ... Vehicule v = new Vehicule(2,4.6,1.5,true) ; ... Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse

MME. LILIA SFAXI

2011/2012 6 TAF-­‐‑2 : Sous le package cours, créer une classe Etudiant, une classe Enseignant et une classe Matiere, qui respectent le diagramme de classes suivant (pour l’instant, seuls les constructeurs sont à implémenter. Les autres méthodes restent vides).

III. 3. Encapsulation Il est possible de limiter la visibilité des attributs et méthodes définies à l'ʹintérieure des classes.  public : pas de limitation  protected : visible depuis l'ʹintérieur de la classe et depuis classes qui en héritent  private : visible uniquement depuis intérieur de la classe public class Vehicule {

public float age ;

protected float taille ;

private int poids ;

private boolean moteur ;

public Vehicule() {

age = 1.0F ;

taille = 1.0F ;

poids = 1 ;

moteur = false ;} public int getWeight() {

return(poids) ;

} } La déclaration public des classes elles-­‐‑mêmes répond à un impératif de sécurité, par une déclaration public elles seront rendues accessibles aux autres classes. TAF-­‐‑3 : Ajouter les modificateurs de visibilité aux classes que vous avez créé de manière à ce que les méthodes soient visibles par tout le monde et les attributs privés.

Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse

MME. LILIA SFAXI

2011/2012 7 III. 4. Héritage Il est possible de décrire une nouvelle classe en la faisant hériter (dériver) d'ʹune autre classe. Cela implique que les attributs et méthodes sont hérités de la classe mère (superclasse) et des superclasses de celle-­‐‑ci jusqu’à arriver à la classe Object, dont héritent implicitement toutes les classes. public class Voiture extends Vehicule {

public int places ;

public Voiture() {

moteur = true ;

places = 4 ;

} } Important : En Java, il est impossible pour une classe d’hériter de plusieurs classes. TAF-­‐‑4 : Ajouter une classe Personne dont héritent les classes Etudiant et Enseignant, comme défini dans le diagramme suivant. Modifier les constructeurs des classes filles pour qu’ils prennent en considération celui de sa classe mère. III. 5. Association Deux classes sont en association lorsque certains de leurs objets ont besoin s'ʹenvoyer des messages pour réaliser un traitement. En Java, une association est représentée par l’ajout une référence d’une classe comme attribut dans l’autre.

Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse

MME. LILIA SFAXI

2011/2012 8 public class Vehicule {

public float age ;

protected float taille ;

private int poids ;

private boolean moteur ;

private Personne proprietaire ;

public Vehicule() {

age = 1.0F ;

taille = 1.0F ;

poids = 1 ;

moteur = false ;} public int getWeight() {

return(poids) ;

} } Ainsi, dans l’exemple suivant, une association est réalisée entre un objet de type Voiture et un objet de type Personne. Chaque voiture a maintenant une instance de Personne qui en est le propriétaire.

Si une association est n-­‐‑aire, on utilise les tableaux.

Par exemple, une voiture contient en général 5 roues. L’agrégation (qui est une association particulière) avec la classe Roue se fait de la manière suivante : public class Voiture extends Vehicule {

public int places ;

private Roue[] roues ;

public Voiture() {

moteur = true ;

places = 4 ;

} } Un tableau d’objets doit toujours être initialisé avant d’être utilisé.

Roue[] roues = new Roue[5] ; roues[0] = new Roue() ; roues[1] = new Roue() ; ... Roue roue1 = new Roue() ; Roue roue2 = new Roue() ; ... Roue[] roues = {roue1,roue2,...} ; Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse

MME. LILIA SFAXI

2011/2012 9 TAF-­‐‑5 :

1. Réaliser une association entre les classes Etudiant et Matière, puis entre les classes Enseignant et Matière, comme l’indique le diagramme suivant.

2. Implémenter toutes les méthodes manquantes dans les classes Etudiant, Enseignant et Matiere. Définition d’une variable partagée

IV. Homework Soit un programme simple permettant la gestion d’un compte bancaire. On définit dans ce programme principalement trois objets : Personne, Banque et Compte.

-­‐‑ Personne :

o Une personne a un nom, prénom, numéro de carte d’identité

o Une personne peut avoir un seul compte bancaire.

o Une personne peut déposer ou retirer une somme d’argent de son compte.

o Une personne peut consulter son compte. La consultation affiche simplement la somme existant dans son compte bancaire. -­‐‑ Compte : o Un

compte bancaire a un identifiant, est associé à une seule personne et appartient à une seule banque.

o Au moment de la création d’un compte bancaire, on précise obligatoirement son propriétaire. -­‐‑ Banque :

o Une banque a une adresse et un nom,

o Une banque peut contenir jusqu'ʹà 100 comptes bancaires, et peut avoir jusqu’à 100 clients.

o Une banque peut créer ou supprimer un compte. Chapitre 1 : Initiation à la Programmation Mobile, Java et Eclipse

MME. LILIA SFAXI

2011/2012 10 Réaliser cette application en Java sur Eclipse. La méthode main principale permet de créer une nouvelle banque, deux personnes (Ali et Hedia) et leurs comptes bancaires. Les étapes suivantes sont réalisées : -­‐‑ Ali dépose 500 dt. -­‐‑ Hedia dépose 300 dt. -­‐‑ Ali retire 100 dt. -­‐‑ Ali consulte son compte.

-­‐‑ Hedia consulte son compte.