Adresaci szkolenia:

Programiści Javy, którzy chcieliby podnieść swoją produktywność oraz tworzyć lepszy kod w najnowszym obiektowo-funkcyjnym języku programowania działającego na platformie Java.

Cel szkolenia:

Uczestnicy dowiedzą się jak wykorzystać język Scala do błyskawicznego tworzenia wysokiej jakości aplikacji działających na platformie Java.

W szczególności uczestnicy:

  • poznają składnię języka Scala pokazaną na tle znanych konstrukcji z języka Java.
  • poznają nowe elementy języka, nieobecne w Javie, m.in: funkcje wyższych rzędów, dopasowywanie wzorców, konwersje i argumenty implicit, typy strukturalne, kontynuacje, typy abstrakcyjne, przeciążanie operatorów.
  • w trakcie ćwiczeń praktycznych nauczą się posługiwać kompilatorem oraz IDE w celu zbudowania swoich pierwszych programów wykorzystujących zarówno standardowe biblioteki Scali jak i biblioteki Javy.
  • zapoznają się również z integracją modułów pisanych w Javie z modułami tworzonymi w Scali

Omówione zostaną także:

  • instrukcje sterujące, stałe i zmienne, system typów, model obiektowy, mechanizm obsługi błędów, sposoby dekompozycji kodu
  • dobre praktyki projektowania kodu oraz sposoby tworzenia kodu zgodnie z paradygmatem programowania funkcyjnego

Mocne strony szkolenia:

Po szkoleniu uczestnicy będą gotowi samodzielnie pisać złożone aplikacje w języku Scala jak również rozbudowywać istniejące aplikacje pisane w języku Java o komponenty tworzone w języku Scala. Szczególny nacisk kładziony jest na nauczenie dobrych praktyk tworzenia kodu wysokiej jakości, zwięzłego, czytelnego i łatwego do utrzymania.

Wymagania:

Wymagana jest umiejętność programowania w języku Java (do poznania na kursie J/JP).

Parametry szkolenia:

4*8 godzin (4*7 godzin netto) wykładów i warsztatów (z wyraźną przewagą warsztatów). W trakcie warsztatów, oprócz prostych ćwiczeń, projektowana i implementowana jest prosta kompleksowa aplikacja.

Wielkość grupy: maks. 8-10 osób.

Program szkolenia

  1. Wstęp
  2. Pierwsze kroki z językiem Scala
    1. Pierwszy program
    2. Interpreter (REPL)
    3. Kompilator
    4. IDE
    5. Organizacja kodu źródłowego
    6. Budowanie aplikacji (SBT)
    7. Dokumentacja
  3. Klasy i obiekty
    1. Podstawowe typy obiektów i operacje
    2. Stałe, zmienne, metody
    3. Przeciążanie operatorów
    4. Wbudowane instrukcje sterujące
    5. Konstruktory
    6. Równoważność obiektów
    7. Klasy konkretne
    8. Dziedziczenie i wielodziedziczenie
    9. Własności abstrakcyjne
    10. Interfejsy
    11. Obiekty singletonowe
    12. Importowanie klas
    13. Kontrola zasięgu widoczności
    14. Klasy zagnieżdżone
    15. Hierarchie klas sealed
  4. Funkcje
    1. Obiekty funkcyjne
    2. Wyrażenia lambda
    3. Currying i częściowa aplikacja funkcji
    4. Kompozycja funkcji
    5. Funkcje częściowe
    6. Typowe zastosowania wyrażeń lambda w kolekcjach
  5. Programowanie bez nulli: Option, Some i None
  6. Zwracanie wielu obiektów z funkcji na raz: krotki
  7. Pattern matching czyli czego switch w Javie nie umie
    1. Proste zastosowania
    2. Dopasowywanie z zagnieżdżeniami
    3. Definiowanie własnych ekstraktorów
    4. Definiowanie funkcji częściowej na podstawie przypadków
    5. Obsługa wyjątków
  8. Standardowe kolekcje
    1. Mutowalność kontra persystencja
    2. Napisy
    3. Tablice, listy, zbiory i słowniki
    4. Iteratory
    5. Strumienie
    6. Generowanie kolekcji
      1. Iteracyjnie: lepsza pętla for
      2. Rekurencyjnie: z użyciem strumieni
  9. Typy generyczne
    1. Metody generyczne
    2. Klasy generyczne
    3. Specyfikowanie ograniczeń typów
    4. Kontrola wariancji
    5. Specjalizacja
  10. Konwersje implicit
  11. Parametry implicit
  12. Wyrażenia regularne
  13. Praca z XML
  14. Adnotacje
  15. Asercje
  16. Współbieżność
    1. Wątki
    2. Asynchroniczna wymiana komunikatów
  17. Współpraca z kodem Javy

Pytania?

* Wymagane.


Konsultant on-line
Skorzystaj z usług naszego konsultanta on-line.
Naciśnij przycisk ‘Skorzystaj’ aby przejść do okienka czatu
Kontakt
ul. Nowogrodzka 62c
02-002 Warszawa
Telefon +48 22 2035600
Fax +48 22 2035601
Email