Promoção no ar
Tempo restante da oferta:
13 Horas
43 Min
22 Seg
Assinar →

Orientação a objetos em Dart

Aprenda Orientação a objetos em Dart e como trabalhar com classes, atributos, métodos e objetos em Dart e aumente seus conhecimentos!

Ariel Sardinha 4 anos atrás

O paradigma de orientação a objetos em Dart traz boas vantagens, como a reutilização, a legibilidade e manutenibilidade do código, a natural modularização e a produção de código mais acessível, já que as estruturas criadas geralmente representam aspectos também existentes no mundo real.

Quando lidamos com o paradigma orientado a objetos, acabamos criando diversas unidades de software através de estruturas chamadas classes. A partir destas classes, podemos criar estruturas chamadas objetos, estruturas estas que interagem entre si. Esse é o motivo pelo qual o paradigma é chamado de orientação a objetos: todas as interações necessárias para que o software funcione ocorrem através de mensagens e comandos trocados entre estes objetos.

Caso você esteja iniciando e não conheça muita coisa sobre orientação a objetos, indico primeiramente a leitura do artigo “Os pilares da orientação a objetos”.

Curso Dart - Orientação a Objetos Conhecer o curso

Classes

Quando falamos sobre orientação a objetos em Dart, as classes são uma das estruturas essenciais.

Uma classe funciona como um “molde” para definição de outras estruturas. Classes, geralmente, são compostas pelo agrupamento de atributos ou características, e métodos ou ações. Uma classe define agrupamentos de atributos e métodos correlacionados e podem ser reaproveitados.

Por exemplo, imagine que você precisa criar uma aplicação para fazer a gestão de uma frota de veículos. Nessa aplicação, com certeza será necessário manipular informações de carros. E todos os carros geralmente possuem um “molde” padrão com características e ações que são comuns a todos os carros.

Todos os carros, por exemplo, possuem características como:

  • Modelo;
  • Marca;
  • Fabricante;
  • Chassi.

E possuem ações em comum, como:

  • Ligar;
  • Acelerar;
  • Frear;
  • Desligar.

Dessa maneira, poderíamos criar uma estrutura de código que representasse esse formato padrão para todos os veículos, agrupando justamente estas características e ações. E é exatamente essa estrutura que é uma classe. Nesse caso, poderíamos ter uma classe Carro, que define as características e ações comuns para todos os carros.

Declarando classes

No Dart, podemos declarar uma classe da seguinte maneira:

class Carro {
  String modelo;
  String marca;
  String chassi;
  String fabricante;

  Carro({
    required this.modelo,
    required this.marca,
    required this.chassi,
    required this.fabricante,
  });

  void ligar() {
    print("Carro ligado!");
  }

  void desligar() {
    print("Carro desligado!");
  }

  void acelerar() {
    print("Carro acelerando...");
  }

  void frear() {
    print("Carro freando...");
  }
}

Agora, caso você tenha notado a falta da palavra public, por exemplo, isso é porque o Dart não necessita dessas palavras para definir valores públicos, eles já são públicos por padrão. Caso você desconheça essa palavra public, muito utilizado em classes, seu funcionamento é abordado no artigo “Os pilares da orientação a objetos” que citamos no começo deste artigo.

Como no exemplo acima, classes geralmente possuem duas sessões distintas. Uma primeira parte, onde são declaradas as características (sendo tecnicamente chamadas de atributos); e uma segunda parte onde são declaradas as ações previstas por aquela classe (sendo tecnicamente chamadas de métodos).

Uma classe não é obrigada a ter às duas sessões: podemos ter classes que possuem somente atributos, podemos ter classes que possuem somente métodos e podemos ter classes que possuem ambas as sessões. Tudo vai depender da necessidade.

Objetos

Classes existem para definirmos os nossos moldes, ou seja, para definirmos o formato de estruturas que nosso código irá manipular. Mas, elas servem somente para ser moldes. Se quisermos as utilizar, precisamos colocar algo e criar uma estrutura que seja como esse molde. E é nesse momento que entram em cena os objetos.

Os objetos são estruturas criadas a partir das classes. Um objeto, quando criado a partir de uma determinada classe, assume que irá possuir os mesmos atributos e os mesmos métodos definidos pela classe. Uma classe pode dar origem a vários objetos distintos entre si que compartilham o mesmo molde.

Declarando objetos

No Dart, objetos podem ser declarados da seguinte forma:

