Ciências da computação dia 92
Entrando em POO
POO possui foco nos dados (objetos) do sistema, não em suas funções!
Classes
- Métodos e atributos que o objeto terá;
- Determina o tipo do objeto;
- Pode ser instanciado N vezes.
Objeto
- Uma instância de uma classe;
- Possui os métodos e atributos da classe encapsulado dentro dele;
- Armazena um endereço de onde ele foi instanciado.
Método
- Funções dentro da classe que manipulam os atributos.
Atributos
- Dados pertencentes à uma classe;
Método construtor
- Função que é executada assim que o objeto é instanciado;
- Em java essa função tem o mesmo nome da classe, ele também não possui tipo e no geral é public;
public class Example{
public Example(){ //construtor
Encapsulamento
- visa esconder detalhes de implementação;
- objeto deve possui uma parte privada que só pode ser acessado internamente na classe;
- a parte privada, só pode ser acessada por métodos públicos (interface) que trata a entrada antes;
- atributos, no geral, devem ser private;
- fazendo isso o objeto só se comporta de uma certa maneira, já pensada.
Sobrecarga de métodos
- uso de múltiplos métodos com o mesmo nome;
- isso é possível desde que possuam argumentos diferentes;
- se uma classe possui tipos diferentes, mesmo nome, mas argumentos diferentes, isso retorna um erro;
- Você pode ter outras funções com o nome da classe além do método construtor, basta você atribuir um tipo à função que assim ela não será mais considerada método construtor;
- Se você tiver o constructor e outra função com o nome da classe, isso não se encaixa em sobrecarga de métodos.
Quando você não adiciona public, private ou protected, o elemento é considerado "default" em java.
O default possui um comportamento um pouco mais restritivo perante o public.
o private é mais restritivo, apenas dentro da classe ele pode ser usado.
o protected faz com que algo seja visto apenas dentro do mesmo package e subclasses.
private e protected, geralmente, não são usados em constructors.
se você tiver fazendo uma função para sua classe, e o parâmetro possui o mesmo nome de um atributo, se você fizer
public void test(int a){
a = a;
}
a variável que o java se referirá é a "mais próxima", ou seja a variável local. Para fazer da maneira correta use o this
public void test(int a){
this.a = a;
}