Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Podobné dokumenty
Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Vývoj aplikací s využitím JavaFX. Developing applications with JavaFX

Úvod do programovacích jazyků (Java)

První kapitola úvod do problematiky

Principy objektově orientovaného programování

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

KTE / ZPE Informační technologie

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Jazyk C# (seminář 3)

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Abstraktní datové typy

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

JAVA. Další jazyky kompilovatelné do Java byte-code

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Jazyk C# (seminář 6)

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

typová konverze typová inference

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Čipové karty Lekařská informatika

Abstraktní datové typy: zásobník

Algoritmizace a programování

Úvod do programování v jazyce Java

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

20. Projekt Domácí mediotéka

Mělká a hluboká kopie

Generické programování

Návrh softwarových systém. Návrh softwarových systémů

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

NPRG031 Programování II 1 / :25:46

NMIN201 Objektově orientované programování 1 / :36:09

Java Výjimky Java, zimní semestr

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

3 KTE / ZPE Informační technologie

Úvod do programování - Java. Cvičení č.4

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Zápis programu v jazyce C#

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Stručný úvod do programování v jazyce C 1.díl. České vysoké učení technické Fakulta elektrotechnická

Programování v Pythonu

Programování v Javě I. Únor 2009

Abstraktní třídy, polymorfní struktury

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

GUI. JavaFX. Java UI, letní semestr 2017/2018 1

Programování v jazyce JavaScript

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Kámen-nůžky-papír. Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické

Programování v Javě I. Leden 2008

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

PB161 Programování v jazyce C++ Přednáška 4

Seminář Java IV p.1/38

Programování v jazyce JavaScript

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Projekty pro výuku programování v jazyce Java

Programování v C++ 3, 3. cvičení

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

KTE / ZPE Informační technologie

Objektově orientované programování

Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)

Kámen-nůžky-papír. Tomáš Svoboda Centrum strojového vnímání, Katedra kybernetiky Fakulta elektrotechnická, České vysoké učení technické

IRAE 07/08 Přednáška č. 1

Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

1. Téma 12 - Textové soubory a výjimky

Vytváření a použití knihoven tříd

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Teoretické minimum z PJV

TERMS & CONDITIONS 2019

PB161 Programování v jazyce C++ Přednáška 4

PREPROCESOR POKRAČOVÁNÍ

Úvod do programovacích jazyků (Java)

Jazyk C# a platforma.net

Programování v jazyce JavaScript

11. Dědičnost. Dědičnost strana 103

Jazyk C# a platforma.net

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Java Enum Java, zimní semestr ,2017 1

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

11. Přehled prog. jazyků

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Chain of responsibility

Podmínky na zápočet. Java, zimní semestr

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Transkript:

Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV) Katedra softwarového inženýrství Fakulta informačních technologií ČVUT v Praze Letní semestr 2010/2011, přednáška č. 8 Zdeněk Troníček, 2011

JavaFX Úvod Datové typy Funkce Třídy, objekty GUI, graph model 2

JavaFX platform Desktop elements Mobile elements TV elements JavaFX runtime Java Virtual Machine 3

JavaFX script Type Inference Data Types Sequences Expressions Binding Triggers Function Types Classes Mixins 4

Type Inference JavaFX script je staticky typovaný jazyk překladač umí odvodit typ proměnné každá proměnná je inicializována na defaultní hodnotu var i = 42; // i je typu Integer var s : String = "hi"; var j; j = 3.14; // j je typu Number def max = 10; 5

String lze používat uvozovky i apostrofy řetězce mohou obsahovat výrazy v { var s1 = "one"; var s2 = 'two'; var s3 = "rock 'n' roll"; var s4 = "{s1 and {s2"; var s5 = "three" " + " "four"; // one and two // three + four 6

Duration var d1 : Duration = 100ms; // 100 milliseconds var d2 : Duration = 2s; // 2 seconds var d3 = 3.5m; // 3.5 minutes var d4 = 0.2h; // 0.2 hours var d5 = 2m + 11s; var d6 = d2 d1; var d7 = 5 * d3; var n = d4 / d5; // n je typu Integer 7

Sequences (1) var s1: Integer[]; // sekvence hodnot typu Integer var s2: Integer[] = [ 1, 2, 3 ]; var s = [ 3, 5, 7 ]; // type inference insert 11 into s; // [ 3, 5, 7, 11 ] delete 7 from s; // [ 3, 5, 11 ] insert 7 after s [ 1 ]; // [ 3, 5, 7, 11 ] insert 2 before s [ 0 ]; // [ 2, 3, 5, 7, 11 ] 8

Sequences (2) var s1 = [ 1..5 ]; // [ 1, 2, 3, 4, 5 ] var s2 = [ 1..10 step 2 ]; // [ 1, 3, 5, 7, 9 ] var s3 = s1 [ 1..3 ]; // [ 2, 3, 4 ] var s4 = [ s3, 11 ]; // [ 2, 3, 4, 11 ] var s5 = [ 1 ]; insert s3 into s5; // [ 1, 2, 3, 4 ] var s6 = s5 [ n n >= 3 ]; // [ 3, 4 ] var s7 = reverse s6; // [ 4, 3 ] var n = sizeof s7; // 2 println( s6 == s7 ); // false println( s7 [ 0 ] ); // 4 println( s7 [ 2 ] ); // 0 (defaultní hodnota) 9

Expressions (1) JavaFX is expression language 10 Block expression var primes = [ 2, 3, 5, 7 ]; var sum = { var s = 0; for ( p in primes ) { s += p s If expression var y = if ( x > 0 ) { ++x; else { --x;

Expressions (2) For expression var s = for ( n in [ 1..5 ] ) { n * n println( s ); // [ 1, 4, 9, 16, 25 ] While expression var c = 0; var d = 1234; while ( d > 0 ) { c++; d /= 10; While expression is of type Void 11

Functions (1) function answer(): Integer { return 42; function answer(): Integer { return 42 function answer() { return 42; function answer() { return 42 function answer() { 42; function answer() { 42 12

Functions (2) function add ( x: Integer, y: Integer ) { return x + y function add ( x, y ) { // x a y jsou typu Number return x + y 13

Binding (1) var x = 10; var y = bind x mod 2; println ( y ); x--; println ( y ); var p = 42; var q = bind p with inverse; println ( q ); q = 29; println ( p ); function max ( x : Number, y : Number ) : Number { if ( x > y ) x else y var i = 3.141593; var j = 22.0 / 7; var m = bind max ( i, j ); 14

Binding (2) function f ( ) : Double { println ( "random" ); return Math.random ( ); var x = 1.23; var y = bind f ( ) + x; println ( y ); x = 2.34; println ( y ); // funkce f se zavolá pouze 1x 15

Bound Function var c = 1.5; bound function multiply ( u : Number ) { return c * u; var w = 2.0; var v = bind multiply ( w ); c = 1.4; println ( v ); 16

Replace Trigger var t = 1 on replace { println ( "změna hodnoty t" ); var t = 1 on replace tt { println ( "změna {tt -> {t" ); t = 2; println( t ); 17

Function Types var f : function ( : Integer ) : Void; // proměnná typu funkce f = function ( x : Integer ) : Void { println( "x = {x" ); f ( 123 ); funkce může být parametrem funkce návratovou hodnotou funkce 18

Classes class Point { var x : Integer; // instance variables var y : Integer; 19 // instance function function move ( dx : Integer, dy : Integer ) : Void { x += dx; y += dy;

Visibility default (script level) package protected public public-read public-init (public-read + init) class Visibility { var p1 : Integer; package var p2 : Integer; protected var p3 : Integer; public var p4 : Integer; public-read var p5 : Integer; public-init var p6 : Integer; protected public-read var p7 : Integer; package public-init var p8 : Integer; 20

Object Literals var p: Point; p = Point { x: 1 y: 2 // žádné new ani konstruktor var p: Point = Point { x: 3 y: 4 var p = Point { x: 5 y: 6 21

Inheritance class Parent { var x : Integer = 10; function printx ( ) : Void { println ( "Parent: {x" ); 22 class Child extends Parent { override var x = 20; // přepíše pouze inicializaci override function printx ( ) : Void { super.printx ( ); println ( "Child: {x {super.x" );

Covariant return & contravariant arguments class Parent { function makeshape ( ) : Shape {... function processshape ( r : Rectangle ) : Void {... class Child extends Parent { override function makeshape ( ) : Rectangle {... override function processshape ( s : Shape ) : Void {... Rectangle is a subclass of Shape 23

Mixins (1) mixin class Sailer { function sail() : Void { println( "sailing..." ); abstract function dock(): Void; class Vehicle { var speed = 0; function changespeed ( speed : Integer ) { println( "changing speed..." ); this.speed = speed; 24

Mixins (2) class Yacht extends Vehicle, Sailer { override function dock() : Void { println("docking..."); Class can inherit from one class and any number of mixins 25

26 GUI Stage { title: "GUI" scene: Scene { width: 300 height: 200 content: Rectangle { x: 50 y: 50 width: 200 height: 100

Graph Model Stage top level container Scene a drawing surface Node an element in a scene graph Group a sequence of nodes CustomNode designed to be subclassed 27

Effects Lighting DistantLight PointLight SpotLight Transforms Affine Rotate Scale Shear Translate Gradients LinearGradient RadialGradient 28

Demo: effects LightingUse.fx TransformUse.fx LinearGradientUse.fx RadialGradientUse.fx 29

Animation KeyFrame 1 KeyFrame 2 KeyFrame 3 Interpolator.LINEAR Interpolator.EASEOUT 0s 5s 12s Timeline {... keyframes: [ at (0s) { x => 0, at (5s) { x => 300 tween Interpolator.LINEAR,... ] 30

Demo: animation AnimationUse.fx 31

Demo: transitions FadeTransition (FadeTransitionUse.fx) ParallelTransition PathTransition (PathTransition.fx) PauseTransition RotateTransition (RotateTransitionUse.fx) ScaleTransition (ScaleTransitionUse.fx) SequentialTransition TranslateTransition (TranslateTransitionUse.fx) 32

Video scene: Scene { content: MediaView { mediaplayer: MediaPlayer { media: Media { source: "file:/ " Media MediaPlayer MediaView 33

Otázky & odpovědi tronicek@fit.cvut.cz