void main(List<String> args) {
  Carro corsa = Carro(
    modelo: 'Corsa',
    marca: 'Chevrolet',
    chassi: 'ABC123',
    fabricante: 'Chevrolet',
  );

  corsa.ligar();
  corsa.acelerar();
  corsa.frear();
  corsa.desligar();

  Carro gol = Carro(
    modelo: 'Gol',
    marca: 'Volkswagen',
    chassi: 'DEF456',
    fabricante: 'Volkswagen',
  );

  gol.ligar();
  gol.acelerar();
  gol.frear();
  gol.desligar();
}

Neste exemplo, usamos a nossa classe Carro para criar dois objetos a partir dela: os objetos gol e corsa.

No exemplo acima, ainda podemos afirmar que temos duas variáveis do tipo Carro: gol e corsa; embora, em termos técnicos, o correto é dizer que temos duas instâncias da classe Carro: gol e corsa, objetos também são chamados de instâncias de uma classe. Porém, em termos práticos, não há problema em dizer que temos uma variável da classe.

Objetos são importantes por algumas razões, logo aqui, podemos ver algumas características importantes:

  • Objetos definem instâncias de classes, o que nos permite usufruir do molde de atributos e métodos definidos por uma classe;

  • Objetos guardam estado de maneira segregada: veja que o objeto corsa tem suas características definidas de maneira própria, como modelo, marca, chassi e fabricante. O objeto gol também tem as mesmas características, mas definidas conforme o objeto gol. Embora ambos os objetos venham da mesma classe, eles têm seus próprios valores de atributos, valores estes atrelados a cada instância (no caso, as instâncias gol e corsa).

Curso Dart - Fundamentos Conhecer o curso

Métodos

Partindo do mesmo código acima, temos os métodos. Os métodos são comportamentos e ações que os objetos podem ter.

No código acima, os objetos gol e corsa, por serem do “molde” Carro, adquirem os atributos e métodos definidos pela classe Carro e passam a ter as características como o modelo, marca e chassi; e ganham as ações definidas pela classe Carro, como ligar, desligar e acelerar.

 void Ligar() {
    print("Carro ligado!");
  }

Quando temos objetos, seus atributos (ou características) e métodos (ou ações) são acessados através do ponto “.”. Por exemplo: se eu tenho um Carro chamado corsa e quero acessar seu atributo modelo, devo escrever um código como corsa.modelo. A mesma coisa vale para métodos: se eu quiser acessar o método ligar do objeto corsa, devo escrever o código corsa.ligar().

Conclusão

Com isso tivemos uma breve introdução sobre como é implementada a orientação a objetos em Dart. Esse é um assunto bastante denso e ainda existem muitos outros conceitos importantes em relação à orientação a objetos, conceitos como encapsulamento, herança, polimorfismo, classes abstratas, interfaces e entre outros, abordados com mais detalhes no artigo sobre orientação a objetos já citado nesse artigo.

Por fim, caso queira aprender mais sobre Orientação a Objetos no Dart saiba que aqui na TreinaWeb temos o curso Dart - Orientação a Objetos que possui 02h10 de vídeos e um total de 18 exercícios. Conheça também nossos outros cursos de Dart.

Veja quais são os tópicos abordados durante o curso de Dart - Orientação a Objetos:

  • O que são classes e objetos e como o Dart lida com esses conceitos;
  • Como criar métodos que recebem (ou não) parâmetros em seu escopo;
  • Como criar construtores padrões e nomeados para cada classe;
  • Como o Dart lida com o conceito de Herança;
  • Os tipos de visibilidade existentes no Dart e a importância do encapsulamento para o desenvolvimento de um software;
  • Como trabalhar com classes e métodos abstratos;
  • Como trabalhar com Interface e Mixins.
Continue lendo

Artigos relacionados

Um ano de acesso total para você viver de programação.

Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro console.log ao mercado de trabalho.

  • 1 ano de acesso a todos os cursos
  • Cursos novos toda semana
  • Suporte direto com professores
  • Plano de carreira personalizado
  • Certificados digitais inclusos
  • Aplicativos para Android e iOS, com acesso offline
Garantia incondicional de satisfação

Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

Acesso completo a todos os cursos e dezenas de Formações.

12 meses
Economize R$ 840,00 54% OFF

de 12x R$ 129,00 por apenas

12x R$ 59,00

sem juros no cartão de crédito ou R$ 599,00 à vista

Oferta termina em 13h 43min 22s

  • Acesso imediato e ilimitado durante 1 ano.
  • Plano de carreira personalizado.
  • Suporte direto com professores.
  • E muito mais!
Matricule-se agora