Mes découvertes sur kotlin

Dans le dernier article “Une nouvelle orientation, le langage Kotlin”, je vous fais part de mon changement où j’allais changer de langage et en apprendre un nouveau. C‘est chose faite,  j’ai commencé cette semaine à réaliser ma première application en kotlin. Je me suis consacrée deux soirées à la terminer, elle n’est pas terminée car j’ai rencontré quelques difficultés mais je suis fier car c’est dans l’adversité qu’on s’élève. La première séance je me suis concentré sur le design et c’est lors de la deuxième séance que je me suis concentré sur le plus dur, le développement en Kotlin. C’est en développant que l’on devient développeur. C’est tout nouveau pour moi, je me suis moi-même étonner. Je me suis adapté facilement à ce nouveau langage.  Mes connaissances dans d’autres langages m’ont permis de comprendre plus rapidement les notions du développement en Kotlin. Vous pouvez vous faire confiance, c’est très accessible.

Dans cet article je vais vous faire par des connaissances que j’ai acquises pendant ma formation qui m’a permis de m’adapter à ce langage et les choses que j’ai apprises cette semaine en Kotlin.

1) Les connaissances qui m’ont permise de m’adapter

Avant d’apprendre Android et plus principalement le java, j’ai étudié le C++ à l’école. De nombreuses notions dans ces deux langages sont similaires mais s’écrivent différemment. Kotlin ne fait pas exception. Ce que j’ai appris en C++ et en java, je l’ai retrouvé en Kotlin de manière différente. Je vais vous introduire ces notions ici, pour que comme moi  vous démarrer au même point, qu’on avance ensemble et que vous soyez capable de réaliser votre première application.

1.1) Les variables

La première notion à connaitre c’est la notion de variable. Une variable c’est un conteneur qui va contenir une donnée ou un ensemble de données. Une variable a donc un nom défini par leur développeur une taille par défaut, mais aussi un type. Par exemple, si vous souhaitez que votre programme stocke un mot ou une phrase. Son type c’est une chaîne de caractères définie par notre alphabet et sa taille c’est un octet pour chaque caractère. Il existe différents types de variable ils sont représentés par des mots-clés et écrits de différentes façons selon le langage.

En plus d’un type et d‘ une taille une variable peut posséder d’autre caractéristique :

En fonction de l’endroit où vous la déclarez, son champ d’action va se limiter. Par exemple, une variable pourra s’appliquer à  l’ensemble de l’application ou simplement à une fonction particulière. On pourra alors parler de variable globale qui s’applique à l’ensemble d’un fichier (fichier java) et variable locale qui s’applique à une fonction (notion que nous verront ensuite).

Une variable peut être immuable ou non. Immuable signifie que lors de la déclaration de la variable, là où les données contenues dans cette variable ne peuvent pas être modifiées par la suite. Cette caractéristique est caractérisée également par un mot-clé.

1.2) Les fonctions

Les fonctions sont des structures de codes qui définissent une action ou un ensemble d’action. Une fonction a plusieurs utilités :

Elles sont utiles pour le développeur pour structurer et réduire le nombre de lignes. Dans le développement, le nombre de lignes de code peut rapidement monter. Passer d’une centaine de ligne à des dizaines de milliers de lignes rend la tache compliquée aux développeurs pour s’organiser. Si un problème survient, il est plus simple de résoudre le problème, lorsque le nombre de lignes est peu important, que lorsque le code atteint un grand nombre d’instruction.

Elles permettent aux développeurs de clarifier et de s’organiser plus facilement. Prenons un exemple un peu abstrait, si on souhaite tracer un carré. On pourrait très bien tracer le premier côté, puis le deuxième, le troisième et finir par le quatrième.
Où sinon on pourrait tout simplement tracer le carré en une seule étape. On a tous appris à savoir définir un carré, c’est un ensemble de quatre coté de même longueurs. Cela fait partie de nos fonctions ! Pour le développement, c’est la même chose ! On définit, ou on appelle une fonction par son nom et elle nous fournit un ensemble d’actions.

