Rogrammation Obile: Miloud LAHMAIM Rssp2 2023-2024

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 47

S1 PROGRAMMATION MOBILE

Miloud LAHMAIM
RSSP2
2023-2024
Avant propos
 Objectifs : Ce module vise à faire acquérir à l’ingénieur
RSSP, les technologies de développement mobile tel que
Android et connaître les spécificités du développement mobile.
 Pré-requis : POO & SQL
 Modes d’évaluation :
 2 Contrôles continus : 65%
 Travaux & Activités pratiques : 30%
 Présence, Participation…. : 5%
 N.B : La programmation et un métier, alors il faut :
 S’auto-former
 Pratiquer
 Prendre des notes
2
Plan

 Introduction
 Kotlin

 Application mobile

3
Plan

 Introduction
 KOTLIN

 Application mobile

4
Les appareils mobiles

5
Définition du SE mobile.
 Un appareil mobile (smartphone, tablette, tv, …) nécessite un
système d’exploitation mobile et ce pour piloter tous les
dispositifs matériels et logiciels qui le composent.
 Un système d'exploitation, ou OS pour Operating System,
définit un ensemble de programmes chargé d'établir une
relation entre les différentes ressources matérielles, les
applications et l'utilisateur.
 Ce type de système d'exploitation se concentre sur la gestion
de la connectivité sans fil et celle des différents types
d'interface.
 Il contrôle toutes les opérations de base du téléphone mobile
comme:
 Option d’écran tactile, cellulaires, Bluetooth, Wifi, Appareil photo,
Lecteur de musique, D’autres fonctionnalités.
6
Les principaux SEs mobiles.
Android de Google
• Développé en 2007
• Il est devenu plateforme ouverte en 2008
• OS gratuit et complètement ouvert.
• Utilisé par des grands fabricants (Sumsung, Oppo, Xiaomi, …)

iOS d’Apple
• Dérivé de Mac OS
• Développé par Apple en 2007
• Utilisé seulement par le fabriquant Apple
• Dernière version : IOS 13 (2022)

Windows Phone de Microsoft


• Windows Phone est apparu en 2010.
• Successeur de Windows Mobile.
• Dernière version : Windows Phone 10 (2017)
• Des grands fabricants utilisent Windows il ne trouve pas beaucoup de place sur le
marché (Alcatel, Acer, …)
7
Statistiques utilisation SE mobile.

https://www.youtube.com/watch?v=3GzB_ED9CSU

8
Le SE choisi

 Vu que le SE Android est :


 Le plus utilisé actuellement
 Complètement ouvert

alors dans ce cours on opte pour :

9
Architecture Android

10
Architecture Android : Linux Kernel

 Au bas des couches se trouve Linux - Linux 3.6 avec environ


115 correctifs. Cela fournit un niveau d'abstraction entre le
matériel de l'appareil et il contient tous les pilotes matériels
essentiels comme la caméra, le clavier, l'affichage, etc.
 De plus, le noyau gère toutes les choses pour lesquelles Linux
est vraiment bon, comme la mise en réseau et une vaste
gamme de pilotes de périphériques , qui simplifient
l'interfaçage avec le matériel périphérique.
11
Architecture Android : Libraries

 En plus du noyau Linux, il existe un ensemble de


bibliothèques écrites en C/C++, y compris le moteur de
navigateur Web open source WebKit, la bibliothèque bien
connue libc, la base de données SQLite qui est un
référentiel utile pour le stockage et le partage des
données d'application, des bibliothèques pour lire et
enregistrer de l'audio et de la vidéo, SSL bibliothèques
responsables de la sécurité Internet, etc.
12
Architecture Android : Android Runtime (1)
 Libraries Core : englobe les bibliothèques basées sur Java
