Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dart Language - Primeiro TechTalk do GDG Feira ...

Dart Language - Primeiro TechTalk do GDG Feira de Santana

Slides da apresentação sobre Dart que fiz no primeiro meetup do GDG de Feira de Santana.

These are the slides about Dart that I presented at the first GDG Feira de Santana meetup.

Los slides que usé en mi presentación sobre Dart en el primer meetup del GDG de Feira de Santana.

Marlon S. Carvalho

August 17, 2015
Tweet

More Decks by Marlon S. Carvalho

Other Decks in Technology

Transcript

  1. class GDGFeiraDeSantana {
 String name;
 
 GDGFeiraDeSantana(this.name);
 
 void sayHello()

    {
 print("Oi $name!");
 }
 }
 
 main() {
 var gdg = new GDGFeiraDeSantana("Marlon");
 gdg.sayHello();
 }
  2. main() {
 var teste = "String";
 dynamic teste2 = "String";


    String teste3 = "String";
 Object teste4 = "String";
 }
  3. void comprarCerveja(int quantidade) {
 
 pagarCerveja() {
 print("Paguei!");
 }
 


    beberCerveja() {
 print("Bebi!");
 }
 
 pagarCerveja();
 beberCerveja();
 print("Tô bebo!");
 }
  4. void main() {
 
 void endereco({rua: "Não informado.", numero: -1})

    {
 print("Sua rua é ${rua}, ${numero}");
 }
 
 endereco(rua: "Rua 1", numero: 25);
 }
  5. main() {
 var string1 = "Marlon";
 var naaaaao = "Olá

    " + string1;
 var string2 = "Olá $string1";
 
 print(string2);
 }
  6. main() {
 num numero = 1;
 int numeroInteiro = 1;


    double numeroFlutuante = 2.0;
 String string = "String";
 bool booleano = true;
 List lista = [];
 Map mapa = {};
 Symbol simbolo = #simbolo;
 }
  7. main() {
 var variavel = 1;
 
 if(variavel) {
 print("Eu

    sou Javascript!");
 }
 
 variavel = true;
 if(variavel) {
 print("Eu sou Dart!");
 }
 }
  8. class JeitoBaiano {
 String pireAi() {
 return "Tô pirado!";
 }


    }
 
 class JeitoPaulista {
 String falaMano() {
 return "Poha mano!";
 }
 }
 
 class Indeciso extends Object with JeitoBaiano, JeitoPaulista {
 }
 
 void main() {
 var indeciso = new Indeciso();
 print(indeciso.falaMano());
 print(indeciso.pireAi());
 }
  9. class Cozinheiro {
 void cozinhar() {
 print("Cozinhando!");
 }
 }
 


    class Marlon implements Cozinheiro {
 void cozinhar() {
 print("Marlon Cozinhando!");
 }
 }
 
 main() {
 var marlon = new Marlon();
 marlon.cozinhar();
 }
  10. abstract class Doido {
 void ficarDoidao();
 }
 
 class Marlon

    extends Doido {
 void ficarDoidao() {
 print("Dorgas manolo!");
 }
 }
 
 main() {
 var marlon = new Marlon();
 marlon.ficarDoidao();
 }
  11. class NumeroTranscedental {
 double valor;
 
 NumeroTranscedental(this.valor);
 
 NumeroTranscedental operator

    +(NumeroTranscedental doidao) {
 return new NumeroTranscedental(double.INFINITY);
 }
 
 String toString() {
 return valor.toString();
 }
 }
 
 main() {
 NumeroTranscedental numero1 = new NumeroTranscedental(1.0);
 NumeroTranscedental numero2 = new NumeroTranscedental(2.0);
 
 print(numero1 + numero2);
 }
  12. class Automatico {
 int atributo1;
 }
 
 class Override {


    int get atributo1 { return 1; }
 set atributo1(int a) { }
 }
 
 main() {
 var a = new Automatico();
 a.atributo1 = "Teste";
 
 var o = new Override();
 o.atributo1 = "Teste";
 }
  13. class Private {
 String _atributo1 = "Atributo 1";
 String _atributo2

    = "Atributo 2";
 
 Private(String a1, String a2): _atributo1 = a1, _atributo2 = a2;
 }
  14. class Generico<T> {
 T atributo;
 }
 
 main() {
 var

    g = new Generico<String>();
 g.atributo = "Marlon";
 }
  15. import 'dart:html';
 
 void main() {
 querySelector('#element').text = 'Olá, GDG

    Feira de Santana!';
 } <!DOCTYPE html>
 <html>
 <head>
 <title>Feira de Santana</title>
 </head>
 <body>
 <p id="element"></p>
 <script type="application/dart" src="main.dart"></script>
 <script src="packages/browser/dart.js"></script>
 </body>
 </html>
  16. import 'package:polymer/polymer.dart';
 import 'dart:html';
 
 @CustomTag('click-counter')
 class ClickCounterElement extends PolymerElement

    {
 @observable int count = 0;
 
 ClickCounterElement.created() : super.created();
 
 void increment(Event e, var detail, Node target) {
 count += 1;
 }
 }
  17. 
 app.post('/process-file', function(req, res) {
 var inputFile = 'input.txt';
 var

    outputFile = 'output.txt';
 
 fs.readFile(inputFile, function(err, data) {
 if (err) return res.status(500).send(err);
 process1(data, function(err, data) {
 if (err) return res.status(500).send(err);
 process2(data, function(err, data) {
 if (err) return res.status(500).send(err);
 process3(data, function(err, data) {
 if (err) return res.status(500).send(err);
 fs.writeFile(outputFile, data, function(err) {
 if (err) return res.status(500).send(err);
 res.status(200).send('Cabô');
 });
 });
 });
 });
 });
 }); });
  18. import 'dart:async';
 
 class MaisTarde {
 
 Future<String> esperaUmPouco(){
 //

    Imagine que esse código vai demorar pacas pra acabar!
 return new Future.value("Hello Marty!");
 }
 
 }
 
 main() {
 var maisTarde = new MaisTarde();
 var esperando = maisTarde.esperaUmPouco();
 esperando.then((String s) {
 print(s);
 });
 }
  19. import 'dart:async';
 
 class MaisTarde {
 
 Future<String> esperaUmPouco() async

    {
 // Imagine que esse código vai demorar pra acabar!
 return "Hello Marty!";
 }
 
 }
 
 main() async {
 var maisTarde = new MaisTarde();
 print(await maisTarde.esperaUmPouco()); print("Teste!");
 }
  20. import 'dart:async';
 
 class MaisTarde {
 
 Future<String> esperaUmPouco() async

    {
 // Imagine que esse código vai demorar pra acabar!
 return "Hello Marty!";
 }
 
 }
 
 main() {
 var maisTarde = new MaisTarde();
 Future<String> future = maisTarde.esperaUmPouco();
 future.then((String s) {
 print(s);
 print("Teste!");
 });
 }
  21. ZONES? PRA QUE? • Exceções não pararem sua aplicação subitamente.

    • Dados associados a uma zona são "threadsafe". • Executar ações toda vez que uma Zone for iniciada e/ou finalizada.
  22. OBJECT ORIENTED OO vem desde o berço e é bem

    estruturado. OO em JS é confuso!
  23. DART VS ECMA6 ECMA6 precisa manter compatibilidade e por isso

    mantém os mesmos antigos problemas do Javascript!
  24. FIM