Your SlideShare is downloading. ×
0
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Introduction à scala
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introduction à scala

1,234

Published on

Cette présentation aura pour objectif d’introduire le langage de programmation Scala. Ce dernier bénéficie depuis plusieurs mois d’un véritable engouement qui se reflète au regard de la communauté …

Cette présentation aura pour objectif d’introduire le langage de programmation Scala. Ce dernier bénéficie depuis plusieurs mois d’un véritable engouement qui se reflète au regard de la communauté française croissante.

Pour cela Ludwine Probst et Florent Lagrede reviendront donc sur les notions fondamentales, illustrées d’exemples sur des problèmes récurrents de programmation, afin de dégager les spécificités de ce langage et certains de ses atouts.

Aucune connaissance de Scala n’est donc nécessaire, seulement l’envie de découvrir un nouveau langage.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,234
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introduction à Scala Introduction à Scala par Ludwine et Florent
  • 2. Florent Lagrèdedéveloppeur Java chez voyages-sncf.com@flowlagLudwine Probstdéveloppeuse Java chez voyages-sncf.comDuchessFr et GDG member@nivdul
  • 3. Plan de la soirée Introduction à Scala...Partie 1 GénéralitésPartie 2 Présentation des conceptsPartie 3 Démonstration avec une appli
  • 4. HistoireNom : scala vient de "scalable langage"Auteur: Martin OderskyCréation : 2003Lieu : EPFL (Lausanne)But : être élégant et concis, mais pas que...
  • 5. Dans la communautéPSUG (Paris Scala User Group)• soirée chaque mois avec 60-100 membres• sujets techniques, retours dexpériences, présentations de projets open-source...
  • 6. Scala en quelques mots• langage mélangeant programmation orientée- objet et fonctionnelle• tourne sur la JVM• compatible avec les librairies Java• statiquement typé• soucis de la concurrence (immutable)• inférence de type• tout est objet (hiérarchie des classes)• et ça se veut être concis
  • 7. // en Javaclass Album { private int id; private String name; public Album(int id, String name) { this.id = id; this.name = name; }}// en Scalaclass Album(id: Int, name: String)
  • 8. La programmation fonctionnelle• exprime les fonctions au sens mathématique• exclut le changement détat lors de lévaluation de fonctions• élimine les effets de bords• soppose à la programmation impérative
  • 9. Scala dans le milieu professionnel
  • 10. Quelques outils pour coder en Scala• REPL (Read-Evaluate-Print Loop)• sbt (simple-build-tool)• éditeur de texte (sublimtext,notepad++...)• Eclipse/IntelliJ http://typesafe.com/stack/downloads/scala-ide• scaladoc http://www.scala-lang.org/
  • 11. Démo• création dun projet scala via Eclipse• utilisation du worksheet• petits tests en scala via le REPL• compilation/exécution (tests) dun projet via sbt
  • 12. Objectifs de la soirée• présenter les bases, du moins certaines o mutable/immutable, trait, case class, sealed, List, high order function, pattern matching... o voir la syntaxe• regarder de près une appli en Scala
  • 13. Présentation de concepts clés
  • 14. Introduction à Scala par Ludwine et Florent
  • 15. Les classesDéfinition :• définition standard• pas de mot clé public• un fichier source peut contenir plusieurs classes et elles sont toutes par défaut public
  • 16. Les case classesDéfinition :• objet non modifiable après instanciation• méthodes equals, toString, hashcode... implicitées• constructeur implicité• pas de new• peut se décomposer avec la notion de Pattern Matching
  • 17. Exemplescase class Album(id:Int, name:String)Ces 3 écritures suivantes sont équivalentes :val album = new Album(3, "Paris")val album = Album(3, "Paris")val album = Album.apply(3, "Paris")album.name = quobtient-on???
  • 18. Les getters/setters (1/2)//Javapublic class Image() { private String name; public String getName() {...} public void setName(String name) {...}}//Scalaclass Image(var name:String)
  • 19. Les getters/setters (2/2)En scala, • les getters/setters sont générés pour la JVM • on peut les surcharger • ils sont privés si lattribut est privé • il est possible dempêcher leur génération avec la syntaxe suivante private[this] name:String
  • 20. Val & VarDéfinition :• val o déclaration dattribut : variable non modifiable o déclaration de paramètre de classe : getter implicite• var o déclaration dattribut : variable modifiable o déclaration de paramètre de classe : getter et setter implicite
  • 21. Exemplesclass Image(var name: String)val imageA = new Image("MyImageA")val imageB = new Image("MyImageB")Si on écrit ça : imageA = imageBQue se passe-t-il ?
  • 22. Les traitsDéfinition :cest comme une class sauf quil y a le mot-clétrait. Cest léquivalent de linterface en Java saufquon peut y implémenter des méthodes.trait ImageInfos { val image:Image def ImageInfos:String = image.name}
  • 23. ExemplesPossibilité dun héritage multiple :trait ComputeAverageScoretrait AnotherOneclass Image extends ImageInfos withComputeAverageScore with AnotherOne { val name = "Paris"}Pas de paramètres de classe :trait ImageInfos(image: Image) // necompile pas
  • 24. Les Collections• Utilise le trait Iterable• Immutable par défaut• Fonctions dordre supérieure o map o filter o foreachExemples de collection :List, Map, Set, Vector...
  • 25. Les ListsDéfinition :La classe List repose sur les deux case classes :• Nil représente une liste vide• :: (se prononce “cons”),où x::xs représente la liste dont le premierélément est x, suivi du reste des éléments xs.
  • 26. Les ListsLes 3 fonctions clé à retenir :• head : renvoie le premier élément d’une liste• tail : renvoie la liste excepté son premier élément• isEmpty : renvoie true si la liste est vide, false sinon
  • 27. Quelques exemples...val scores = List(1,2,3)val names =List(“a”,“b”, “b”)val list =List(List(1,0),List(1,1),List(0,1))val empty: List[Nothing] = List( )val scores = 1 :: 2 :: 3 :: Nilval names = “a” :: (“b” :: (“b” :: Nil))
  • 28. Fonction partielleDéfinition :• une fonction partielle qui sexécute ou non en fonction de ses paramètres• elle doit obligatoirement définir 2 méthodes o isDefinedAt (condition dexécution) o Apply (code exécuté)
  • 29. Fonction partiellement appliquéeDéfinition :• fonction à laquelle on napplique pas tous les arguments, créant ainsi une autre fonction.• peut appliquer aucun ou tous les arguments dune fonction
  • 30. Les fonctions de plus haut niveau• Expression lambda o x: Int => x + 1 est équivalent à f(x: Int) = {x + 1}• Peut prendre une autre fonction en paramètre• Peut être retournée en tant que résultat• Peut être déclarée à lintérieur dune autre fonction• Peut-être stockée dans une variableExemples :map, filter, flatten, flatmap...
  • 31. Les options (1/2)Définition :Le type Option désigne une valeur optionnelle etcest une Collection.
  • 32. Les options (2/2)Lintérêt des Options ?Imaginons que l’on veuille trouver unepersonne dans une BDD...def findImage(id: Int): Option[Image]
  • 33. Pattern MatchingDéfinition :Le pattern matching peut être assimilé au switchcase dautres langages comme Java.e match {case p1 => e1 ... case pn => en }pi représente les patterns et ei la valeur renvoyéedans le cas où le pattern pi match e.Erreur MatchError renvoyée si besoin.
  • 34. Exemples (1/4) def applyEvent(event: Event) = event match{ case AddImage(image) => add(image) case RemoveImage(withId) =>remove(withId) case SearchImages(term) => search(term) case _ => this.image}Cest quoi ce "_" ?
  • 35. Exemples (2/4)Avec les options :case SortImages(criteria) => criteria match { case Some(criteria) => sort(criteria) case None => this.images}
  • 36. Exemples (3/4)On peut faire du Pattern Matching sur un peu tout !def describe(x: Any) = x match { case 5 => "five" case true => "truth" case "hello" => "hi!" case Nil => "the empty list" case _ => "something else" }
  • 37. Exemples (4/4)Avec les listes :def eval(list:List[Int]) = list match { case Nil => println("vide") case x::Nil => println("un seul élément") case x::xs => println("au moins 2 élemts")}
  • 38. Sealed TraitDéfinition : le mot-clé sealed devant untrait :ça facilite le Pattern Matching !Exemple :sealed trait Criteriacase class ByName extends Criteriacase class ByDate extends Criteria
  • 39. Présentation de lapplication• moteur de recherche dimage• le modèle : Image, Album• technos : scala 2.10
  • 40. Quelques liensProgramming in Scala Scala in DepthScala for the impatientPour apprendre scala par la pratique : https://www.coursera.org/
  • 41. Merci !

×