Dart vs. Java

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Základní obsah - hello, konvence pojmenování, seznamy.)
 
(Práce se seznamy: Spojení prvků ze seznamu do listu.)
 
(Není zobrazeno 10 mezilehlých verzí od 1 uživatele.)
Řádka 7: Řádka 7:
  
 
<div class="Poznamka">
 
<div class="Poznamka">
Syntaxi si můžete vyzkoušet například na: [https://www.tutorialspoint.com/execute_dart_online.php TutorialsPoint.com &rarr; Execute Dart Online]
+
Syntaxi si můžete vyzkoušet například na:  
 +
* [https://dartpad.dev/ Dartpad.dev]
 +
* [https://www.tutorialspoint.com/execute_dart_online.php TutorialsPoint.com &rarr; Execute Dart Online]
 
</div>
 
</div>
 
  
 
== Hello world ==
 
== Hello world ==
Řádka 20: Řádka 21:
 
     print("Hello, World!");
 
     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&nbsp;kódu:
 +
** Číselné typy: <code>int</code>, <code>double</code>
 +
** Textové typy: <code>String</code>
 +
** Logické hodnoty: <code>bool</code> (literály: <code>true</code>, <code>false</code>)
 +
** Záznamy: <code>(hodnota1, hodnota2)</code>
 +
** Kolekce: <code>List</code>, <code>Set</code>, <code>Map</code>, <code>Runes</code>, <code>Symbol</code>
 +
** Prázdnou hodnotu: <code>Null</code>
 +
 +
Více viz: [https://dart.dev/language/built-in-types 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 <code>+</code> 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 <code>$</code>, který uvozuje vloženou hodnotu. Hodnotu lze ohraničit <code>${...}</code>:
 +
 +
print('Seznam $data má největší prvek ${getMax(data)}');
 +
 +
Více o textech v&nbsp;Dartu: [https://api.dart.dev/stable/3.5.3/dart-core/String-class.html Dart.dev &rarr; String class].
  
  
Řádka 29: Řádka 60:
 
  List<int> ids = [1, 2, 3];
 
  List<int> ids = [1, 2, 3];
 
  ids.add(6);
 
  ids.add(6);
 +
 +
* Získání prvku ze seznamu:
 +
 +
print(ids[0]);
  
 
* Metoda <code>print</code> umí vypsat obsah seznamu.
 
* Metoda <code>print</code> umí vypsat obsah seznamu.
  
 
  print(ids);
 
  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&nbsp;Dartu viz například: [https://www.codevscolor.com/dart-insert-items-to-list CodeVsColor &rarr; Dart insert items to list].
 
* Více o práci se seznamy v&nbsp;Dartu viz například: [https://www.codevscolor.com/dart-insert-items-to-list CodeVsColor &rarr; Dart insert items to list].
  
 +
== Zápis tříd ==
 +
 +
* V&nbsp;Dartu můžeme umístit více tříd do jednoho souboru.
 +
 +
 +
=== Přístupnost vlastností tříd ===
 +
 +
* Dart nepoužívá modifikátory přístupu <code>public</code>, <code>private</code> a <code>protected</code>.
 +
* Všechny vlastnosti (atributy a metody) tříd jsou přístupné v&nbsp;rámci jednoho souboru, případně v&nbsp;rámci jedné knihovny (library).
 +
* Veřejné vlastnosti jsou přístupné i z&nbsp;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 <code>get</code> a <code>set</code>.
 +
 +
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: [https://www.woolha.com/tutorials/dart-using-access-modifiers-private-public Woolha.com > Dart using Access Modifiers] a [https://www.fluttersolution.com/2023/04/understanding-access-modifiers-in-dart.html 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&nbsp;<code>=></code>:
 +
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&nbsp;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&nbsp;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

Syntaxi si můžete vyzkoušet například na:

Hello world

main(){
   print("Hello, World!");
}

Datové typy

Více viz: Dart.dev > Built-in Types.

String

'Text'
"Text"
"""Víceřádkový
text"""
String text = 'Dart' 'is' 'fun';
String text = 'Dart'+'is'+'fun';
print('Seznam $data má největší prvek ${getMax(data)}');

Více o textech v Dartu: Dart.dev → String class.


Práce se seznamy

List<int> ids = [1, 2, 3];
ids.add(6);
print(ids[0]);
print(ids);
print(ids.length)
list.join(delimiter);
ids.join(',');

Zápis tříd


Přístupnost vlastností tříd

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

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

void metoda(String text, int cislo) { ... }

metoda('Text', 30); 
void metoda({required String text, required int cislo}) { ... }

metoda(cislo: 30, text: 'Text'); 
metoda(text: 'Text', cislo: 30); 

Viz také: StackAcademic.com > Dart Function Parameters in Flutter.

Style: konvence pojmenování

PascalCase (UpperCamelCase)
class Customer { ... }
lowercase_with_underscores

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)
const defaultTimeout = 1000;

Více o konvencích zápisu kódu viz: Dart.dev → Style.

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje