3.1. Orientação à Objetos em Dart: classes, atributos e objetos
CLASSES
É um modelo ou um plano para um objeto, ou seja, exemplificando seria uma planta para se construir uma casa. No exemplo a seguir iremos criar uma classe chamada pessoa. Para isso, nós começamos com class
+ o nome da classe.
class Pessoa {
}void main(){
}
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:
class Pessoa {
String nome;
int idade;
double altura; void dormir(){
print("$nome está dormindo");
}
}void main(){
// criando um objeto, pode come;car com ver
// 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.
class Pessoa {
String nome;
int idade;
double altura; void dormir(){
print("$nome está dormindo");
}
}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).
Caso queira colocar uma atributo privado, basta colocar um underline antes do atributo que deseja ser privado, exemplo, _altura = 1.70;