Résumé

Un manuel ultra-pratique sur le langage de programmation le plus novateur depuis Java

Ce manuel d’initiation à Kotlin aborde ce nouveau langage selon une approche résolument concrète. Sans qu’il soit nécessaire d’avoir des connaissances des langages plus anciens, l’ambition de cet ouvrage est de vous apprendre à développer des applications pour les tablettes et smartphones fonctionnant sur Android.

Devenu incontournable depuis que Google l’a déclaré, en 2019, langage officiel pour la création d’applications mobiles Android, Kotlin s’avère entièrement compatible avec Java et il est aussi disponible en open source.

À partir de l’environnement Android Studio, vous pourrez très rapidement créer des animations graphiques (mini-jeux) tout en découvrant de façon ludique les bases de la programmation procédurale et orientée objet.

À qui s’adresse cet ouvrage ?

• Aux développeurs néophytes et confirmés

• À tous ceux qui souhaitent découvrir les coulisses de la programmation moderne

Sommaire

Introduction • LE PETIT BILLARD – Démarrer un projet – Premières fonctions Kotlin dans sa version procédurale – Allons-y pour le billard ! – Orienté objet : faire apparaître les balles à l’écran – L’orienté objet, une façon de programmer – Retour à notre petit billard – Ajoutons un peu d’animation à tout cela – Finalisons notre petit billard • UN JEU CANON – Les étapes préliminaires – Ajoutons un peu d’animation – Et maintenant, jouons ! – Finalisons le jeu : Game over

L’auteur

Membre de l’Académie Royale de Belgique, Hugues Bersini enseigne l’informatique et la programmation aux facultés polytechnique et Solvay de l’Université Libre de Bruxelles, dont il dirige le laboratoire d’Intelligence Artificielle. Il est l’auteur de très nombreuses publications (systèmes complexes, génie logiciel, sciences cognitives et bioinformatique) et de plusieurs ouvrages d’introduction à la programmation, l’intelligence artificielle et les systèmes complexes qui font aujourd’hui autorité dans le...

SUR LE MÊME THÈME

J. LAUNAY. – Créer des applis avec App Inventor.
N° 67901, 2020, 118 pages.

B. BARRÉ. – Concevez des applications mobiles avec React Native.
N° 67889, 2e édition, 2019, 224 pages.

S. PITTION, B. SIEBMAN. – Applications mobiles avec Cordova et PhoneGap.
N° 14052, 2015, 186 pages.

DANS LA COLLECTION BLANCHE

C. DELANNOY. – Le guide complet du langage C.
N° 67922, 2020, 876 pages.

J. LORIAUX, T. DEFOSSEZ. – Emailing : développement et intégration.
N° 67849, 2020, 160 pages.

S. RINGUEDÉ. – SAS.
N° 67631, 4e édition, 2019, 688 pages.

C. BLAESS. – Développement système sous Linux.
N° 67760, 5e édition, 2019, 1080 pages.

T. PARISOT. – Node.js.
N° 13993, 2018, 472 pages.

C. PIERRE DE GEYER, J. PAULI, P. MARTIN, E. DASPET. – PHP 7 avancé.
N° 67720, 2e édition, 2018, 736 pages.

H. WICKHAM, G. GROLEMUND. – R pour les data sciences.
N° 67571, 2018, 496 pages.

...

KOT
LIN

Développer des applications Android

HUGUES BERSINI

ÉDITIONS EYROLLES

61, bd Saint-Germain

75240 Paris Cedex 05

www.editions-eyrolles.com

Attention : pour lire les exemples de lignes de code, réduisez la police de votre support au maximum.

En application de la loi du 11 mars 1957, il est interdit de reproduire intégralement ou partiellement le présent ouvrage, sur quelque support que ce soit, sans l’autorisation de l’Éditeur ou du Centre Français d’exploitation du droit de copie,

20, rue des Grands Augustins, 75006 Paris.

© Éditions Eyrolles, 2020

ISBN : 978-2-212-67968-7

PARTIE 01

>INTRODUCTION

POURQUOI CE MANUEL ?

LES DÉFIS

Ce manuel d’initiation à la programmation a l’ambition déraisonnable mais audacieuse (me le reprocherez-vous la dernière page tournée ?) de relever plusieurs défis :

1.Vous initier aux deux pratiques fondamentales de la programmation, procédurale et objet, en ne supposant aucun prérequis. Ce sont les bases de ces deux pratiques que nous allons découvrir ensemble. Bien sûr, ceux qui possèdent déjà quelques rudiments de programmation sont plus que bienvenus (qu’ils ne se détournent pas immédiatement) et devraient trouver, dans la réalisation de ces animations sur Android, de quoi élargir leurs compétences par des acquis de plus en plus prisés dans l’industrie du logiciel. Comptez le nombre de personnes que vous croisez chaque jour, le nez plaqué sur l’écran de leur smartphone… de futurs clients.

