Acercádonos a dart

of 39/39
Acercándonos a Dart Rafael Bermúdez @rafbermudez Fernando G. Pichel @fergpichel Madrid DUG http://www.meetup.com/madrid-dug
  • date post

    26-Jul-2015
  • Category

    Software

  • view

    128
  • download

    0

Embed Size (px)

Transcript of Acercádonos a dart

1. Acercndonos a Dart Rafael Bermdez @rafbermudez Fernando G. Pichel @fergpichel Madrid DUG http://www.meetup.com/madrid-dug 2. Madrid DUG Google Dart User GroupQu es Dart? Es un lenguaje de programacin desarrollado por Google en 2011 Desarrollo Web Open Source Compatible con JS Interpretado: Se ejecuta en su propia VM Estructurado Flexible Orientado a objetos 3. Madrid DUG Google Dart User GroupEn qu destaca? Legible Estructurado Fcil de mantener Programacin asncrona Rpido Modern Browser Compatible Web Components Polymer.dart 4. Madrid DUG Google Dart User GroupPolymer.dart Polymer es una implementacin del estndar HTML Web Components, un estndar que quiere revolucionar la manera en la que se desarrollan aplicaciones web en los navegadores. https://www.dartlang.org/docs/tutorials/polymer-intro Polymer custom elements Disear HTML tags para encapsular estilos, estructura y comportamientos Crear bindings bidireccionales entre Dart objects y DOM nodes Uso de Web Standars emergentes: custom elements, HTML Imports, Shadow DOM .... 5. Madrid DUG Google Dart User GroupDart Virtual Machine Dartium: Chromium + Dart VM dart2js: compilacin a Javascript Dart VM puede ejecutarse en dos modos: checked o production Por defecto arrancar en production. Se recomienda habilitar el modo checked para desarrollo y testing dart --checked test.dart 6. Madrid DUG Google Dart User GroupVelocidad 7. Madrid DUG Google Dart User GroupVelocidad 8. Madrid DUG Google Dart User GroupVelocidad 9. Madrid DUG Google Dart User GroupVelocidad 10. Madrid DUG Google Dart User GroupVelocidad 11. Madrid DUG Google Dart User GroupLibreras Gestor de paquetes Pub https://pub.dartlang.org/ Herramienta que nos permite aadir libreras. Tambin incluye comandos para crear, desarrollar y desplegar Se ocupa de resolver dependencias automticamente 12. Madrid DUG Google Dart User GroupQuin usa Dart? https://www.dartlang.org/community/who-uses-dart.html MANDRILL 13. Madrid DUG Google Dart User GroupTutoriales Avast, Ye Pirates: Write a Web App Creacin de una web app usando Dart Editor. A Tour of the Dart Language The Dart Tutorials Varios tutoriales sobre instalacin de paquetes, creacin de DOM elements, Polymer Custom Elements, Forms ... 14. Lenguaje Dart Rafael Bermdez @rafbermudez Fernando G. Pichel @fergpichel Madrid DUG http://www.meetup.com/madrid-dug 15. Madrid DUG Google Dart User GroupPor dnde empezar? Buena comunidad Buena bibliografa Documentacin oficial https://www.dartlang.org/docs/ Especificaciones del lenguaje https://www.dartlang.org/docs/spec/index.html 16. Madrid DUG Google Dart User GroupOrientado a objetos Basado en clases Herencia Simple Lenguaje OO Todo es un objeto Tipos primitivos => Son objetos Object = root de la jerarqua de clases El tipo de ejecucin de cada objeto es una instancia de la clase Type 17. Madrid DUG Google Dart User GroupConcurrencia Single threaded Isolate Unidad de concurrencia Tiene su propia memoria y control de thread No hay estado compartido entre isolates Se comunican entre ellos mediante paso de mensajes 18. class Persona { // Variables de instancia. String nombre; // variable inicializa a null. String apellidos; // variable inicializa a null. num edad; // variable inicializa a null. num hijos = 0; // variable inicializa a 0. // Constructor. Persona() {} // Mtodo que lanza un saludo de presentacin void presenta() => print('Hola me llamo $nombre'); } Madrid DUG Google Dart User GroupClases 19. class Programador extends Persona implements DichoStarWars { String lenguajeFavorito = Dart; // Mtodo que sobreescribe el saludo de presentacin @override void presenta() => print('Hola mundo soy $nombre'); // Mtodo que implementa el dichoStarWars de la interfaz void dichoStarWars() => print("que la fuerza te acompae"); } Madrid DUG Google Dart User GroupHerencia e Interfaces 20. Madrid DUG Google Dart User Groupmbito (Contexto) mbito de una declaracin Lexical scoping (o esttico) Lexical scoping tiene preferencia sobre inheritance scope 21. Madrid DUG Google Dart User GroupPrivacidad 2 niveles de privacidad Pblico / Privado Por defecto siempre se utiliza el modo pblico Sintaxis del nivel privado Mejora la documentacin del cdigo String nickname; // pblico String _nombreReal; // privado 22. Madrid DUG Google Dart User GroupVariables Estticas (Lazy) o dinmicas Finales o mutables final => Se inicializa una vez const => cte. en tiempo de ejecucin implicitamente finales 23. Madrid DUG Google Dart User GroupTipos de datos * Los tipos de datos primitivos tambin son objetos String bool num DateTime int Set double Map 24. Madrid DUG Google Dart User GroupOperadores Tipos de operador Aritmticos Asignacin Test de tipado De Bits Condicionales De igualdad y relacionales 25. Operadores de test de tipado numerito as num; // Casting de tipos var IsNum = numerito is num; // Verdadero si el objeto es del tipo indicado var IsNotNum= numerito is! num; // Falso si el objeto es del tipo indicado Madrid DUG Google Dart User GroupOperadores II 26. void saludaMeetup(String nombreMeetup) { print('Bienvenidos al meetup de ${nombreMeetup}'); } Madrid DUG Google Dart User GroupFunciones 27. Madrid DUG Google Dart User GroupFunciones II Parm. opcionales por posicin void saludaMeetup (String nombreMeetup, [String siglas, num miembros]) {...} Parm. opcionales por nombre void saludaMeetup ({String nombreMeetup, String siglas, num miembros}) {...} Valores predeterminados void saludaMeetup ([String nombreMeetup = 'MadridDUG']) {...} Valores de retorno return x todas las funciones devuelven un valor de un tipo concreto. 28. Madrid DUG Google Dart User GroupLooping Bucle for While y do while Switch *Control: break y continue Iterables lista.forEach((item){...}); for(item in lista) {...} *Se puede iterar a travs de list, map y set 29. var resultado; try { // Intento descifrar una contrasea resultado = rompePassWord(password); } on Exception catch(e) { // Se produce un error al procesar el descifrado. resultado = 'No se ha resuelto !'; } finally { // Muestro la respuesta al usuario. print(resultado); } Madrid DUG Google Dart User GroupExcepciones 30. Madrid DUG Google Dart User GroupExcepciones II dart:core => Exception y Error para el manejo Permite crear tus propias excepciones Mecanismos de manejo throw on /catch finally Si no se captura, el isolate se termina 31. Anlisis esttico => Dart analyzer Unit testing void main() { test('QuickSort', () => expect(quickSort([5, 4, 3, 2, 1]), orderedEquals([1, 2, 3, 4, 5])) ); * https://www.dartlang.org/docs/#testing Madrid DUG Google Dart User GroupTesting 32. Madrid DUG Google Dart User GroupLibreras Permiten crear cdigo modular Compartibles y reutilizables Fichero librera library mylibraryname; Fichero que la utiliza import "path/to/mylibraryname.dart"; 33. Madrid DUG Google Dart User GroupLibrerias II Algunas libreras interesantes dart:async dart:indexed_db dart:collection dart:io dart:convert dart:isolate dart:core dart:js dart:html dart:math 34. Bonus Rafael Bermdez @rafbermudez Fernando G. Pichel @fergpichel Madrid DUG http://www.meetup.com/madrid-dug 35. Compatible con HTML5 Simplifica la interaccin Manejo estructurado del DOM Bsqueda de elementos querySelector() y querySelectorAll() devuelven colecciones de datos nativas de Dart Constructores para elementos del DOM new DivElement() Madrid DUG Google Dart User GroupDart y el DOM 36. import 'dart:html'; void main() { var text = document.querySelector('#sample_text_id'); text.text = 'Bienvenido a MadridDUG !'; text.lang = 'ES'; text.attributes.forEach((k, v) => print('$k: $v')); text.style.backgroundColor = '#f87c45'; } Madrid DUG Google Dart User GroupDart y el DOM II 37. Madrid DUG Google Dart User GroupFuture y Stream Apis Permite encapsular en una forma OO respuestas asncronas de manera nativa Future Object, Promesa Object // Futuros void getResult() { var xhr = HttpRequest.getString('http://www.google.es') ..then((resp) => print(resp)) ..catchError((e) => print('Error!')); } 38. Dispone de funcionalidades para la creacin de la documentacin Metaprogramacin ...etc Madrid DUG Google Dart User GroupY ... mucho ms! 39. Madrid DUG Google Dart User Group Gracias! Madrid DUG http://www.meetup.com/madrid-dug Rafael Bermdez @rafbermudez Fernando G. Pichel @fergpichel