Um estudo sobre Dart, a linguagem do Google

Um estudo sobre Dart, a linguagem do Google

Se você começou a estudar um pouco sobre o Flutter, provavelmente deve ter trabalhado um pouco com o Dart… Se você ainda não mexeu com Flutter, deve ter ouvido falar um pouco sobre o Dart, já que várias grandes empresas, como o Nubank, estão começando a migrar suas aplicações para esta linguagem. Porém, o que afinal de contas é o Dart?

O que vem a ser o Dart?

O Dart é uma linguagem de programação fortemente tipada inicialmente criada pela Google em 2011. A missão inicial do Dart era substituir o JavaScript para desenvolvimento de scripts em páginas web. Porém, com a evolução da linguagem e com o passar dos anos, ela hoje pode ser considerada uma linguagem multi-paradigma, embora a linguagem apresente fortes estruturas típicas de linguagens orientadas a objeto.

Hoje, sabemos que o Dart não obteve muito sucesso em sua missão inicial em substituir o JavaScript nos navegadores. Porém, o desenvolvimento e posterior sucesso do Flutter, que é fundamentado no Dart, fez com que a linguagem voltasse à tona, atraindo a atenção de muitos desenvolvedores. Algumas características da linguagem são:

  • A sintaxe é C-like, portanto, se você programa em Java, C#, PHP ou Javascript, você não terá dificuldades em aprender a linguagem;
  • Segue o paradigma orientado a objetos;
  • Todos os objetos herdam da classe Object;
  • Fortemente tipada, mas não é necessário colocar um tipo, pois Dart consegue inferir os tipos;
  • No Java e C# você usa a palavra reservada private, enquanto que no Dart basta colocar um underline (_) no início do nome de um atributo, método ou classe para torná-lo privado.
  • Dart pode ser compilada em ahead-of-time (AOT) e just-in-time (JIT). Compilação ahead-of-time é quando o código é compilado diretamente para ARM nativo, o que possibilita a performance de uma aplicação nativa. Just-in-time compila o código diretamente no device, com a aplicação em execução, o que permite um retorno em tempo real da alteração e aumenta a velocidade do ciclo de desenvolvimento. Este ponto é chamado de hot-reload.

Variáveis

Variável de forma bem resumida, é um local que você pode armazenar temporariamente alguma informação. Os principais tipos de variáveis são:

Vamos ver algumas formas de usar essas variáveis

Não foi fornecido texto alternativo para esta imagem

Operações

Os tipos int, double e num (pode ser inteiro ou ponto flutuante) fornecem diversos métodos e propriedades que podem ser utilizados para a transformação e checagem de dados. Eles também dispõem de capacidades para expressões utilizando os operadores + (adição), — (subtração), * (multiplicação), / (divisão) e % (resto da divisão).

Não foi fornecido texto alternativo para esta imagem
Não foi fornecido texto alternativo para esta imagem

Operadores relacionais

Os seguintes operadores podem ser usados para comparações no Dart. O resultado de cada expressão é sempre um bool, o que significa que é true ou false.

Não foi fornecido texto alternativo para esta imagem

Condicionais

Geralmente quando estamos programando, sempre precisamos tomar decisões, para isso podemos utilizar condicionais. Vamos dar uma olhada nelas

Não foi fornecido texto alternativo para esta imagem

Repetições

Quando precisamos realizar repetições, podemos utilizar os comandos FOR, WHILE, DO/WHILE ou FOREACH (uso junto com coleções).

Não foi fornecido texto alternativo para esta imagem

A saída deste programa são os valores 0, 1, 2, 3, 4 para cada tipo de repetição executada.

Funções

Na maioria dos códigos existem trechos repetidos, para evitar isso criamos funções. Existem algumas formas para criarmos as funções, veja o código a seguir:

Não foi fornecido texto alternativo para esta imagem
O uso do tipo de retorno nas funções utilizando Dart é opcional, você não precisa informar, mas recomendo colocar, pois isso facilita a leitura do código.


PROGRAMAÇÃO ORIENTADA A OBJETOS COM DART

A Programação Orientada a Objetos foi criada por Alan Kay, autor da linguagem Smalltalk. Antes mesmo da criação Orientada a Objetos, já existiam algumas aplicações, neste caso da linguagem Simula 67, criada por Ole Johan Dahl e Kristen Nygaard em 1967.

Segue um vídeo legal, para quem desconhece os termos ligados a Programação Orientada à Objetos (POO).

Classes, Atributos, Construtores e Objetos

  • Objetos: Um objeto é uma implementação de Tipos Abstratos de Dados (TAD’s) que encapsula dados e operações. Todo objeto tem um estado, um comportamento e uma identidade.
  • Classes: Classe é uma abstração que define um tipo de objeto e o que objetos desse determinado tipo tem dentro dela (atributos) e também que tipo de ação ele é capaz de executar (métodos).
  • Atributos: São características que os objetos possuem. Ao definir um atributo sempre é passado nome e o que irá guardar, ou seja, qual tipo de dado que ele vai armazenar, exemplo: cor do olho, altura.
  • Construtores: Método que inicializa o estado de um objeto.
Não foi fornecido texto alternativo para esta imagem

Métodos

São ações que os objetos possuem. Geralmente todo objeto possui algum tipo de ação e essas ações são as funcionalidades de nosso objeto, exemplo: somar, dividir, subtrair.

Não foi fornecido texto alternativo para esta imagem

Getters e Setters

Muitas das vezes nós não queremos que alguns atributos não sejam acessíveis por fora, por questões de segurança (segundo o paradigma orientado a objetos, nenhum atributo poderia ser acessado diretamente). Parar criar um atributo ou método privado, basta colocar um “_” à frente do atributo.

Assim, será possível acessar o atributo _nome, _peso e _altura através do get para ler o valor e através do set para modificar o valor.

Não foi fornecido texto alternativo para esta imagem

Herança, Sobrescrita de métodos e Classes Abstratas

  • Herança: A herança proporciona o reuso de software, quer dizer: novas classes são criadas a partir de outras já existentes, absorvendo atributos e comportamentos e adicionando os seus próprios;
  • Polimorfismo (sobrescrita de método): Capacidade de reescrever um método da classe pai (utilizado juntamente com a herança);
  • Métodos abstratos: Uma classe abstrata normalmente possui métodos abstratos. Esses métodos são implementados nas suas classes derivadas (filhas) concretas com o objetivo de definir o comportamento específico. O método abstrato define apenas a assinatura do método e, portanto, não contém código. Vale ressaltar, que uma classe abstrata não pode ter uma instancia.
Não foi fornecido texto alternativo para esta imagem


Entre para ver ou adicionar um comentário

Outros artigos de Gabriela Pereira dos Santos

  • Com licença senhor. Tem um minuto para ouvir a palavra do Flutter ? - Web, Desktop, Null Safety e muito mais!

    Com licença senhor. Tem um minuto para ouvir a palavra do Flutter ? - Web, Desktop, Null Safety e muito mais!

    Hoje aconteceu o Flutter Engage, o evento focado em anunciar as novidades do Flutter e Dart. E para celebrar a minha…

    7 comentários
  • CI/CD

    CI/CD

    Integração contínua (CI) e Entrega contínua (CD) são essencialmente dois processos diferentes que trabalham com o mesmo…

  • Amazon EC2

    Amazon EC2

    Para entender o valor do EC2, você precisa entender o que existia antes de este serviço existir. No passado, as…

  • Provider - Flutter

    Provider - Flutter

    O Flutter é uma estrutura declarativa. Isto é, diferente do framework imperativo, o Flutter não permite a alteração do…

  • Persistência de dados com Flutter

    Persistência de dados com Flutter

    Dados persistentes são muito importantes para os usuários, pois seria inconveniente para eles digitarem suas…

    7 comentários
  • E essa é a parte da minha vida, que chamo de felicidade.

    E essa é a parte da minha vida, que chamo de felicidade.

    Um filme muito bacana para aprender boas lições de vida é À Procura da felicidade, com Will Smith, o filme foi lançado…

  • Projetos ágeis com SCRUM

    Projetos ágeis com SCRUM

    Todo mundo que já trabalhou com engenheiros de software ou na indústria de tecnologia já ouviu as palavras “Agile” e…

  • Testes automatizados com Flutter & Dart

    Testes automatizados com Flutter & Dart

    Para começar a falar sobre testes, precisamos entender os tipos e quando utiliza-los. Para isso, devemos iniciar nosso…

    8 comentários
  • Programação Orientada a Objetos

    Programação Orientada a Objetos

    Um dos maiores erros de quem entra no mundo da programação é querer passar a carroça na frente dos bois. Antes de…

    4 comentários
  • The Social Dilemma

    The Social Dilemma

    “Quando algo online é gratuito, você não é o cliente; você é o produto. ” Como humanos, estamos programados para nos…

    1 comentário

Outras pessoas também visualizaram

Conferir tópicos