Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Programowanie w języku Scala

820 views

Published on

http://www.devcastzone.com/course,programowanie-w-jezyku-scala

Szkolenie "Programowanie w języku Scala" wprowadza do programowania w języku Scala. W trakcie trwania poznasz podstawy języka Scala jak również zagadnienia zaawansowane. Po zakończeniu szkolenia, uczestnik będzie mógł rozpocząć samodzielne tworzenie aplikacji z wykorzystaniem Scali. Devcast rozpoczyna się od konfiguracji środowiska programistycznego, a kończy na rozbudowanym systemie typów Scali.

Published in: Education
  • Be the first to comment

Programowanie w języku Scala

  1. 1. Programowanie w języku Scala Materiały pochodzą ze strony: www.devcastzone.comcopyright BNS MEDIA www.devcastzone.com
  2. 2. Scala – składnia języka, funkcje, zmienne, pakiety, klasy Wprowadzenie do języka Scalacopyright BNS MEDIA www.devcastzone.com
  3. 3. Treśd modułu 1. IDE 2. Podstawowe Typy Danych 3. Definiowanie funkcji Źródło: sxc.hu/photo/204689 4. Definiowanie klas 5. Pakiety 6. Zagnieżdżanie Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 3
  4. 4. IDE • Eclipse • IDEA • Netbeans • Emacs • VIM Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 4
  5. 5. Podstawowe Typy Danych • Znane z Javy: Int, Long, Float, Double, Boolean, ... • Dodatkowo ich rozszerzenia RichInt, RichLong, RichString, ... • Konwersje Int -> RichInt, ... • Brak prymitywów Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 5
  6. 6. Składnia Scali • Stałe (final w Javie) wyrażenie val lub var typ val i: Int = 4 // jawne typowanie nazwa val x = 2 // typ jest opcjonalny (inferencja) • Zmienne var y = 4.1234 var z: Double = 11.123 Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 6
  7. 7. Składnia – definicja funkcji • Klamry ,- dookoła funkcji są opcjonalne jeżeli funkcja mieści się w jednej linii Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 7
  8. 8. Pakiety package it.bns.scala import scala.collection.immutable import immutable.HashMap import immutable.List import immutable.{Set => ScalaSet, List, HashMap} import immutable._ Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 8
  9. 9. Klasy Konstruktor class MyClass(number: Int, val text: String) {W val x = 2ła val i: Int = 4s var y = 4.1234n var z: Double = 11.123o var c: Char = cś val map: HashMap[Int, String] = new HashMap[Int, String]()c def min(x: Int, y: Int): Int = if (x < y) x else yi } val myClass = new MyClass(0, "My First Class in Scala") Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 9
  10. 10. Klasa Person w Javie public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 10
  11. 11. Klasa Person w Scali class Person(var name: String, var age: Int) Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 11
  12. 12. Konstruktory dodatkowe w Scali class Person(var age: Int, var name: String) { // konstruktory dodatkowe def this(name: String) = this(0, name) def this() = { this("Foo Bar") age = 12 } } scala> val john = new Person("John Smith") john: Person = Person@2cc47220 scala> john.age = 31 john.age: Int = 31 scala> println("name:%s age:%s".format(john.name, john.age)) name:John Smith age:31 Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 12
  13. 13. Obiekty • W Scali nie ma klas statycznych • Odwołania po nazwie odbywają się przez Obiekty (nie są to instancje klas) • Obiekty są kompilowane to klas statycznych w bajtkodzie • Mogą nazywad się tak samo jak klasy i jeżeli występują obok siebie nazywane są „Companion object” Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 13
  14. 14. Obiekty object HelloWorld { def main(args: Array[String]) = println("Hello World !") } public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World !"); } } Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 14
  15. 15. Obiekty – „companion objects” class Person(var age: Int, var name: String) { def this(name: String) = this(0, name) } object Person { def prettyPrint(p: Person) = println("name:%s age:%s".format(p.name, p.age)) def apply(age: Int, name: String) = new Person(age, name) def apply() = new Person(0, "undefined") } scala> val john = Person(43, "John Smith") john: Person = Person@18c9d448 scala> Person.prettyPrint(john) name:John Smith age:43 Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 15
  16. 16. Zastosowania obiektów • Funkcje biblioteczne • Fabryki • Singletony Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 16
  17. 17. Klasy abstrakcyjne • Nie można tworzyć instancji klas abstrakcyjnych • Mogą zawierać zarówno konretne jak i niezdefiniowane pola oraz metody abstract class Fruit Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 17
  18. 18. Case class i case object • Daje „darmową” implementację o toString() o hashCode() o equals() • Jest niezmienna • Można używad do „pattern matchingu” • Ułatwia tworzenie struktur danych Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 18
  19. 19. Case class i case object abstract class Fruit abstract class Color case object Green extends Color case object Red extends Color case object Orange extends Color case class Apple(color: Color) extends Fruit case class Pear(color: Color) extends Fruit case class Orange(color: Color) extends Fruit val redApple = Apple(Red) val greenApple = Apple(Green) val pear = Pear(Green) val orange = Orange(Orange) Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 19
  20. 20. Case class i case object - użycie scala> redApple == Apple(Red) res6: Boolean = true scala> redApple == greenApple res7: Boolean = false scala> pear.color res8: Color = Green scala> orange.color = Green <console>:12: error: reassignment to val orange.color = Green ^ Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 20
  21. 21. Case class i case object - użycie scala> redApple == Apple(Red) res6: Boolean = true scala> redApple == greenApple res7: Boolean = false scala> pear.color res8: Color = Green scala> orange.color = Green <console>:12: error: reassignment to val orange.color = Green ^ Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 21
  22. 22. Operatory • Operatory to funkcje z jednym argumentem class MyInt(i: Int) { def *+(x: Int) = i * x + x def mult(x: Int) = i * x } scala> val i = 2 i: Int = 2 scala> val h = new MyInt(3) h: MyInt = MyInt@3646a658 scala> h *+ 3 res0: Int = 12 scala> h.*+(3) res1: Int = 12 scala> h mult 3 res3: Int = 9 Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 22
  23. 23. Zagnieżdżanie • Pakiety nie mogą byd zagnieżdżone • Można zagnieżdżad praktycznie wszystkie pozostałe konstrukcje Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 23
  24. 24. Modyfikatory dostępu • public – niejawny i domyślny • protected • private • private|protected*„nazwa pakietu”+ - ograniczenie dostępu w zasięgu pakietu Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 24
  25. 25. Modyfikatory dostępu package bns object Person { /*public*/ def prettyPrint(p: Person) = println("name:%s age:%s".format(p.name, p.age)) private def apply(age: Int, name: String) = new Person(age, name) protected def apply() = new Person(0, "undefined") protected[bns] def addAge(p: Person) = p.age += 1 } Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 25
  26. 26. Hierarchia Dziedziczenia Źródło: http://www.artima.com/pins1ed/images/scalaHierarchy.jpg Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 26
  27. 27. Programowanie w języku Scala – program pełnegoszkolenia 1. Wprowadzenie do języka Scala – historia, instalacja, podstawy o Wprowadzenie o Historia o Instalacja o Pierwsze kroki 2. Scala – składnia języka, funkcje, zmienne, pakiety, klasy o IDE o Podstawowe Typy Danych o Definiowanie funkcji o Definiowanie klas o Pakiety o Zagnieżdżanie Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 27
  28. 28. Programowanie w języku Scala – program pełnegoszkolenia 3. Scala – programowanie funkcyjne o Funkcje jako obiekty o Funkcje wyższych rzędów o Listy o Zastosowanie filter, map i reduce o Funkcje częściowo zaaplikowane o Pattern matching o Nicośd w Scali 4. Parametryzacja i typy generyczne o Typy Generyczne o Parametryzacja Typów na podstawie przykładowej implementacji generycznej kolejki o Wariancja 5. Traits, niejawne konwersje o Niejawne konwersje o Traits Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 28
  29. 29. Wprowadzenie do języka Scala http://www.devcastzone.com/course,programowanie-w-jezyku- scala Zapraszamy Programowanie w języku Scalacopyright BNS MEDIA www.devcastzone.com 29

×