2.Utiliser un langage de programmation des plus modernes et des plus prometteurs, bien qu’encore très peu enseigné : Kotlin (une autre île, russe et à 25 km de Saint Pétersbourg, dont tout le monde jusque-là ignorait l’existence, après celle de Java…¹). Depuis 2019, il s’est imposé comme le langage de prédilection d’un géant technologique, Google, pour le développement d’applications pour smartphones. Il est devenu le nouveau langage avec lequel il va falloir compter dans les années à venir. Naviguez sur le...

QUELQUES PROPOS INTRODUCTIFS À LA PRATIQUE DE LA PROGRAMMATION

Kotlin est un langage de programmation comme il en existe des centaines ; il sert à créer des programmes informatiques en écrivant, les unes à la suite des autres, les différentes instructions qui le composent. Au tout début de l’informatique, le fonctionnement « intime » des processeurs décidait toujours, en fin de compte, de la seule manière efficace de programmer un ordinateur. Bien que tout programme informatique soit la réalisation d’un algorithme, une suite logique d’instructions élémentaires, il était admis que l’organisation du programme et la nature même de ces instructions ne pouvaient s’éloigner trop de la façon ultime dont le processeur les exécuterait par la suite : pour l’essentiel, des modifications de données en mémoire, des copies de ces données d’un emplacement mémoire à un autre et des opérations d’arithmétique et de logique élémentaires. Il est vite apparu que ce mode d’écriture était très fastidieux et...

PARTIE 02

>LE PETIT BILLARD

CHAPITRE 01

DÉMARRER UN PROJET

PRENDRE EN MAIN ANDROID STUDIO

Démarrons donc notre premier projet, avec ses balles magnifiquement colorées, naissant à la pointe de votre doigt et virevoltant entre les parois, le tout assujetti au côntrole d’un bouton chatoyant surplombant le billard. On présume qu’Android Studio est installé sur votre ordinateur et que vous l’avez démarré. Par ailleurs, vous avez branché votre smartphone favori à l’aide d’un câble USB sur ce même ordinateur. Pour l’instant, toute cette préparation reste relativement bon marché (un smartphone ou une tablette Android, même anciens, feront l’affaire). Android se caractérise par une évolution continue ; se pose donc le problème de savoir quelle version minimum permettra l’exécution du code. Pour nos deux applications, même une version assez ancienne devrait convenir, mais n’hésitez pas à en changer si vous rencontrez un problème. Quant à votre smartphone, sauf à l’avoir reçu dans une pochette surprise dix ans plus tôt, il ne devrait pas causer de souci.

Prenez aussi bien garde d’avoir un câble USB qui vous permette de communiquer avec votre smartphone (tous les câbles, aussi neufs soient-ils, ne le permettent pas automatiquement) et que ce dernier soit effectivement reconnu par votre ordinateur. Comme dans la figure 4, le smartphone devrait exiger de vous une autorisation à utiliser le mode débogage.

MODE DÉBOGAGE

Pour activer le mode débogage, vous devez en général aller dans Paramètres puis Options pour développeurs. Le nom des options peut...

CHAPITRE 02

PREMIÈRES FONCTIONS KOTLIN DANS SA VERSION PROCÉDURALE

Kotlin est un langage surtout orienté objet, c’est-à-dire organisé autour de la notion de classes et d’objets, ce que nous aurons l’occasion d’approfondir considérablement par la suite. Cependant, il conserve également les aspects procéduraux de la programmation plus traditionnelle, c’est-à-dire la pratique des instructions et des fonctions qui est devenue banale et commune à tous les langages.

Nous allons les aborder succinctement par un des jeux à boire des plus stupides que je connaisse et que mes étudiants les plus dissipés pratiquent : le bottle ding ding. Ce jeu est on ne peut plus simple, car il faut boire vite et surtout beaucoup. Il consiste à énumérer les nombres à tour de rôle en les remplaçant par bottle si le nombre est un multiple de 5 et par ding ding s’il s’agit...

CHAPITRE 03

ALLONS-Y POUR LE BILLARD !

Démarrons la programmation de notre première animation graphique : le petit billard. Elle est très simple. Néanmoins, tout ce que nous allons découvrir par la suite nous sera d’une très grande utilité pour la deuxième animation, plus réaliste et ludique à la fois.

Les premières manipulations que je vais vous demander d’effectuer risquent de vous apparaître à nouveau des plus ésotériques. L’idée est de créer et d’installer dans votre application une vue spéciale (DrawingView), qui sera la surface de jeu, sur laquelle vous représenterez tout ce qui constituera l’aspect graphique du billard. C’est donc un composant essentiel de nos deux projets et il est normal que nous y consacrions à...

CHAPITRE 04

ORIENTÉ OBJET : FAIRE APPARAÎTRE LES BALLES À L’ÉCRAN

Démarrons le plus simplement possible notre explication d’un des mécanismes fondamentaux de la programmation moderne : l’orienté objet. Je ne vous surprendrai guère en vous annonçant que les balles sont des objets particuliers qui ont tous en commun d’être des balles, mais se différencient par leur position à l’écran, leur taille, leur couleur. La position, le diamètre et la couleur sont ce qu’on va appeler les attributs des objets balles. Leur existence est spécifiée lors de la définition de la classe Balle, sans laquelle aucun objet ne peut être créé ou exploité et qui pourra donner naissance à autant d’objets balles que l’on souhaite voir à l’écran. Dans le projet qui suit, nous en dessinerons juste trois, chacune avec ses propres position, dimension et couleur.

CRÉATION DE LA CLASSE BALLE

Commençons donc par créer cette classe Balle. Il faut l’installer dans un fichier qui, tradition le veut, porte le même nom, donc Balle.kt. Il faut placer ce fichier dans le même répertoire que les deux précédents fichiers Kotlin et, dans un premier temps, le remplir avec le code suivant :

package com.example.lepetitbillard

import android.graphics.Canvas

import android.graphics.Color

import android.graphics.Paint

import android.graphics.RectF

import java.util.*

class Balle (x1: Float, y1:...

CHAPITRE 05

L’ORIENTÉ OBJET, UNE FAÇON DE PROGRAMMER

LA COLLABORATION ENTRE CLASSES ET ENTRE OBJETS

À la différence de la programmation procédurale, l’orienté objet répartit l’effort de résolution d’un problème sur un ensemble d’objets collaborant par envoi de messages. Nous l’avons vu, chaque objet se décrit par un ensemble d’attributs (partie statique) et de méthodes portant sur ces attributs (partie dynamique). Certains de ces attributs étant les référents (donc les adresses mémoire) des objets avec lesquels il coopère, il lui est possible justement de déléguer certaines des tâches à ces collaborateurs. Le tout s’opère en respectant un principe de distribution des responsabilités on ne peut plus simple, chaque objet s’occupant de ses propres attributs (comme la balle de sa position ou de sa couleur). Lorsqu’un objet exige de s’informer sur les attributs d’un autre ou de les modifier, il charge cet autre de s’acquitter de cette tâche. En effet, chaque objet expose à ses interlocuteurs un mode d’emploi restreint, une carte de visite limitée aux seuls services qu’il est apte à assurer et continuera à rendre dans le temps, malgré de possibles modifications dans la réalisation concrète de ces services.

Un projet de programmation orientée objet répartit ainsi les responsabilités du code entre les classes, qu’il est important, dans un premier temps, de tenir distinctes le plus possible, d’où la séparation physique dans et par les fichiers. Cette programmation est fondamentalement distribuée, modularisée et décentralisée. Pour autant qu’elle respecte également des principes de confinement et d’accès limité...

CHAPITRE 07

AJOUTONS UN PEU D’ANIMATION À TOUT CELA

LES BALLES CHANGENT LEUR POSITION…

Nous allons maintenant ajouter un peu d’animation dans notre petit billard, en simplifiant au maximum la première étape qui consistera à ne faire bouger que la première des trois balles. Prévoyons déjà le mouvement de la balle par l’ajout de la méthode bouge() . C’est bien elle qui s’occupe de ses déplacements. Nous découvrons également qu’il est possible d’exécuter davantage de code et d’instructions lors de la construction et de l’initialisation des balles. Si le besoin s’en fait sentir, c’est tout à fait possible à l’intérieur d’un bloc de code init . C’est bien le cas ici car, de manière aléatoire, nous déclarons quatre types de déplacement différents au démarrage des balles. C’est en fait la méthode offset du rectangle qui fera bouger la balle à la vitesse qui s’avère un nouvel attribut de la classe Balle, ici les deux composantes additionnelles de la vitesse en x et en y  : dx et dy.

...

CHAPITRE 08

FINALISONS NOTRE PETIT BILLARD

Il nous reste maintenant à finaliser notre petit billard par l’ajout des parois, la possibilité de créer de nouvelles balles et la programmation des rebonds.

AJOUT DES PAROIS

Le code de la classe Parois (classe et fichier qu’il est nécessaire de créer, toujours dans le même répertoire) ne devrait vous surprendre en rien, tout expert en OO que vous voilà devenu :

package com.example.lepetitbillard

import android.graphics.Canvas

import android.graphics.Color

import android.graphics.Paint

import android.graphics.RectF

class Parois (x1: Float, y1: Float, x2: Float, y2: Float) {

  ​val r = RectF(x1, y1, x2, y2)

  ​val paint = Paint()

  ​fun draw(canvas: Canvas) {

  ​  ​paint.color = Color.GREEN

  ​  ​canvas.drawRect(r, paint)

  ​}

  ​fun gereBalle(b: Balle) {

  ​  ​if (RectF.intersects(r,b.r)) {

  ​  ​  ​if (r.width() > r.height()) {

  ​  ​  ​  ​b.changeDirection (true)

  ​  ​  ​}

  ​  ​  ​else {

  ​  ​  ​  ​b.changeDirection(false)

  ​  ​...

PARTIE 03

>UN JEU CANON

Pour suivre toutes les nouveautés numériques du Groupe Eyrolles, retrouvez-nous sur Twitter et Facebook

images @ebookEyrolles

images EbooksEyrolles

Et retrouvez toutes les nouveautés papier sur

images @Eyrolles

images  ​ Eyrolles