qui sont spécifiques au développement Android. Des
exemples de bibliothèques dans cette catégorie incluent les
bibliothèques d'infrastructure d'application en plus de
celles qui facilitent la création d'interface utilisateur, le
dessin graphique et l'accès à la base de données. Un
résumé de certaines bibliothèques Android principales
disponibles pour le développeur Android est le suivant :
 android.app : Fournit l'accès au modèle d'application et constitue la pierre angulaire de toutes les applications Android.
 android.content : Facilite l'accès au contenu, la publication et la messagerie entre les applications et les composants
d'application.
 android.database : Utilisé pour accéder aux données publiées par les fournisseurs de contenu et inclut des classes de
gestion de base de données SQLite.
 android.opengl : Une interface Java pour l'API de rendu graphique 3D OpenGL ES.
 android.os : Fournit aux applications un accès aux services standard du système d'exploitation, notamment les messages,
les services système et la communication inter-processus.
 android.text : Utilisé pour afficher et manipuler du texte sur l'affichage d'un appareil.
 android.view : Les blocs de construction fondamentaux des interfaces utilisateur des applications.
 android.widget : Une riche collection de composants d'interface utilisateur prédéfinis tels que des boutons, des étiquettes,
des vues de liste, des gestionnaires de mise en page, des boutons radio, etc.
android.webkit : Un ensemble de classes destinées à permettre l'intégration de capacités de navigation Web dans les
13

applications.
Architecture Android : Android Runtime (2)

 Il s'agit de la troisième section de l'architecture et disponible sur la


deuxième couche à partir du bas. Cette section fournit un composant
clé appelé Dalvik Virtual Machine qui est une sorte de machine
virtuelle Java spécialement conçue et optimisée pour Android.
 La machine virtuelle Dalvik utilise les fonctionnalités de base de
Linux telles que la gestion de la mémoire et le multithreading, qui
sont intrinsèques au langage Java. La machine virtuelle Dalvik
permet à chaque application Android de s'exécuter dans son propre
processus, avec sa propre instance de la machine virtuelle Dalvik.
14
Architecture Android : Application Framework

 La couche Application Framework fournit de nombreux services de niveau


supérieur aux applications sous la forme de classes Java. Les développeurs
d'applications sont autorisés à utiliser ces services dans leurs applications :
 Gestionnaire d'activités : Contrôle tous les aspects du cycle de vie de
l'application et de la pile d'activités.
 Fournisseurs de contenu : Permet aux applications de publier et de partager
des données avec d'autres applications.
 Gestionnaire de ressources : Fournit un accès aux ressources intégrées non
codées telles que les chaînes, les paramètres de couleur et les dispositions de
l'interface utilisateur.
 Gestionnaire de notifications : Permet aux applications d'afficher des alertes
et des notifications à l'utilisateur.
 Système de vue : Un ensemble extensible de vues utilisé pour créer des
interfaces utilisateur d'application. 15
Architecture Android : Applications

 La couche Applications est l’interface entre l’utilisateur et le


smartphone
 Vous trouverez toutes les applications Android sur la couche
supérieure. Vous écrirez votre application pour qu'elle soit installée
sur cette couche uniquement.
 Des exemples de telles applications sont les livres de contacts, le
navigateur, les jeux, etc.

16
Versions Android

17
Applications mobiles
 Une application mobile est un programme téléchargeable de façon gratuite ou
payante et exécutable à partir du système d’exploitation d’un Smartphone ou
d’une tablette ou autres.
 Cette application a pour la plupart du temps, une utilité bien précise pour
l’utilisateur final.
 on peut retrouver des applications mobiles pour
• Jouer.
• Réserver des services.
• Acheter des produits.
• Prendre des photos.
• Communiquer.
• Consulter ses comptes bancaires.
• Les champs d’application sont infinis….
 L’essentiel du temps passé sur les Smartphones est consacré à des applications
mobiles.

18
Types d’applications mobiles

19
Application NATIVE
 Installée sur un Smartphone ou une tablette, elle est sur-
mesure et doit être adaptée à chaque système
d’exploitation (OS), en somme une version différente pour
chaque type de téléphone.

 Ces applications permettent de tirer parti de toute la


