Dart vs. Java
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				|  (Nejprve modifikátory, pak až =>.) |  (→Práce se seznamy:  Spojení prvků ze seznamu do listu.) | ||
| (Nejsou zobrazeny 4 mezilehlé verze od 1 uživatele.) | |||
| Řádka 73: | Řádka 73: | ||
|   print(ids.length) |   print(ids.length) | ||
| − | *  | + | * Spojení prvků ze seznamu do jednoho textového řetězce: | 
| + |  list.join(delimiter); | ||
| + |  ids.join(','); | ||
| + | |||
| + | * Více o práci se seznamy v Dartu viz například: [https://www.codevscolor.com/dart-insert-items-to-list CodeVsColor → Dart insert items to list]. | ||
| == Zápis tříd == | == Zápis tříd == | ||
| Řádka 111: | Řádka 115: | ||
| === Zkrácený zápis metod s návratovou hodnotou === | === Zkrácený zápis metod s návratovou hodnotou === | ||
| − | * Pro krátké metody  | + | * Pro krátké metody můžeme využít syntaxi s <code>=></code>: | 
| − |   String _name = " | + |   class Osoba { | 
| − | + |     String _name = "Karel"; | |
| + | |||
| + |     String get name => _name; | ||
| + |     set name(String name) => _name = name; | ||
| + |  } | ||
| + | |||
| + |  void main() { | ||
| + |    Osoba osoba = new Osoba(); | ||
| + |    osoba.name = "Ivan"; | ||
| + |    print(osoba.name); | ||
| + |  } | ||
| Místo delšího: | Místo delšího: | ||
| − | + |   //... | |
| − |   String get getName | + |   String get getName { | 
|      return _name; |      return _name; | ||
|   } |   } | ||
| + |  void set setName(String name) { | ||
| + |     _name = name; | ||
| + |  } | ||
| + |  //... | ||
| + | |||
| + | == Parametry metod == | ||
| + | * Poziční (''position'') parametry metod píšeme stejně jako v Javě: | ||
| + | |||
| + |  void metoda(String text, int cislo) { ... } | ||
| + | |||
| + |  metoda('Text', 30);  | ||
| + | |||
| + | * Lze ale také použít pojmenované parametry (''named''). Potom nezáleží na pořadí argumentů, ale každý z argumentů musí být uvozen názvem: | ||
| + | |||
| + |  void metoda({required String text, required int cislo}) { ... } | ||
| + | |||
| + |  metoda(cislo: 30, text: 'Text');  | ||
| + |  metoda(text: 'Text', cislo: 30);  | ||
| + | |||
| + | * Lze také uvést výchozí hodnotu parametru. Pak se jedná o volitelný (''optional'') parametr, který nemusíme uvádět.  | ||
| + | |||
| + | Viz také: [https://blog.stackademic.com/dart-function-parameters-in-flutter-positional-vs-named-with-examples-fc475da97f7c StackAcademic.com > Dart Function Parameters in Flutter]. | ||
| == Style: konvence pojmenování == | == Style: konvence pojmenování == | ||
Aktuální verze z 16. 3. 2025, 17:28
| Obsah | 
Dart vs. Java
- Na této stránce shrnujeme základní rozdíly mezi programovacími jazyky Dart a Java.
- Stránka je určena pro čtenáře, kteří již znají Javu a chtějí se rychle zorientovat v jazyce Dart.
Syntaxi si můžete vyzkoušet například na:
Hello world
-  Pro metodu mainnemusíme vytvářet zapouzdřující třídu.
-  Parametry metody mainjsou volitelné, pokud je nevyužíváme, nemusíme je uvádět.
-  Výpis na obrazovku se řeší příkazem print.
main(){
   print("Hello, World!");
}
Datové typy
- Dart nepoužívá primitivní datové typy, všechny typy jsou objektové.
-  Dart má vestavěné datové typy, pro které lze vytvářet literály (konkrétní hodnoty) přímo v kódu:
-  Číselné typy: int,double
-  Textové typy: String
-  Logické hodnoty: bool(literály:true,false)
-  Záznamy: (hodnota1, hodnota2)
-  Kolekce: List,Set,Map,Runes,Symbol
-  Prázdnou hodnotu: Null
 
-  Číselné typy: 
Více viz: Dart.dev > Built-in Types.
String
- Textové literály uvozujeme uvozovkami nebo apostrofy (běžněji se využívá apostrof – bohužel pro ty, kdo píší na české klávesnici).
- Víceřádkové texty lze uvozovat třemi apostrofy.
'Text' "Text" """Víceřádkový text"""
-  Spojení (concatenate) textů můžete provádět pomocí operátoru +nebo tím, že je zapíšete za sebe:
String text = 'Dart' 'is' 'fun'; String text = 'Dart'+'is'+'fun';
-  Pro vložení hodnot do textu můžete využít znak $, který uvozuje vloženou hodnotu. Hodnotu lze ohraničit${...}:
print('Seznam $data má největší prvek ${getMax(data)}');
Více o textech v Dartu: Dart.dev → String class.
Práce se seznamy
- Do seznamu v Dartu lze vkládat i prvky primitivních datových typů.
-  Lze vytvořit literál seznamu přímo v kódu pomocí znaků [a].
List<int> ids = [1, 2, 3]; ids.add(6);
- Získání prvku ze seznamu:
print(ids[0]);
-  Metoda printumí vypsat obsah seznamu.
print(ids);
- Počet prvků seznamu:
print(ids.length)
- Spojení prvků ze seznamu do jednoho textového řetězce:
list.join(delimiter);
ids.join(',');
- Více o práci se seznamy v Dartu viz například: CodeVsColor → Dart insert items to list.
Zápis tříd
- V Dartu můžeme umístit více tříd do jednoho souboru.
Přístupnost vlastností tříd
-  Dart nepoužívá modifikátory přístupu public,privateaprotected.
- Všechny vlastnosti (atributy a metody) tříd jsou přístupné v rámci jednoho souboru, případně v rámci jedné knihovny (library).
- Veřejné vlastnosti jsou přístupné i z ostatních knihoven (souborů).
- Privátní vlastnosti se odlišují tak, že jejich název začíná podtržítkem.
-  Přístupové metody se označují klíčovými slovy getaset.
class A {
    String first;
    String _second;
  
    String get second {
        return _second;
    }
  
    void set second(String second) {
        this._second = second;
    }
}
void main() {
    A a = new A();
    a.first = 'x';
    a.second = 'y';
}
Více viz: Woolha.com > Dart using Access Modifiers a FlutterSolution > Understanding Access Modifiers in Dart.
Zkrácený zápis metod s návratovou hodnotou
-  Pro krátké metody můžeme využít syntaxi s =>:
class Osoba {
   String _name = "Karel";
 
   String get name => _name;
   set name(String name) => _name = name;
}
void main() {
  Osoba osoba = new Osoba();
  osoba.name = "Ivan";
  print(osoba.name);
}
Místo delšího:
//...
String get getName {
   return _name;
}
void set setName(String name) {
   _name = name;
}
//...
Parametry metod
- Poziční (position) parametry metod píšeme stejně jako v Javě:
void metoda(String text, int cislo) { ... }
metoda('Text', 30); 
- Lze ale také použít pojmenované parametry (named). Potom nezáleží na pořadí argumentů, ale každý z argumentů musí být uvozen názvem:
void metoda({required String text, required int cislo}) { ... }
metoda(cislo: 30, text: 'Text'); 
metoda(text: 'Text', cislo: 30); 
- Lze také uvést výchozí hodnotu parametru. Pak se jedná o volitelný (optional) parametr, který nemusíme uvádět.
Viz také: StackAcademic.com > Dart Function Parameters in Flutter.
Style: konvence pojmenování
- PascalCase (UpperCamelCase)
- Názvy tříd
- Názvy výčtových typů
class Customer { ... }
- lowercase_with_underscores
- Názvy souborů
- Názvy prefixů pro import
Cílem je zajistit kompatibilitu s různými souborovými systémy, které nemusí rozlišovat velká a malá písmena (case-insensitive).
- camelCase (LowerCamelCase)
- Všechno ostatní ;)
- Na rozdíl od Javy se doporučuje i pro pojmenování konstant. (Z hlediska konzistence s existujícími knihovnami se povoluje i SCREAMING_CASE.)
const defaultTimeout = 1000;
Více o konvencích zápisu kódu viz: Dart.dev → Style.
