3.1. Orientação à Objetos em Dart: Classes, Atributos e Objetos

Orientação à Objetos serve para organizar e simplificar a nossa programação

3.1. Orientação à Objetos em Dart: Classes, Atributos e Objetos

CLASSES

É um modelo ou um plano para um objeto, exemplificando seria uma planta para se construir uma casa. É um arquivo onde você concentra todas as características daquele objeto. No exemplo a seguir iremos criar uma classe chamada pessoa. Veja como se estrutura uma classe class NomeDaClasse {} :

class Pessoa {
}

ESTRUTURA DAS CLASSES

Atributos

Dentre dessa classe pessoa temos os atributos desta classe: nome, idade e altura. Esses atributos são as informações que o nosso objeto irá armazenar.

class Pessoa {
  // atributos
  String nome;
  int idade;
  double altura;
}

Métodos (Funções)

Agora que o objeto já está definido vamos ver o que uma pessoa é capaz de fazer, para definir suas ações as fazemos por meio de funções void que chamamos, quando estão dentro das classes, de métodos:

class Pessoa {
  // atributos
  String nome;
  int idade;
  double altura; 

  // métodos
  void dormir(){
    print("$nome está dormindo");
  }
}

OBS. Na Aula anterior, sobre funções, nós aprendemos que void é uma função que não retorna nada para quem a requisita.

Objetos

Podemos criar objetos por meio desta classe, ou seja, declará-los ou instanciar nossas classes, portanto, hipoteticamente falando seria "criar as pessoas". Para instanciá-las, fazemos da seguinte forma:

Pessoa pessoa1 = new Pessoa(); 

Aplicando-a:

class Pessoa {
  String nome;
  int idade;
  double altura; 

  void dormir(){
    print("$nome está dormindo");
  }
}

void main(){
  // criando um objeto, pode começar com var, se quiser
  // aqui instanciamos nossa pessoa
  Pessoa pessoa1 = new Pessoa(); 
  // em Dart o new é opcional, pode-se colocar ou não, na dúvida coloca para ficar claro que está criando uma nova pessoa
}

Primeiro criamos o tipo, ou seja, é do tipo "Pessoa", depois o nome "pessoa1", depois recebe um novo objeto do tipo Pessoa(); que seria um instanciamento de um objeto (é exatamente igual a declarar uma variável String algumacoisa = "").

Resumindo estamos criando a pessoa1. Se dermos um print nessa pessoa1, irá aparecer "Instance of 'Pessoa'", ou seja, quer dizer que agora o pessoa1 é uma instância da classe Pessoa.

Desta forma, já que criamos uma pessoa (pessoa1) vamos declarar os dados desta pessoa.

void main(){
  Pessoa pessoa1 = new Pessoa();
  
  // acessando os atributos
  pessoa1.nome = "Diego";
  pessoa1.altura = 1.70;
  pessoa1.idade = 30;

  print(pessoa1.nome);
}

Coloca-se o "." para acessar tal atributo. Pode-se, portanto, criar outra pessoa (pessoa2) que será criada da mesma fonte, mas com dados diferentes.

Chamando um método

Para chamar um métoto utilizamos também o "." e depois o nome do método, conforme abaixo:

class Pessoa {
  String nome;
  int idade;
  double altura; 

  void dormir(){
    print("$nome está dormindo");
  }

  void aniver(){
    idade++;
  }
}

void main(){
  Pessoa pessoa1 = new Pessoa();
  pessoa1.nome = "Diego";
  pessoa1.altura = 1.70;
  pessoa1.idade = 30;

  print(pessoa1.nome);
  pessoa1.aniver();
  print(pessoa1.idade);
}

No comando acima irá retornar a idade conforme a função aniver();, ou seja irá retornar o número 31 (30+1).

OBS. caso queira colocar uma atributo privado, basta colocar um underline antes do atributo que deseja ser privado, exemplo, _altura = 1.70;

Fica claro que o código fica muito estruturado, no próximo artigo iremos apreder sobre os construtores, clique aqui para iniciar.