Programowanie w języku Scala

734 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
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
734
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Equals jest bardzo trudne w implementacjiPrzydane zamiast java beans
  • Case objecty jedna instancjaSemantycznie istnieje tylko jeden kolor
  • 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

    ×