C'est livre est simple a comprendre et facilement recommandable pour un débutant.
AnonymeKotlin Les fondamentaux du langage
1 avis
Ce livre s’adresse à toute personne désireuse d’apprendre à programmer avec le langage Kotlin (en version 1.4 au moment de l’écriture). Que le lecteur soit débutant ou qu’il ait déjà de l’expérience avec un ou plusieurs langages de programmation, il trouvera dans ce livre, articulé en cinq grandes parties, toutes les connaissances nécessaires à la prise en main de Kotlin, largement illustrées par de nombreux exemples, pour une utilisation dans un contexte JVM (Java Virtual Machine).
La...
Consulter des extraits du livre en ligne
Aperçu du livre papier
- Niveau Initié à Confirmé
- Nombre de pages 550 pages
- Parution février 2021
- Niveau Initié à Confirmé
- Parution février 2021
Ce livre s’adresse à toute personne désireuse d’apprendre à programmer avec le langage Kotlin (en version 1.4 au moment de l’écriture). Que le lecteur soit débutant ou qu’il ait déjà de l’expérience avec un ou plusieurs langages de programmation, il trouvera dans ce livre, articulé en cinq grandes parties, toutes les connaissances nécessaires à la prise en main de Kotlin, largement illustrées par de nombreux exemples, pour une utilisation dans un contexte JVM (Java Virtual Machine).
La première partie permet au lecteur de préparer son environnement de travail et d’appréhender les bases de la programmation en Kotlin grâce aux variables, conditions, boucles, tableaux et fonctions. La deuxième partie détaille toutes les possibilités du langage Kotlin autour du concept de programmation orientée objet permettant ainsi au lecteur d’étudier les notions de classes, d’héritage, d’interfaces, d’énumérations, de généricité...
Une troisième partie donne la possibilité de progresser dans son apprentissage de la programmation avec Kotlin en se familiarisant avec des notions avancées contenues directement dans le langage (conversion de type, réification de type, fonctions de portée…), avant de poursuivre avec une partie dédiée aux collections.
La dernière partie de ce livre implique le lecteur dans la manipulation de bibliothèques tierces utiles pour la gestion de la programmation asynchrone, de channels, de flows, de requêtes web ou encore de sérialisation JSON.
L’auteur conclut avec un chapitre dans lequel il propose une mise en application des différentes notions étudiées avec le développement, étape par étape, d’un programme Kotlin destiné à la JVM.
Quizinclus dans
la version en ligne !
La première partie permet au lecteur de préparer son environnement de travail et d’appréhender les bases de la programmation en Kotlin grâce aux variables, conditions, boucles, tableaux et fonctions. La deuxième partie détaille toutes les possibilités du langage Kotlin autour du concept de programmation orientée objet permettant ainsi au lecteur d’étudier les notions de classes, d’héritage, d’interfaces, d’énumérations, de généricité...
Une troisième partie donne la possibilité de progresser dans son apprentissage de la programmation avec Kotlin en se familiarisant avec des notions avancées contenues directement dans le langage (conversion de type, réification de type, fonctions de portée…), avant de poursuivre avec une partie dédiée aux collections.
La dernière partie de ce livre implique le lecteur dans la manipulation de bibliothèques tierces utiles pour la gestion de la programmation asynchrone, de channels, de flows, de requêtes web ou encore de sérialisation JSON.
L’auteur conclut avec un chapitre dans lequel il propose une mise en application des différentes notions étudiées avec le développement, étape par étape, d’un programme Kotlin destiné à la JVM.
Quizinclus dans
la version en ligne !
- Testez vos connaissances à l'issue de chaque chapitre
- Validez vos acquis
Téléchargements
Avant-propos
- Introduction
Bien commencer en Kotlin
- Installer IntelliJ IDEA
- Créer un premier programme avec IntelliJ IDEA
- 1. La barre d’outils
- 2. L’onglet Project
- 3. Le terminal
- Créer des fichiers Kotlin
- Hello World!
- En résumé
Manipuler les variables
- Qu’est-ce qu’une variable ?
- Déclarer une variable
- Nommer une variable
- Les types de variables
- 1. Les nombres entiers
- 2. Les nombres flottants
- 3. Les caractères
- 4. Les booléens
- 5. Les chaînes de caractères
- Déclarer une variable (suite)
- Affecter une valeur à une variable
- Les variables de type "lecture seule"
- Les constantes
- Formater des nombres
- L’inférence de type
- Afficher le contenu d’une variable
- Place aux calculs !
- 1. Les calculs de base
- a. L’addition
- b. La soustraction
- c. La multiplication
- d. La division
- e. Le modulo
- f. Des calculs et des variables
- 1. Les calculs de base
- 2. Écrire moins de code
- a. Incrémenter une variable
- b. Décrémenter une variable
- c. D’autres raccourcis
- 3. Des calculs plus complexes
- a. Quelques exemples de fonctions mathématiques
- b. D’autres fonctions
Les structures de contrôle
- Qu’est-ce qu’une condition ?
- 1. if… else
- a. Les symboles de comparaison
- b. if
- c. else
- d. else if
- e. D’autres symboles ?
- 1. if… else
- 2. when
- 3. Stocker la valeur de retour d’une condition
- 1. La boucle while
- 2. La boucle do... while
- 3. La boucle for
Les fonctions
- Qu’est-ce qu’une fonction ?
- Définir une fonction
- Appeler une fonction
- Affecter des valeurs par défaut
- La surcharge de fonction
- Aller plus loin
- 1. Les paramètres sont en lecture seule
- 2. Une écriture raccourcie
- En résumé
Les tableaux
- Les tableaux à une dimension
- 1. L’intérêt des tableaux
- 2. Déclarer un tableau
- a. Déclarer un tableau "vide"
- b. Déclarer un tableau "prérempli"
- 3. Accéder aux éléments d’untableau
- 4. Parcourir un tableau
- 5. Les tableaux et les fonctions
- 6. Les tableaux de primitives
- 1. Déclarer un tableau multidimensionnel
- a. Déclarer un tableau "vide"
- b. Déclarer un tableau "prérempli"
Introduction à la programmation orientée objet
- Qu’est-ce qu’un objet ?
- Qu’est-ce que la programmation orientée objet ?
- En résumé
Les classes
- Créer une classe
- 1. Un peu de vocabulaire
- 2. La classe Dog
- Ajouter des attributs et des méthodes
- 1. Les attributs
- 2. Les méthodes
- Utiliser des objets
- Afficher un objet
- Les droits d’accès
- 1. Les méthodes
- 2. Les attributs
- Les mutateurs et les accesseurs
- Les constructeurs
- 1. Créer un constructeur
- 2. Les constructeurs secondaires
- En résumé
L’héritage
- Introduction
- Qu'est-ce que l’héritage ?
- Mettre en place l’héritage
- 1. La classe Animal
- 2. La classe Cat
- 3. La classe Dog
- 4. Manipuler les classes
- Un nouveau droit d’accès
- La covariance
- Vérifier le type d’un objet
- Le polymorphisme
- Les classes abstraites
- 1. Qu’est-ce qu’une classe abstraite ?
- 2. Écrire une classe abstraite
- 3. Les méthodes abstraites
- 4. La covariance
- 5. Créer une classe anonyme
- En résumé
Des classes dans des classes
- Les classes internes
- Les classes imbriquées
- Les classes scellées
- 1. Qu’est-ce qu’une classe scellée ?
- 2. Écrire une classe scellée
- 3. Les méthodes abstraites
- 4. La covariance
- En résumé
Des classes particulières
- Les énumérations
- 1. Qu’est-ce qu’une énumération ?
- 2. Écrire une énumération
- 3. Lister les valeurs d’une énumération
- 4. Retrouver la valeur d’une énumération
- 5. Ajouter des attributs à une énumération
- 6. Ajouter des méthodes à une énumération
- 7. Aller plus loin
- Les classes de données
- 1. Qu’est-ce qu’une classe de données?
- 2. Écrire une classe de données
- 3. Les limitations des classes de données
- 4. Les méthodes généréesautomatiquement dans les classes de données
- a. La méthode equals
- b. La méthode hashCode
- c. La méthode copy
- 1. Qu’est-ce qu’un patron de conception ?
- 2. Le patron de conception Singleton
- 3. Écrire une classe qui implémentele patron de conception Singleton
Les interfaces
- Qu’est-ce qu’une interface ?
- Écrire une interface
- Implémenter une interface
- Ajouter des attributs et des implémentations par défaut dans les interfaces
- 1. Les méthodes non abstraites
- 2. Les attributs abstraits
- La covariance
- Créer une classe anonyme
- En résumé
La généricité
- Des chiens et des chats
- Écrire une classe générique
- Utiliser une classe générique
- Ajouter une contrainte sur le type de paramètre
- Ajouter plusieurs contraintes sur le type de paramètre
- Les classes génériques covariantes
- Les classes génériques contravariantes
- En résumé
Aller plus loin avec les classes
- Les éléments statiques
- 1. Les méthodes statiques
- a. Qu’est-ce qu’une méthodestatique ?
- b. Écrire une méthode statique
- c. Utiliser une méthode statique
- 1. Les méthodes statiques
- 2. Les attributs statiques
- a. Qu’est-ce qu’un attribut statique ?
- b. Écrire un attribut statique
- c. Utiliser un attribut statique
- 1. Les limites de l’héritage
- 2. Les méthodes d’extension
- 3. Les attributs d’extension
- 1. Qu’est-ce qu’un alias ?
- 2. Créer un alias
Le type Nullable
- Qu’est-ce que le type nullable ?
- Indiquer des éléments nullables
- Composer avec les éléments nullables
- 1. L’opérateur !!
- 2. L’opérateur ?
- 3. L’opérateur Elvis
- En résumé
Initialiser les attributs autrement
- Initialiser les attributs plus tard
- Initialisation paresseuse des attributs
- En résumé
Des fonctions particulières
- Les expressions lambda et les fonctions d’ordre supérieur
- 1. Qu’est-ce qu’une expression lambda ?
- 2. Écrire une expression lambda
- 3. Utiliser une expression lambda
- 4. Qu’est-ce qu’une fonction d’ordre supérieur ?
- a. Écrire une fonction d’ordre supérieur
- b. Utiliser une fonction d’ordre supérieur
- c. Optimiser une fonction d’ordre supérieur
- 1. Qu’est-ce qu’une fonction de portée ?
- 2. Manipuler un objet dans une fonction de portée
- 3. Retourner un résultat dans une fonction deportée
- 4. La fonction let
- 5. La fonction with
- 6. La fonction run
- 7. La fonction apply
- 8. La fonction also
Les interfaces fonctionnelles
- La problématique des instanciations anonymes des interfaces
- Écrire une interface fonctionnelle
- En résumé
Les exceptions
- Qu’est-ce qu’une exception ?
- 1. Analyser une stacktrace
- 2. Des exceptions et des classes
- Capturer une ou plusieurs exceptions
- 1. Capturer une exception
- 2. Capturer plusieurs exceptions
- 3. Exécuter du code systématiquement
- Lever des exceptions
- 1. Quand lever une exception ?
- 2. Utiliser le mot-clé throw
- 3. Utiliser l’opérateur Elvis
- 4. Utiliser la fonction require
- 5. Utiliser la fonction check
- Créer des exceptions personnalisées
- En résumé
Les conversions de type
- Qu’est-ce que la conversion de type ?
- Mettre en place la conversion de type
- La conversion de type intelligente
- En résumé
Les collections
- Introduction
- List et MutableList
- 1. Qu’est-ce qu’une liste ?
- 2. Les listes en lecture seule
- a. Déclarer une liste en lecture seule
- b. Parcourir une liste
- c. Retrouver l’indice d’un élément
- d. Récupérer un sous-ensemble d’uneliste
- e. Récupérer une valeur à partirde son indice
- f. Les listes et les fonctions
- g. Une liste vide
- 3. Les listes en lecture et en écriture
- a. Déclarer une liste en lecture et en écriture
- b. Ajouter un ou plusieurs éléments
- c. Mettre à jour les élémentsd’une liste
- d. Retirer un élément
- e. Les listes et les fonctions
- 4. Passer du type List à MutableList
- 5. Les listes et la covariance de type
- 1. Qu’est-ce qu’un “set” ?
- 2. Les sets en lecture seule
- a. Déclarer un set en lecture seule
- b. Parcourir un set
- c. D’autres opérations
- d. Les sets et les fonctions
- e. Un set vide
- a. Déclarer un set en lecture et en écriture
- b. Ajouter un ou plusieurs éléments
- c. Retirer un élément
- d. Les sets et les fonctions
- 1. Qu’est-ce qu’une map ?
- 2. Les maps en lecture seule
- a. Déclarer une map en lecture seule
- b. Parcourir une map
- c. Récupérer l’ensemble desclés d’une map
- d. Récupérer l’ensemble desvaleurs d’une map
- e. Récupérer une valeur d’unemap à partir d’une clé
- f. Les maps et les fonctions
- g. Une map vide
- a. Déclarer une map en lecture et en écriture
- b. Ajouter un ou plusieurs éléments
- c. Mettre à jour les élémentsd’une map
- d. Retirer un élément
- e. Les maps et les fonctions
- 1. Transformer une collection
- a. Le mapping
- b. Le zipping
- a. Le filtrage
- b. La partition
- a. Sélectionner plusieurs éléments
- b. Sélectionner un seul élément
- a. Les opérations de tri non personnalisables
- b. Les opérations de tri personnalisables
- a. Les valeurs minimale et maximale
- b. La valeur moyenne
- c. La somme des valeurs
- d. Compter le nombre de valeurs
Les séquences
- Qu’est-ce qu’une séquence ?
- Pourquoi utiliser les séquences ?
- En résumé
La programmation asynchrone avec les coroutines
- Qu’est-ce qu’une bibliothèque tierce ?
- Quand utiliser la programmation asynchrone ?
- Ajouter les coroutines dans un projet
- Créer des coroutines
- 1. Le constructeur runBlocking
- 2. Le constructeur launch
- 3. Le constructeur async
- 4. Les fonctions suspendues
- Annuler et synchroniser des coroutines
- 1. Connaître l’état d’unecoroutine
- 2. Attendre la fin d’une coroutine
- 3. Annuler une coroutine
- Des coroutines dans des coroutines
- La gestion des erreurs dans une coroutine
- 1. La gestion locale
- 2. La gestion centralisée
- Ajouter des paramètres aux constructeurs
- 1. Le contexte
- a. Ajouter un objet de type Job
- b. Ajouter un objet de type Dispatchers
- c. Ajouter un objet de type CoroutineExceptionHandlerau contexte
- d. Ajouter des objets de type Job, Dispatchers et CoroutineExceptionHandler
- 1. Le contexte
- 2. Les options de démarrage
- 1. Les channels
- a. Qu’est-ce qu’un channel ?
- b. Différents types de channels
- c. Les inconvénients des channels
- a. Qu’est-ce que l’interface Flow ?
- b. Utiliser l’interface Flow
- c. Filtrer, transformer, etc. les données collectées
- d. Aller plus loin
L’introspection et la réification de type
- Qu’est-ce que l’introspection ?
- Utiliser l’introspection dans les projets
- Découvrir une classe par introspection
- 1. Connaître la classe mère et lesinterfaces implémentées par une classe
- 2. Connaître les constructeurs d’uneclasse
- 3. Connaître les méthodes d’uneclasse
- 4. Connaître les attributs d’une classe
- Instancier dynamiquement des objets
- Aller plus loin
- La réification de type
- 1. La problématique
- 2. Qu’est-ce que la réification detype ?
- En résumé
La sérialisation et la désérialisation
- Utiliser kotlinx-serialization dans les projets
- Qu’est-ce que la sérialisation ?
- Des solutions alternatives
- La sérialisation JSON avec kotlinx-serialization
- 1. Qu’est-ce que JSON ?
- 2. La sérialisation JSON
- a. Un exemple simple
- b. Aller plus loin
- 3. La désérialisation JSON
- a. Un exemple simple
- b. Aller plus loin
Les requêtes réseau avec ktor
- Utiliser ktor dans les projets
- Qu’est-ce qu’une requête réseau ?
- Des solutions alternatives
- Faire une requête réseau
- 1. Présentation de l’API
- 2. Implémentation technique
- En résumé
Aller plus loin
- Créer des annotations
- Surcharger les opérateurs d’une classe
- L'interopérabilité avec Java
- Écrire et lire dans des fichiers
- Tester un programme
- Déboguer un programme
Création d’un projet complet
- Description du projet
- Créer le projet
- 1. Ajouter un package
- 2. Créer les objets métier
- 3. Créer le service
- a. La méthode addFilm
- b. La méthode addPerson
- c. La méthode getFilmById
- d. La méthode getPersonById
- e. La méthode getFilmByName
- f. La méthode getFilmByActorId
- g. La méthode getFilmByDirectorId
- h. La méthode getFilmByGenre
- 4. Écrire et lire dans un fichier
- a. Implémenter la sérialisation JSON
- b. La méthode saveDatabase
- c. La méthode loadDatabase
- 5. Créer le programme principal
- a. Créer le menu
- b. Charger la base de données
- c. Sauvegarder la base de données
- d. Ajouter une personne
- e. Ajouter un film
- f. Rechercher un film par son nom
- g. Rechercher les films d’un acteur
- h. Rechercher les films d’un réalisateur
- i. Rechercher les films d’un genre particulier
Ludovic ROLAND
Expert technique Android, Ludovic ROLAND a fait ses armes pendant plusieurs années avec le langage de programmation Java avant d’adopter Kotlin, dès la première version stable du langage en 2016, pour le développement de ses applications. Reconnu pour son expertise et ses compétences pédagogiques, Ludovic ROLAND intervient dans plusieurs écoles d’ingénieurs et organismes de formation en ligne et propose aujourd’hui un livre 100% opérationnel sur le développement de programmes en Kotlin.
En savoir plus