0 Introduction Water Pouring Problem Pour démarrer Excercices

Kotlin par l'exemple

Speakers

Roadmap

  1. Water Pouring Problem
  2. Pour démarrer
  3. Excercices

Pré-requis - IDE

  • Installation de l'IDE
    Android Studio 3.0, Download IntelliJ IDEA
  • Configuration du plugin Kotlin
    Tools | Kotlin | Configure Kotlin Plugin Updates
    Configure Kotlin Plugin Updates
    Sélectionner Early Access Preview 1.2
    Puis cliquer sur Check for updates now

Pré-requis - Exercices

Pourquoi un nouveau langage ?

  • Écrire du code plus sûr
  • Facilité la maintenance
  • Écrire plus rapidement
  • Résoudre de nouveaux problèmes
  • ...

Caractéristiques de Kotlin

  • Éviter les NPE, statiquement typé
  • Abordable, si on vient de Java
  • Expressif et pragmatique
  • Inspiré par Java, Scala, C#, Groovy, ...
  • Cross-platform

Cible

JVM Android JavaScript LLVM

JVM et Android

JavaScript

Native avec LLVM

Water Pouring Problem

Théière magique

Théière magique

Verres

8 / 8
<div class="glass-container">
    <div class="glass"
         style="height: 6rem;background-image: linear-gradient(to top, #e2b65e 0%, transparent 0px);"></div>
    <span>0 / 6</span>
</div>

<div class="glass-container">
    <div class="glass"
         style="height: 4rem;background-image: linear-gradient(to top, #e2b65e 25%, transparent 0px);"></div>
    <span>1 / 4</span>
</div>

Remplir

Fill
1 / 4
➡️
4 / 4

Vider

Empty
3 / 4
➡️
0 / 4

Verser

Pour
6 / 8
into
2 / 6
<span class="ope">➡️</span>

<div class="glass-container">
    <div class="glass"
         style="height: 8rem;background-image: linear-gradient(to top, #e2b65e 25%, transparent 0px);"></div>
    <span>2 / 8</span>
</div>
,
<div class="glass-container">
    <div class="glass"
         style="height: 4rem;background-image: linear-gradient(to top, #e2b65e 100%, transparent 0px);"></div>
    <span>6 / 6</span>
</div>

Démo

Pour démarrer

Hello World

fun main(args: Array<String>) {
    println("Hello Devoxx Morocco !")
}

    Glass

    data class Glass(val capacity: Int, val current: Int = 0) {
    
        init {
            require(capacity > 0) {
                "Capacity: $capacity should be > 0"
            }
            require(current in 0..capacity) {
                "Current: $current should be into [0, $capacity]"
            }
        }
    }
    
    typealias State = List<Glass>

      Moves

      sealed class Move
      
      data class Empty(val index: Int) : Move()
      
      data class Fill(val index: Int) : Move()
      
      data class Pour(val from: Int, val to: Int) : Move() {
          init {
              require(from != to)
          }
      }

        Excercices

        Choisir son exercice

        Serveur avec SpringBoot 2

        exo-server

        Pré-requis

        Exercices

        • Exercice 1: les bases
        • Exercice 2: un peu plus loin
        • Exercice 3: (SpringBoot) injection, routes, reactor, ...

        Android

        exo-mobile

        Pré-requis

        Exercices

        • Exercice 1: les bases
        • Exercice 2: un peu plus loin
        • Exercice 3: android

        Freestyle

        Pré-requis

        Exercice

        • Résoudre le problème du transvasement en Kotlin

        Liens