Duvida na criação de métodos!

2 respostas
M

Como saber melhor quando determinado método é da classe ou do objeto?
Quando implemento métodos clássicos como cria um novo obj, modificar um objeto ou exibir um obj é facil detectar que é um método do obj e não da classe.
Mais quando implemento um método diferente fico sempre na duvida, por exemplo… criei um obj que nele tenho um vetor de inteiros e quero criar um método para fazer uma pesquisa neste vetor, logo implemento esse metodo como da classe (static) ou como do obj?
Em diversas vezes que vou criar métodos novos me deparo com essa duvida, queria saber uma maneira de sempre identificar com clareza se um método será da classe ou do obj.

Alguém ai pode me ajudar nessa duvida?

2 Respostas

E

Na dúvida , sempre crie o método como sendo de instância (você chamou de “do obj”) , não da classe.
Só declare um método como “static” se vir que isso é estritamente necessário.
Por exemplo, um método que cria novas instâncias dessa classe é claramente estático :slight_smile:

D

Tem que ser analisado o contexto deste método, se for um método que corresponde a classe como um todo, é ideal que seja estático, se for uma funcionalidade correspondente a uma instância do objeto, não deve ser estático, por exemplo, numa classe de exemplo, toda vez que se loga no fórum do GUJ, suponhamos que se crie um novo usuário, e quero saber também quantos usuários já foram criados, logo, para criar um usuário, tenho que ter um método não estático, no caso o construtor, mas poderia ter outros, e para pegar a contagem, não faz sentido ter um atributo do objeto, tem que se um da classe, como no exemplo abaixo:

public class UsuarioGUJ {

    private final String nome;
    private static int totalUsuarios = 0;

    public UsuarioGUJ(final String nome) {
        this.nome = nome;
        totalUsuarios += 1;
    }

    public static int getTotalUsuarios() {
        return totalUsuarios;
    } 

}
Criado 3 de abril de 2013
Ultima resposta 3 de abr. de 2013
Respostas 2
Participantes 3