# Kotlin > **Question 1** 👉 Définissez la différence entre objet, orienté objet et fonctionnel ? Comment qualifie-t-on ces concepts ? Qu’est ce qu’un POJO ? * **fonctionnel :** 100% fonctionnel * **objet :** 100% objet, même les operateurs par exemple * **orienté objet :** Pas que objet Il s'agit de different paradigme de programmation **POJO :** plain old Java object (bon vieil objet Java) *un POJO est un objet Java lié à aucune autre restriction que cellesforcées par la spécification du langage Java* --- > **Question 2** 👉 Définissez la différence entre un langage interprété et un langage compilé ? Citez quelques exemples de langage. * **langage interprété :** L’interpréteur se charge de traduire le code humain vers du code machine en temps réel *(PHP, javascript)* * **Les langages compilés :** Les langages compilés sont directement transformés en code machine après l’écriture, autrement dit, on passe d’un code lisible par un humain à du binaire. *(C, C++, C#)* --- > **Question 3** 👉 Définissez les points de différence entre un langage fortement typé et faiblement voire non typé ? Citez quelques exemples de langage. **fortement typé :** lorsqu'il garantit que les types de données employés décrivent correctement les données manipulées (java, C#) **Langages faiblement typés :** langages qui n'attachent pas une grande importance au typage. (PHP, Python) --- > **Question 4** 👉 Chercher la différence entre les deux mots clés (val et var) et expliquer avec vos mots à l’enseignant. * **val :** val est comme la variable "final" et elle est connue comme immuable dans kotlin et ne peut être initialisée qu'une seule fois. * **var :** var est comme une variable générale et elle est connue comme une variable mutable dans kotlin et peut être assignée plusieurs fois. --- > **Question 5** 👉 Que se passe-t’il lorsque vous compilez ? La compilation va trouver l'erreur et s'arrêter --- > **Question 6** 👉 Selon vous quelle est la signature de la fonction networkCall ? Ecrivez la et faites valider par l’enseignant. ```Kotline fun networkCall(): String? {} ``` --- > **Question 7** 👉 Comment pourriez vous faire pour exécuter du code dans le cas ou la valeur de l unwrapping 🌮 est effectivement null, pour déclencher un nouvel appel réseau par exemple ? Trouvez l’opérateur adéquat et inscrivez le code d’exemple complété dans un ficher. ?:let Ex: `val l = b?.length ?: -1` --- > **Question 8** 👉 Quel est l’équivalent du switch en kotlin ? ```Kotlin when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> { // Note the block print("x is neither 1 nor 2") } } ``` --- > Question 9 👉 Créez un tableau de string et affichez chaque valeur dans la sortie console. Faites valider par l’enseignant. ```Kotlin val nameArray = arrayOf("Nathan", "Loïc", "Baptiste", "Guillian"); for(word in nameArray) { println(word) } ``` ou ```Kotlin val myStringArray = Array(5) { i -> (i * i).toString() } myStringArray.forEach { println(it) } ``` --- > **Question 10** 👉 Trouvez 3 exemples de classe enum qui vous permettrait de simplifier un problème ? ```kotlin enum class GAME { LOBBY, START, END } enum Element { HYDROGEN, HELIUM } enum class CONSOLE { XBOX_ONE, PS4, PS5 } ``` --- > **Question 11** 👉 Codez un programme faisant l’usage d’un singleton, en utilisant le mot-clé approprié. ```kotlin object Singleton{ init { println("Singleton class invoked.") } var variableName = "I am Var" fun printVarName(){ println(variableName) } } fun main() { Singleton.printVarName() Singleton.variableName = "New Name" var a = A() } class A { init { println("Class init method. Singleton variableName property : ${Singleton.variableName}") Singleton.printVarName() } } ``` **output :** Singleton class invoked. I am Var Class init method. Singleton variableName property : New Name New Name