SóProvas


ID
147400
Banca
FCC
Órgão
SEFAZ-SP
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

Sobre a visibilidade dos métodos na orientação a objetos considere:

I. Os métodos públicos de uma classe definem a interface da classe.
II. Os métodos privativos de uma classe não fazem parte da interface da classe.
III. O nome dos métodos é a informação reconhecida como a assinatura dos métodos.

Está correto o que consta APENAS em

Alternativas
Comentários
  • O item III está errado porque a assinatura do método é feita através do nome do método e de seus parâmetros.
  • Os métodos definem as funcionalidades das classes, ou seja, o que será possível fazer com objetos dessa classe.  Cada método é especificado por uma assinatura, composta por um identificador para o método (o nome do método) e o tipo para o valor de retorno e sua lista de argumentos, sendo cada argumento identificado por seu tipo e nome. 
    Através do mecanismo de sobrecarga (overloading), dois métodos de uma classe podem ter o mesmo nome, desde que suas assinaturas sejam diferentes.  Tal situação não gera conflito pois o compilador é capaz de detectar qual método deve ser escolhido a partir da análise dos tipos dos argumentos do método. Neste caso, diz-se que ocorre a ligação prematura (early binding) para o método correto.
    O modificador de visibilidade pode estar presente tanto para atributos como para métodos.  Em princípio, três categorias de visibilidade podem ser definidas:
    * Público, denotado em UML pelo símbolo +:  nesse caso, o atributo ou método de um objeto dessa classe pode ser acessado por qualquer outro objeto (visibilidade externa total);
    * Privativo, denotado em UML pelo símbolo -:  nesse caso, o atributo ou método de um objeto dessa classe não pode ser acessado por nenhum outro objeto (nenhuma visibilidade externa);
    * Protegido, denotado em UML pelo símbolo #:  nesse caso, o atributo ou método de um objeto dessa classe poderá ser acessado apenas por objetos de classes que sejam derivadas dessa através do mecanismo de herança.
  • Sendo mais objetivo:

    O item III está errado, pois diz que o nome do método é a sua assinatura, quando está é composta por: nome, quantidade, tipo e ordem dos parâmetros. 

    Quanto aos itens I e II, temos assuntos relacionados tipicamente a propriedade chamada Encapsulamento em OO. Ver explicação teorica abaixo:

    Em linguagens orientadas a objetos, é possível encapsular o estado de um objeto. Em termos práticos, isso se realiza limitando o acesso a atributos de uma classe exclusivamente através de seus métodos. Para isso, as linguagens orientadas a objeto oferecem limitadores de acesso para cada membro de uma classe.

    Tipicamente os limitadores de acesso são:

    • público (public) - o membro pode ser acessado por qualquer classe. Os membros públicos de uma classe definem sua interface (esse ponto garante que o item I esteja correto. E por analogia, garante que o item II, que trata de métodos privados, não fazem parte da sua interface.)
    • protegido (protected) - o membro pode ser acessado apenas pela própria classe e suas sub-classes
    • privado (private) - o membro pode ser acessado apenas pela própria classe
    Espero ter ajudado!