Quando trabalhamos com programação no dia a dia, desenvolvemos quase que um “olho clínico” para a leitura e entendimento do código fonte. Em linguagens como o Java, que possui uma comunidade de desenvolvedores e usuários bastante ativa, possuem convenções de como definir artefatos de código, como por exemplo:
- Todo nome de classe deve ser iniciado com a primeira letra maiúscula (ex. String);
- Todo nome de método deve ser escrito em minúsculo, mas quando se tem uma nova palavra deve-se iniciá-la com letra maiúscula: (ex. abrirPorta() );
- Atributos devem seguir a mesma lógica do nome dos métodos;
Com isso é fácil analisar o código 1, a seguir:
Aluno aluno = new Aluno();
aluno.setNome(“Nome do Aluno”);
Facilmente se percebe que “Aluno” está relacionado a uma classe, “aluno” a uma instancia da classe “Aluno” e “setNome(“Nome do Aluno”)” corresponde a um método.
Vamos analisar o código 2:
int valor = Integer.parseInt(“10”);
Verificamos que “valor” é um atributo do tipo int (inteiro), “Integer” é uma classe e “parseInt” é um método da classe Integer. Até aqui tudo certo, mas vamos observar a diferença entre o acesso ao método do código 1 e do código 2.
No caso do código 1, eu tenho uma instancia de uma classe e faço o acesso ao método a partir da referência da instância “aluno.setNome()”, já no código 2 eu estou acessando um método sem ter uma instância, fazendo o acesso direto pela classe: “Integer.parseInt()”, como isso é possível? Justifique a sua resposta.
Além do ponto levantado no parágrafo acima, apresente exemplos de implementação de modificadores de acesso de classe e modificadores de acesso de métodos e atributos, justificando cada modificador.
Observações:
- Fique à vontade para pesquisar em livros da área e sites especializados, mas a resposta deve ser com suas palavras e não COPIADAS.
- Não se esqueça de incluir as referências das quais retirou as informações.
- Plágios e cópias, serão penalizadas com nota ZERO.
Soluções para a tarefa
Isso é possível, pois o o método parseInt da classe Integer, é um método estático, isso significa que não é preciso criar uma instância dessa classe para poder usar o método.
Exemplos de modificadores de acesso de classe:
- public: classes que são definidas como públicas, pode ser acessado por qualquer classe ou método.
- protected: Classes protegidas pode ser acessado pela classe do mesmo pacote, ou por uma subclasse desta classe.
- private: A classe, métodos ou variáveis privadas definidas como privadas pode ser acessado apenas dentro da classe de origem.
- "nada": Só podem ser acessados apenas no mesmo pacote.
Exemplos de modificadores de acesso de métodos e atributos:
- public: métodos e atributos que são definidas como públicas, pode ser acessado por qualquer classe ou método a partir de um instância da classe pai ou dentro da classe pai.
- public static: métodos e atributos que são definidas como públicos e estáticos, pode ser acessado por qualquer classe ou método e não dependem de uma instância.
- protected: Classes protegidas pode ser acessado pela classe do mesmo pacote, ou por uma subclasse desta classe.
- private: A classe, métodos ou variáveis privadas definidas como privadas pode ser acessado apenas dentro da classe de origem a partir.
- private static: A classe, métodos ou variáveis privadas definidas como privados e estáticos pode ser acessado apenas dentro da classe de origem e não dependem de uma instância.
- "nada": Só podem ser acessados apenas no mesmo pacote.