puissance et toutes les possibilités du devise mobile :
accélération matérielle, capteurs, caméra, accès aux
contacts, au fonctions de téléphonie, etc.
20
Application WEB

 Site internet mobile (dont le design ressemble à une


application), créé pour être consulté à partir du
navigateur internet d’un smartphone.

 L’application web manque d’ergonomie et de plus elle ne


se sert pas de la mémoire du smartphone ce qui la place
en infériorité par rapport à l’application native.

21
Application HYBRIDE

 Il s’agit d’une application mobile qui fusionne entre les


caractéristiques de web application (développement en
HTML 5) et celles de l’application native. De cette
manière, l’application mobile sera accessible sur toutes
les plateformes d’application.

 Elle est multiplateforme mais offre moins de


fonctionnalités et de performances.
22
Langages de programmation mobile

Kotlin swift

23
Kotlin ou Java

24
Kotlin
 Kotlin est un langage de programmation orienté objet, fonctionnel, avec un
typage statique qui permet de compiler sur la machine virtuelle Java et
JavaScript.
 Son développement provient principalement d'une équipe de programmeurs chez
JetBrains basée à Saint-Pétersbourg en Russie. Le nom de ce langage vient de
l'île de Kotline situé en mer Baltique, à 25 km de St. Pétersbourg.
 Google annonce pendant la conférence Google I/O 2017 que Kotlin devient le
second langage de programmation officiellement pris en charge par Android
après Java.
 Au cours de cette même conférence en 2019, la société Google communique que le
développement d'applications Android deviendra de plus en plus "Kotlin-first".
 Google annonce que près de 60 % des applications Android du Top 1000
embarquent du code écrit en Kotlin
 Google annonce le nouveau Android 9 Pie SDK plus convivial pour Kotlin.

25
10 raisons de choisir Kotlin

 1. Typage statique
 2. Concis
 3. Sécurisé
 4. Explicite
 5. Facile à apprendre
 6. Capacités fonctionnelles et orientées objet
 7. Entièrement interopérable avec Java
 8. Construire des applications pour Serveur, Android, Navigateur et Desktop
 9. Gratuit et Open Source
 10. Excellent outillage

26
Kotlin : Typage statique

 Kotlin est un langage de programmation à typage statique. Cela signifie que


le type de chaque variable et expression est connu au moment de la
compilation.
 L’avantage du typage statique est que le compilateur peut valider les appels
de méthodes et l’accès aux propriétés sur les objets lors de la compilation, et
éviter ainsi de nombreux bugs anodins qui risqueraient autrement de se
produire au moment de l’exécution.
 Bien que Kotlin soit un langage à typage statique, il n’est pas nécessaire de
spécifier explicitement le type de chaque variable que vous déclarez. La
plupart du temps, Kotlin peut déduire le type d’une variable à partir de
l’expression d’initialisation ou du contexte environnant. Ceci est appelé
inférence de type. Nous reviendrons plus tard sur cette notion.
27
Kotlin : 2. Concis
 Kotlin est concis. Cela réduit
considérablement la quantité de
code passe-partout que vous avez
écrit tout le temps dans d’autres
langages orientés objets comme
Java.
 Il fournit des expressions riches
pour l’exécution de tâches
courantes. Par exemple, vous
pouvez créer une classe POJO avec
les méthodes Getters, Setters,
Equals(), hashCode() et toString()
 Plus que 20% de Code moins que
JAVA
28
Kotlin : Sécurisé

 Kotlin est sécurisé. Il évite les exceptions NullPointerExceptions les plus


redoutées et gênantes en prenant en charge la nullabilité dans le cadre de
son système de types.
 Puisque Kotlin connait quelles variables ont la valeur nullable et lesquelles
ne le sont pas, elle peut détecter et interdire les appels non sécurisés au
moment de la compilation, ce qui entraînerait sinon une exception
NullPointerException au moment de l’exécution.
 Kotlin n’autorise pas la méthode call length() sur la variable nullableStr car
l’appel n’est pas sécurisé et peut conduire à NullPointerException.
 Kotlin oblige les développeurs à écrire du code sécurisé en distinguant les
types nullables et non nuls.

29
Kotlin : Explicite
 Kotlin est explicite. Il fera ou permettra des choses seulement si vous lui
dites de le faire. L’explicite est considéré comme une bonne chose.
 Être explicite signifie être précis sur vos choix de conception et ne rien
cacher aux lecteurs ou aux consommateurs de votre code.
 Voici quelques exemples d’explicités à Kotlin :
 Kotlin n’autorise pas les conversions de types implicites, par exemple, int en long ou
float pour double. Il fournit des méthodes comme toLong() et toDouble() pour le faire
explicitement.
 Toutes les classes de Kotlin sont finales (non héritables) par défaut. Vous devez
explicitement marquer une classe comme étant ouverte pour permettre à d’autres
classes d’en hériter. De même, toutes les propriétés et fonctions membres d’une classe
sont finales par défaut. Vous devez explicitement marquer une fonction ou une
propriété comme étant ouverte pour permettre aux classes enfant de la remplacer.
 Si vous substituez une fonction ou une propriété de classe parent, vous devez l’annoter
explicitement à l’aide du modificateur override.
30
Kotlin : Facile à apprendre

 Kotlin a une courbe d’apprentissage très faible. La syntaxe de


base ressemble beaucoup à Java et C. Si vous avez une petite expérience de
Java ou de tout autre langage orienté objets, vous pourrez vous familiariser
avec Kotlin en quelques heures.

31
Kotlin : POO & Fonctionnelle

 Kotlin possède à la fois des fonctionnalités fonctionnelles et orientées objet.


Il dispose d’un riche ensemble de fonctionnalités permettant de prendre en
charge la programmation fonctionnelle, notamment les types fonctionnels,
les expressions lambda, les classes de données, etc.

32
Kotlin : interopérable avec Java

 Kotlin est 100% interopérable


avec Java. Vous pouvez
facilement accéder au code Java
à partir de Kotlin et
inversement. Vous pouvez
utiliser Kotlin et Java dans le
même projet sans aucun
problème. Cela facilite l’adoption
de Kotlin dans vos projets Java
existants.

33
Kotlin : large gamme de plates-formes
 Vous pouvez utiliser Koltin pour créer des applications
pour une large gamme de plates-formes, notamment
Serveur, Android, navigateurs et Desktop.
 Android dispose d’un support officiel pour Kotlin.

 Du côté du serveur, vous pouvez utiliser Kotlin avec


le framework Spring, qui offre un support complet pour
Kotlin dans Spring version 5.
 Kotlin peut également être compilé en JavaScript et
en code machine.

34
Kotlin : Gratuit et open source
 Le langage de programmation Kotlin, y compris le
compilateur, les bibliothèques et tous les outils, sont
entièrement gratuits et open source. Il est disponible
sous licence Apache 2 et le projet complet est hébergé
sur Github.

35
Kotlin : Excellent outillage

 Kotlin dispose d’un excellent support d’outillage. Vous pouvez choisir


n’importe quel IDE Java : IntelliJ IDEA, Eclipse, Android Studio.

 De plus, vous pouvez également télécharger le compilateur autonome de


Kotlin et exécuter le code Kotlin à partir de la ligne de commande.

 Ou bien en ligne via le lien : play.kotlinlang.org

36
Plan

 Introduction
 KOTLIN

 Application mobile

37
Les commentaires

38
La fonction principale

 Tout programme en Kotlin doit contenir une fonction


nommée main, cette fonction est la première fonction
exécutée :

Cette déclaration utilisée en cas de


compilation par lignes de commandes

39
Types de variables
 Numbers :
 Integer :
 Byte : 1o : de -27 à 27-1
 Short : 2o : de -215 à 215-1
 Int : 4o : de -231 à 231-1
 Long : 8o : de -263 à 263-1
 Floating-point :
 Float : 4o : Significant bits = 24 Exponent bits = 8 Decimal digits = 7
 Double : 8o : Significant bits = 53 Exponent bits = 11 Decimal digits = 16
 Booleans : Boolean
 Characters : Char Les caractères
 Strings : String Les chaînes de caractères
 Arrays : Array Les tableaux
40
Les constantes
 Numbers :
 Integer :
 Decimals: 123
 Longs are tagged by a capital L: 123L
 Hexadecimals: 0x0F
 Binaries: 0b00001011
 Floating-point :
 Doubles by default: 123.5 123.5e10
 Floats are tagged by f or F: 123.5f
 Booleans : true and false
 Characters : entre simples quotes ‘c’ \t \b \n \r \‘ \” \\ \$
 Strings : “Text\n”+Variable  “Text\n$Variable” (Sauf si variable est Char)
 Arrays : 1..5 {1,2,3,4,5}

41
Les opérateurs
 Opérateurs arithmétiques : + - / * %
 Opérateurs relationnels : > < >= <= == !=
 Opérateurs d’affectation : = += -= *= /= %=
 Opérateurs unaires : + - ++ -- !
 Opérateurs logiques : && ||

42
Déclaration des variables
 Nous pouvons déclarer en Kotlin une variable grâce aux mots-
clés val et var :
 val (pour valeur) : La référence de votre variable sera immuable, c’est-à-dire
que vous ne pourrez pas la modifier une fois que vous l’aurez initialisée.
En fait, c’est tout simplement l’équivalent du mot-clé final en Java ! Votre
variable pointera donc toujours vers la même référence en mémoire.
 var (pour variable) : La référence de votre variable sera muable, c’est-à-dire
que vous pourrez modifier le contenu de votre variable
même après son initialisation. C’est l’état par défaut de toutes les variables
en Java. Votre variable pointera donc vers une référence en mémoire, mais
celle-ci pourra être remplacée par une autre si nécessaire.

 Si l’initialisation se fait lors de la déclaration, alors on peut ne pas déclarer le type, on


fait le type sera implicitement affecté selon le type de la valeur d’initialisation :

 
43
La conversion de type
 Les types plus petits ne sont PAS implicitement
convertis en types plus grands. Cela signifie l’obligation
d’une conversion explicite en utilisant les fonctions :
toByte() toShort() toInt() toLong() toFloat() toDouble()

=>

44
Null Safety
 Par défaut, les variables en Kotlin ne supportent pas la contenance d’une
valeur nulle, à moins que vous ne l’ayez explicitement autorisée.

 Ainsi, pour réaliser cela en Kotlin, nous allons simplement utiliser le point
d'interrogation ? , juste après le type de la variable.

 Lors d’un appel à une fonction pour une variable Null Safety, on doit suffixer la variable par
? (c-à-d que cette fonction sera appeler uniquement si la variable est # de null

45
const
 Le mot-clé const précédant le mot-clé val nous permet
de définir une constante (globale) dont la valeur sera
connue au moment de la compilation. Celle-ci ne
pourra bien évidemment pas être modifiée lors de
l’exécution de votre programme (et c’est tout l’intérêt !).

46
lateinit
 Si vous ne souhaitiez pas initialiser votre variable globale avec un type non-
premitif (Classe et non pas Objet) immédiatement après sa déclaration, mais le
faire un peu plus tard dans votre code (quand par exemple une page ou un écran
a terminé de charger), et si vous écrivez la ligne suivante, Kotlin refusera de
compiler :

 Vous allez tout simplement utiliser le mot-clé lateinit (pour "Late-Initialized")


permettant d’indiquer à Kotlin que vous êtes sûr et certain d’initialiser la
variable en question, un peu plus tard dans votre code :

47

Vous aimerez peut-être aussi