Elle permet également d’optimiser l’ensemble du code. Une fonction peut très bien servir pour un usage en particulier ou ne servir qu’une seule fois. Une fonction peut contenir des variables qui sont dites locales avec une durée de vie limitée à la fonction. C’est-à-dire à la fin de l’exécution de la fonction, la mémoire allouée par la variable est libérée (rendu à la machine).

Une fonction peut contenir des paramètres et peut retourner une valeur de retour :

Un paramètre, c’est une variable externe à notre fonction avec une durée de vie limitée à la fonction. Les paramètres permettent d’agir sur la fonction vis-à-vis d’un contexte. Reprenons notre exemple du carré, maintenant on souhaite attribuer un paramètre pour jouer sur la taille du carré. Il est plus simple d’intégrer un paramètre externe changeable à notre volonté qui va impacter notre carré, que modifier le code de notre fonction pour chaque nouvelle modification.

Une fonction comme une variable, peut-être typée. Si elle est typée, elle va contenir alors une valeur de retour. Par exemple si vous avez une fonction qui additionne deux nombres, avec ces deux nombres en paramètre la fonction va retourner un entier de la somme de ces deux nombres.

1.3) Les classes

Les classes sont des grands conteneurs, elles peuvent contenir des variables et également des fonctions qu’on appelle méthode de la classe. Pour mieux comprendre on peut les associées à un objet. Prenons par exemple un camion de pompiers :

 

Le camion est notre objet (notre classe), il possède des caractéristiques (il est rouge, il possède une lance, etc …) ce sont les variables de l’objet.

Le camion possède également un ensemble de méthodes (fonctions), (activer le gyrophare, activer la lance incendie. ect…) ce sont les méthodes de l’objet.

la classe comme une fonction permet une clarification et une optimisation du code. Généralement, les développeurs vont créer un nouveau fichier par classe.

1.4) Les conditions de contrôle

Les structures conditionnelles :

Les structures conditionnelles apportent des conditions au code. C’est-à-dire que dans certains cas notre code va s’exécuter différemment. Une action peut très bien s’exécuter à la place d’une autre.

Les boucles :

Les boucles vont permettent de répéter un certain nombre de fois, une ou des lignes de code. Cela permet de gagner en lisibilité et en souplesse. Il existe différents types de boucles qui agissent différemment selon le nombre d’occurrences (de répétition).

2) Les connaissances que j’ai apprissent en kotlin

Il faut savoir qu’en kotlin, on retrouve les mêmes notions que je viens de vous présenter mais avec quelques particularités différentes.

Il est inutile de placer des points virgule en fin de ligne. Le compilateur comprend directement la fin d’une instruction. La notion d’immuable d’une variable est définie par deux mots-clés :

Le mot-clé var permet la modification de la variable par la suite:

Le mot-clé val rend la modification de la variable impossible :

On peut remarquer que le type de la variable est précisé par “:” suivit du type de la variable.

Pour les fonctions, elles se définissent par le mot-clé “fun” . Elles sont suivies d’un paramètre si la fonction en possède, puis le type pour la valeur de retour.

Les conditions de contrôle en kotlin ont un aspect différent. À l’exception des boucles, on les considère comme des expressions. C’est-à-dire contrairement aux autres langages (comme le java ou le C++), les expressions peuvent retourner des valeurs.

Merci d’avoir lu cet article ! j’espère que cela vous a aidé et je vous invite à partager cet article sur les réseaux sociaux pour qu’il puisse aider d’autres personnes.

Crédits : photo de Sonny Abesamis, photo de NicolasBlouin.com, photo de Jim Kelly

Partager l'article :
  •  
  •  
  •  
  •  
  •  
  • 21
    Partages

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *