1. Supports de cours
  2. Kotlin - Les fondamentaux du développement d'applications Android

Kotlin Les fondamentaux du développement d'applications Android

  • Accès illimité 24h/24, 7J/7
  • Tous les livres en ligne, les vidéos et les cours enregistrés ENI
  • Plus de 10 nouveautés livres et vidéos chaque mois
  • Les nouveautés disponibles le jour de leur sortie
  • Accès 100% en ligne
  • En stock
  • Expédié en 24h00
  • Livraison à partir de 0,01 €
  • Version en ligne offerte
  • 1 h d'accès gratuit à tous nos livres et vidéos pour chaque commande
  • Accessible immédiatement
  • Version HTML
  • Accès illimité 24h/24, 7J/7

Présentation

Ce livre sur Kotlin, destiné aux développeurs juniors comme aux développeurs plus expérimentés, a pour objectif de transmettre les bases indispensables de ce langage promu par Google en tant que langage de développement officiel pour Android. Le lecteur y trouvera de quoi devenir autonome dans la création d'une première application mobile Android (en version Oreo 8.0 au moment de l'écriture) avec Kotlin. Pour une bonne compréhension de son contenu, de simples connaissances en programmation orientée objet sont suffisantes.

Les deux premiers chapitres traitent des fondamentaux du langage Kotlin et de la programmation orientée objet. Chaque concept décrit par l'auteur est accompagné d'une explication simple, de la syntaxe ainsi que d’un exemple d’utilisation.

Dans la suite du livre, le lecteur plonge dans le développement d'applications mobiles. L'auteur commence par présenter l'environnement de développement Android Studio avant de détailler les éléments incontournables pour développer une première application (listes, menus, pop-up, fragments…). Il poursuit avec l'étude de la persistance des données et de la programmation concurrente puis présente des composants plus avancés tels que les librairies ANKO et Retrofit ou l'ORM Room

Chaque concept étudié est associé à une démonstration complète et concrète. Le code source des principales démonstrations est proposé en téléchargement sur le sitewww.editions-eni.fr afin que le lecteur puisse facilement les reproduire pour s'exercer.


Les chapitres du livre :
Avant-propos – Présentation de Kotlin – Kotlin : les fondamentaux – Kotlin : la programmation orientée objet – Android : présentation de l'environnement – Android : les fondamentaux – Android : les éléments incontournables – Android : la persistance des données – Android : la programmation concurrente – Android : quelques librairies incontournables – Android : les éléments avancés – Android : tester l'application



Quizinclus dans
la version en ligne !
  • Testez vos connaissances à l'issue de chaque chapitre
  • Validez vos acquis

Table des matières

  • Présentation de Kotlin
    • 1. Historique
    • 2. Philosophie
    • 3. Avantages
    • 4. Environnement de développement
      • 4.1 Présentation
      • 4.2 Premiers pas avec IntelliJ IDEA
    • 5. Premier exemple Kotlin
  • Kotlin : les fondamentaux
    • 1. La fonction main
    • 2. Les variables
      • 2.1 Présentation
      • 2.2 Les variables immutables
      • 2.3 Les variables mutables
      • 2.4 Les constantes
      • 2.5 Les types de base
        • 2.5.1 Les types entiers
        • 2.5.2 Les types décimaux
        • 2.5.3 Le type booléen
        • 2.5.4 Le type caractère
      • 2.6 Les valeurs numériques littérales
        • 2.6.1 Long et Float
        • 2.6.2 Écritures binaire, octale et hexadécimale
        • 2.6.3 Utilisation des underscores
      • 2.7 Les chaînes de caractères
      • 2.8 Les types de base Nullable
      • 2.9 Les types Any et Any?
      • 2.10 Le type Unit
      • 2.11 Le type Nothing
      • 2.12 Les tableaux
        • 2.12.1 Création d'un tableau
        • 2.12.2 Utilisation courante
      • 2.13 Conversions des types de base
      • 2.14 Portée des variables
    • 3. Les opérateurs
      • 3.1 Les opérateurs arithmétiques
      • 3.2 Les opérateurs de bits
      • 3.3 Les opérateurs unaires
      • 3.4 Les opérateurs d'affectation
      • 3.5 Les opérateurs de comparaison
      • 3.6 Les opérateurs logiques
    • 4. Les structures de contrôle
      • 4.1 Les conditionnelles
        • 4.1.1 L'expression if
        • 4.1.2 L'expression when
      • 4.2 Les répétitives
        • 4.2.1 La boucle for
        • 4.2.2 La boucle while
        • 4.2.3 La boucle do while
        • 4.2.4 L'interruption d'une boucle
    • 5. Les fonctions
      • 5.1 Syntaxe
      • 5.2 Usage
      • 5.3 Les paramètres
        • 5.3.1 Syntaxe
        • 5.3.2 Immutable
        • 5.3.3 Paramètre par défaut
        • 5.3.4 Argument nommé
        • 5.3.5 Paramètre variadique
      • 5.4 Les fonctions contenant une expression simple
      • 5.5 Le type de retour
        • 5.5.1 Explicite
        • 5.5.2 Implicite
      • 5.6 Fonction récursive
      • 5.7 Portée des fonctions
        • 5.7.1 Fonction hors d'une classe
        • 5.7.2 Fonction dans une classe
        • 5.7.3 Fonction dans une fonction
    • 6. Les packages
      • 6.1 Présentation
        • 6.1.1 Conventions et bonnes pratiques
        • 6.1.2 Déclaration d'un package
        • 6.1.3 Importation d'un package
    • 7. Démonstration
  • Kotlin : la programmation orientée objet
    • 1. Introduction
    • 2. Les classes
      • 2.1 Présentation
      • 2.2 Syntaxe
      • 2.3 Déclaration d'une classe
      • 2.4 Création et utilisation d'instances d'une classe
      • 2.5 Les modificateurs de classe
        • 2.5.1 Modificateur public
        • 2.5.2 Modificateur internal
        • 2.5.3 Modificateur protected
        • 2.5.4 Modificateur private
        • 2.5.5 Modificateur final
        • 2.5.6 Modificateur open
        • 2.5.7 Modificateur abstract
        • 2.5.8 Pseudo modificateur nested (imbriqué)
        • 2.5.9 Modificateur inner (interne)
        • 2.5.10 Modificateur sealed (fermé)
      • 2.6 Les constructeurs
        • 2.6.1 Constructeur principal
        • 2.6.2 Bloc d'initialisation
        • 2.6.3 Constructeurs secondaires
      • 2.7 Les champs et les propriétés
        • 2.7.1 Présentation
        • 2.7.2 Syntaxe
        • 2.7.3 Création de propriétés via le constructeur
        • 2.7.4 Création de propriétés dans la classe
        • 2.7.5 Création de propriétés personnalisées
      • 2.8 Les modificateurs de propriétés
        • 2.8.1 Modificateur public
        • 2.8.2 Modificateur private
        • 2.8.3 Modificateur protected
        • 2.8.4 Modificateur internal
        • 2.8.5 Modificateur open
        • 2.8.6 Modificateur override
        • 2.8.7 Modificateur final
      • 2.9 Les fonctions de classes
        • 2.9.1 Syntaxe
        • 2.9.2 Usage
        • 2.9.3 Les modificateurs de fonctions
        • 2.9.4 Les fonctions d'extensions
        • 2.9.5 Notation infixée
    • 3. Les classes objet
      • 3.1 Présentation
      • 3.2 Syntaxe
      • 3.3 Usage
    • 4. L'héritage
      • 4.1 Présentation
      • 4.2 Les bases de l’héritage
        • 4.2.1 Présentation
        • 4.2.2 Syntaxe
        • 4.2.3 Héritage simple
        • 4.2.4 Héritage et constructeur principal
        • 4.2.5 Héritage et constructeur secondaire
        • 4.2.6 Super
      • 4.3 Redéfinition de propriétés et de fonctions
        • 4.3.1 Différence entre surcharge et redéfinition
        • 4.3.2 Redéfinition de propriétés
        • 4.3.3 Redéfinition de fonctions
    • 5. Les classes abstraites
      • 5.1 Présentation
      • 5.2 Syntaxe
      • 5.3 Usage
    • 6. Les classes scellées
      • 6.1 Présentation
      • 6.2 Syntaxe
      • 6.3 Usage
    • 7. Les interfaces
      • 7.1 Présentation
      • 7.2 Syntaxe
      • 7.3 Usage
    • 8. Les classes internes
      • 8.1 Présentation
      • 8.2 Syntaxe
      • 8.3 Usage
    • 9. Les classes imbriquées
      • 9.1 Présentation
      • 9.2 Syntaxe
      • 9.3 Usage
    • 10. Les classes anonymes
      • 10.1 Présentation
      • 10.2 Syntaxe avec les object expressions
      • 10.3 Usage avec les object expressions
    • 11. Singleton
      • 11.1 Présentation
      • 11.2 Syntaxe
      • 11.3 Usage
    • 12. Fonctions statiques
      • 12.1 Présentation
      • 12.2 Syntaxe
      • 12.3 Usage
    • 13. Enum classe
      • 13.1 Présentation
      • 13.2 Déclarations
    • 14. Généricité
      • 14.1 Présentation
      • 14.2 Syntaxe
      • 14.3 Usage
    • 15. La gestion des erreurs d'exécution
      • 15.1 Présentation
      • 15.2 Syntaxe
      • 15.3 Usage
    • 16. Les collections
      • 16.1 Présentation
      • 16.2 Syntaxe
        • 16.2.1 Collection de type List
        • 16.2.2 Collection de type MutableList
        • 16.2.3 Collection de type Set
        • 16.2.4 Collection de type MutableSet
        • 16.2.5 Collection de type Map
        • 16.2.6 Collection de type MutableMap
      • 16.3 Usage
        • 16.3.1 Collection de type List
        • 16.3.2 Collection de type MutableList
        • 16.3.3 Collection de type Set
        • 16.3.4 Collection de type MutableSet
        • 16.3.5 Collection de type Map
        • 16.3.6 Collection de type MutableMap
      • 16.4 Fonctions d'agrégation
        • 16.4.1 Présentation
        • 16.4.2 Usage
      • 16.5 Fonctions de sélection
        • 16.5.1 Présentation
        • 16.5.2 Usage
    • 17. Les expressions lambda
      • 17.1 Présentation
      • 17.2 Syntaxe
      • 17.3 Usage
      • 17.4 Stocker le traitement dans une variable
  • Android : présentation de l'environnement
    • 1. Présentation
      • 1.1 Introduction
      • 1.2 La plateforme Android
      • 1.3 Processus de construction d'une application
    • 2. Environnement de développement
      • 2.1 Introduction
      • 2.2 SDK Android
      • 2.3 Android Studio
        • 2.3.1 Présentation
        • 2.3.2 Principaux outils
      • 2.4 Gradle
        • 2.4.1 Présentation
        • 2.4.2 Gestion des dépendances
    • 3. Application Android
      • 3.1 Création d’un nouveau projet
      • 3.2 Structure d’une application
        • 3.2.1 manifests
        • 3.2.2 java
        • 3.2.3 res
        • 3.2.4 Gradle Scripts
      • 3.3 Exécution d’une application
        • 3.3.1 Sur émulateur
        • 3.3.2 Sur téléphone
  • Android : les fondamentaux
    • 1. Les composantes principales
      • 1.1 Activité
      • 1.2 Intention
      • 1.3 Fragment
      • 1.4 Service
      • 1.5 Content provider
      • 1.6 BroadcastReceiver
      • 1.7 Intent filter
      • 1.8 Manifeste
      • 1.9 Context
    • 2. Activité
      • 2.1 Présentation
      • 2.2 Pile de gestion
      • 2.3 Création d'une activité
      • 2.4 Contrôleur
      • 2.5 Cycle de vie
      • 2.6 Usage
    • 3. Vue liée à l'activité
      • 3.1 Présentation
      • 3.2 Fonctionnement de l'interface utilisateur
      • 3.3 Les conteneurs de type ViewGroup
        • 3.3.1 Présentation
        • 3.3.2 GridLayout
        • 3.3.3 LinearLayout
        • 3.3.4 RelativeLayout
        • 3.3.5 ConstraintLayout
      • 3.4 Les composants graphiques de type View
      • 3.5 Démonstration
    • 4. Gestion des événements
      • 4.1 Gestion des événements via XML
      • 4.2 Gestion des événements via Kotlin
        • 4.2.1 Présentation
        • 4.2.2 Usage historique
        • 4.2.3 Usage optimisé
    • 5. Gestion des ressources
      • 5.1 Présentation
        • 5.1.1 Stocker les ressources
        • 5.1.2 Accès aux ressources
    • 6. Manifeste
      • 6.1 Présentation
      • 6.2 Les balises
      • 6.3 Exemple
    • 7. Gestion des droits
      • 7.1 Présentation
      • 7.2 Fonctionnement
      • 7.3 Syntaxe
      • 7.4 Usage
      • 7.5 Complément
    • 8. Les intentions
      • 8.1 Présentation
      • 8.2 Intent explicite
        • 8.2.1 Présentation
        • 8.2.2 Syntaxe
        • 8.2.3 Exemple
        • 8.2.4 Transfert de données scalaires
        • 8.2.5 Transfert de données parcelables
        • 8.2.6 Démonstration
        • 8.2.7 Usage simplifié
      • 8.3 Intent implicite
        • 8.3.1 Présentation
        • 8.3.2 Syntaxe
        • 8.3.3 Usage
        • 8.3.4 Démonstration
        • 8.3.5 Usage simplifié
      • 8.4 Intent-filter
        • 8.4.1 Présentation
        • 8.4.2 Syntaxe
        • 8.4.3 Usage
  • Android : les éléments incontournables
    • 1. Les listes
      • 1.1 Présentation
      • 1.2 ListView
        • 1.2.1 Présentation
        • 1.2.2 Définir une ListView
        • 1.2.3 Définir le style des éléments de la liste
        • 1.2.4 Créer une classe adapter
        • 1.2.5 Lier l'adapter à la ListView
      • 1.3 RecyclerView
        • 1.3.1 Présentation
        • 1.3.2 Dépendance
        • 1.3.3 Définir un RecyclerView
        • 1.3.4 Définir le style des éléments de la liste
        • 1.3.5 Créer une classe Adapter
        • 1.3.6 Lier l'adapter au RecyclerView
      • 1.4 CardView
        • 1.4.1 Présentation
        • 1.4.2 Dépendance
        • 1.4.3 Usage
    • 2. Les menus
      • 2.1 Présentation
      • 2.2 ActionBar
        • 2.2.1 Présentation
        • 2.2.2 Créer la structure du menu
        • 2.2.3 Lier le menu à l'activité
        • 2.2.4 Définir les actions de chaque bouton
      • 2.3 NavigationDrawer
        • 2.3.1 Présentation
        • 2.3.2 Mise en place
        • 2.3.3 Dépendance
        • 2.3.4 Utilisation de l'assistant
        • 2.3.5 Personnalisation
    • 3. Les pop-up
      • 3.1 Toast
        • 3.1.1 Présentation
        • 3.1.2 Usage historique
        • 3.1.3 Usage optimisé
        • 3.1.4 Démonstration
      • 3.2 AlertDialog
        • 3.2.1 Présentation
        • 3.2.2 Dépendance
        • 3.2.3 Usage
        • 3.2.4 Démonstration
    • 4. Les fragments
      • 4.1 Présentation
      • 4.2 Cycle de vie
      • 4.3 Structure
        • 4.3.1 Fragment indépendant
        • 4.3.2 Fragment communiquant avec l'activité
        • 4.3.3 Activité communiquant avec le fragment
      • 4.4 La librairie de support V4
      • 4.5 Création
        • 4.5.1 Fragment indépendant
        • 4.5.2 Fragment communiquant avec l'activité
        • 4.5.3 Activité communiquant avec le fragment
    • 5. Démonstration
  • Android : la persistance des données
    • 1. Présentation
    • 2. SharedPreferences
      • 2.1 Présentation
      • 2.2 Fonctionnement
      • 2.3 Récupérer un objet de type SharedPreferences
        • 2.3.1 Interactivité
        • 2.3.2 Intra activité
      • 2.4 Enregistrer dans un fichier de préférences
      • 2.5 Lire dans un fichier de préférences
      • 2.6 Démonstration
    • 3. Fichier interne
      • 3.1 Présentation
      • 3.2 Écrire dans un fichier interne
      • 3.3 Lire dans un fichier interne
      • 3.4 Mettre en cache un fichier interne
      • 3.5 Quelques fonctions
      • 3.6 Démonstration
    • 4. Fichier externe
      • 4.1 Présentation
      • 4.2 Permissions
      • 4.3 Vérifier la disponibilité d'un espace de stockage
      • 4.4 Écrire dans un fichier externe privé
      • 4.5 Lire un fichier externe privé
      • 4.6 Écrire un fichier externe public
      • 4.7 Lire un fichier externe public
      • 4.8 Démonstration
    • 5. Base de données avec SQLiteOpenHelper
      • 5.1 Présentation
      • 5.2 Procédure
      • 5.3 Mise en place
        • 5.3.1 Schéma de la base de données
        • 5.3.2 Modèle
        • 5.3.3 Contract
        • 5.3.4 BddHelper
        • 5.3.5 DAO
  • Android : la programmation concurrente
    • 1. Présentation
    • 2. Problématique
      • 2.1 Présentation
      • 2.2 Démonstration
    • 3. Les threads
      • 3.1 Présentation
      • 3.2 Syntaxe
      • 3.3 Usage
      • 3.4 Démonstration
      • 3.5 Problématique
      • 3.6 runOnUiThread
        • 3.6.1 Présentation
        • 3.6.2 Démonstration
    • 4. Les tâches asynchrones
      • 4.1 Présentation
      • 4.2 Démonstration
    • 5. Les Handlers
      • 5.1 Présentation
      • 5.2 Démonstration
    • 6. Les coroutines
  • Android : quelques librairies incontournables
    • 1. Retrofit
      • 1.1 Présentation
      • 1.2 Procédure
      • 1.3 Démonstration
      • 1.4 Permission
      • 1.5 Dépendances
      • 1.6 Création d'un objet modèle
      • 1.7 Création d'une interface de communication
      • 1.8 Utilisation
    • 2. Anko
      • 2.1 Présentation
      • 2.2 Installation
      • 2.3 Anko Commons
        • 2.3.1 Présentation
        • 2.3.2 Intent
        • 2.3.3 Les boîtes de dialogues
        • 2.3.4 Les logs
        • 2.3.5 Les toasts
      • 2.4 Anko SQLite
        • 2.4.1 Présentation
        • 2.4.2 Accès et définition de la base de données
        • 2.4.3 Insertion de données
        • 2.4.4 Mise à jour de données
        • 2.4.5 Suppression de données
        • 2.4.6 Extraction de données
      • 2.5 Anko Layouts
        • 2.5.1 Présentation
        • 2.5.2 Définition rapide des propriétés essentielles
        • 2.5.3 Définition rapide du thème des éléments graphiques
        • 2.5.4 Modification des propriétés des éléments graphiques
        • 2.5.5 Modification des propriétés layout des éléments graphiques
        • 2.5.6 UI Wrapper
      • 2.6 Conclusion
    • 3. Room
      • 3.1 Présentation
      • 3.2 Procédure
      • 3.3 Création de la base de données
      • 3.4 Dépendances
      • 3.5 Création d'une classe de type Entity
      • 3.6 Création d'une interface de type DAO
      • 3.7 Création d'une classe de type Database
      • 3.8 Récupération d'une instance de la base de données
      • 3.9 Utilisation
        • 3.9.1 Insertion
        • 3.9.2 Lecture
        • 3.9.3 Modification
        • 3.9.4 Suppression
      • 3.10 Conclusion
  • Android : les éléments avancés
    • 1. Création et utilisation d'un content provider
      • 1.1 Présentation
      • 1.2 Structure
      • 1.3 Identification
      • 1.4 Créer un content provider
      • 1.5 Création : définir les fonctionnalités d'un content provider
        • 1.5.1 Lire des données via un content provider
        • 1.5.2 Insérer des données via un content provider
        • 1.5.3 Mettre à jour des données via un content provider
        • 1.5.4 Supprimer des données via un content provider
      • 1.6 Création : définir les permissions d'un content provider
        • 1.6.1 Présentation
        • 1.6.2 Usage
      • 1.7 Utiliser un content provider
        • 1.7.1 Connaître l'URI du content provider
        • 1.7.2 Récupérer un objet de type ContentResolver fourni par le Context
        • 1.7.3 Définir les permissions requises par le content provider
        • 1.7.4 Usage
      • 1.8 Utilisation : accès aux contacts de votre téléphone
        • 1.8.1 Présentation
        • 1.8.2 Fonctionnement
        • 1.8.3 La table ContactsContract.RawContacts
        • 1.8.4 La table ContactsContract.Data
        • 1.8.5 La classe ContactsContract.CommonDataKinds
        • 1.8.6 La table ContactsContract.Contacts
        • 1.8.7 Permission
        • 1.8.8 Usage
      • 1.9 Démonstration : création d'un content provider
        • 1.9.1 Présentation
        • 1.9.2 Sources
    • 2. Utilisation de données JSON
      • 2.1 Présentation
      • 2.2 Formats
      • 2.3 Transformer des données JSON en objets Kotlin
        • 2.3.1 Manière historique
    • 3. Utilisation de services distants
      • 3.1 Présentation
      • 3.2 Permission
      • 3.3 Consommer un web service
      • 3.4 Démonstration
    • 4. Les WebViews
      • 4.1 Présentation
      • 4.2 Déclaration dans l'interface
      • 4.3 Charger une page web dans une WebView
        • 4.3.1 Accès à des pages web distantes
        • 4.3.2 Accès à des pages web locales
      • 4.4 Appel de fonctions Kotlin avec du JavaScript
        • 4.4.1 Présentation
        • 4.4.2 Usage
    • 5. Les récepteurs d’événement
      • 5.1 Présentation
      • 5.2 Création d'un Broadcast Receiver
      • 5.3 Abonnement à des événements
      • 5.4 Diffusion d'un événement
      • 5.5 Démonstration
  • Android : tester l'application
    • 1. Logcat
      • 1.1 Présentation
      • 1.2 Vue d'ensemble
    • 2. Tests unitaires avec JUnit
      • 2.1 Présentation
      • 2.2 Procédure
      • 2.3 Démonstration
    • 3. Test de l'interface avec Espresso
      • 3.1 Présentation
      • 3.2 Procédure de mise en place
      • 3.3 Dépendances
      • 3.4 Définir un test
        • 3.4.1 Définir une classe de test
        • 3.4.2 Définir l'activité à tester dans la classe de test
        • 3.4.3 Définir un cas de test
      • 3.5 Démonstration
      • Index

Auteur

Anthony COSSONEn savoir plus

Ingénieur d'étude et développement depuis plusieurs années, spécialisé dans les technologies liées au développement mobile, Anthony COSSON s'est tourné naturellement vers le développement d'applications Android avec le langage Kotlin. Aujourd'hui responsable de formation et formateur à ENI Ecole, il s'emploie à rendre les formations vivantes tout en étant exigeant sur les meilleures pratiques, la rigueur et les savoirs indispensables, autant de facteurs clés pour former des développeurs compétents. Son livre et sa vidéo sont une occasion supplémentaire de transmettre ses connaissances et sa passion du développement.

Revue de presse

Developpez.com, par BakSh015/08/2019

Android est une plateforme mobile incontournable et reste le système d’exploitation le plus utilisé dans le monde de la téléphonie mobile, un développeur s’intéressant au monde des applications mobiles doit donc impérativement s’y arrêter.

Java n’est plus le langage recommandé par Google pour développer sous Android, il faut donc passer par Kotlin pour développer les nouvelles fonctionnalités d’une application, voire de commencer une nouvelle sous celui-ci.

Des connaissances en programmation orientée objet sont conseillées, voire indispensables pour pouvoir avancer sereinement dans ce livre. Au-delà de ces connaissances basiques de programmation généralistes, il n’est pas nécessaire d’avoir déjà touché au développement d’une application Android car dans cet ouvrage, nous partons des bases de l’IDE et progressons jusqu’aux explications plus avancées comme les données JSON, les webview ou encore les providers.

Certains bouts de code devront être légèrement revus du fait de la version Oreo (8.0) disponible au moment de l’écriture du livre, mais il est très utile pour donner une idée du cadre et les bases d’une application, le reste et les détails seront à piocher dans la documentation officielle d’Android.

En résumé, c’est un bon livre pour débuter en développement Android ou pour migrer votre application existante de Java vers Kotlin, mais pas de quoi devenir expert à partir des ressources et explications présentes.

Caractéristiques

  • Niveau Expert
  • Nombre de pages 466 pages
  • Parution octobre 2018
    • Livre (broché) - 17 x 21 cm
    • ISBN : 978-2-409-01586-1
    • EAN : 9782409015861
    • Ref. ENI : EPKOT
  • Niveau Expert
  • Parution octobre 2018
    • HTML
    • ISBN : 978-2-409-01587-8
    • EAN : 9782409015878
    • Ref. ENI : LNEPKOT

Téléchargements

En complétant ce formulaire, vous acceptez d'être contacté afin de recevoir des informations sur nos produits et services ainsi que nos communications marketing. Vous aurez la possibilité de vous désabonner de nos communications à tout moment. Pour plus d'informations sur notre politique de protection des données, cliquez ici.
  • Des fichiers complémentaires (1,83 Mo)