SóProvas


ID
142273
Banca
CESGRANRIO
Órgão
BNDES
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

Analise as informações que se seguem, relacionadas aos conceitos de Orientação a Objetos (OO).

I - O conceito de herança possibilita a especialização de comportamentos pré-existentes em classes ancestrais.
II - Para que um método seja ativado num objeto, uma mensagem não precisa necessariamente ter uma referência explícita a ele, se o objeto default da classe correspondente estiver adequadamente configurado.
III - Uma das desvantagens da herança é a criação de dependência entre as classes envolvidas.
IV - De acordo com a ideia do encapsulamento, é desejável, do ponto de vista de um objeto, que seus atributos internos estejam protegidos contra modificações diretas e que o acesso seja realizado por meio de métodos específicos (setters e getters).
V - Polimorfismo está relacionado à vinculação dinâmica de mensagens e sobrescrita de métodos, sendo que o método correto a ser chamado só será definido em tempo de execução e dependerá do tipo da instância do objeto referenciado pela mensagem.

São corretas APENAS as afirmações

Alternativas
Comentários
  • Alguém poderia explicar porque só a II tá errada? Eu achava que a I e a V tb estavam. =/

    A I eu achei que estava errada por causa desse pré existente. Pra mim quando se adiciona métodos e atributos exclusivos das subclasses, eles aind anão existiam na superclasse.

    E a V eu achei que os métodos não eram escolhidos em tempo de execução, pelo menos no caso da sobrecarga não por causa das assinaturas diferentes, já na sobreposição pode até ser.



    ????????

  • O item I está certo, pois pode-se:
      a) Sobreescrever o método especializando a classe; ou
      b) Na superclasse pode está apenas definido a assinatura do método (método abstrato), necessitando que a subclasse defina o comportamento interno do método.

    O item V está certo, pois no exemplo de polimorfismo abaixo:
      a) void construir(Casa a);
      b) void construir(Predio a);
    A decisão de qual método chamar depende do TIPO da classe utilizada como parâmetro, sendo decido apenas em tempo de execução. No caso de sobrecarga, em que os métodos têm a mesma assinatura na subclasse e superclasse, mas são instanciados conforme exemplo abaixo:

    class Moradia{           class Casa {            class Predio{
      void construir();          void construir();        void construir();
    }                                     }                                  }

    public static void main(){
      Moradia c = new Moradia();
      c.construir();
    }

    Nesse caso, construir modela o comportamento do objeto, sendo necessário descobrir sua tipagem (Moradia ou Casa) para executar o método.
  • Alguém sabe me dizer onde está o erro do item II? Não ficou claro para mim esta sentença.
  • I - Esta é a ideia da herança: estender uma superclasse adicionando comportamento específico. A herança expressa um relacionamento do tipo "é um". Por exemplo, Quadrado "é uma" FormaGeometrica.

     

    II - Em Java, não existe a configuração de um objeto "default". O que existe é a possibilidade de chamar um método sem especificar um objeto específico se já estivermos no contexto de um objeto (o que equivale a fazer this.umMetodoQualquer() ).

     

    III - Corretíssimo. Uma grande desvantagem da herança é a geração de um acoplamento elevado entre as classes

     

    IV) Encapsulamento é uma característica essencial em sistemas orientados a objetos.

     

    V) Polimorfismo é uma característica básica da orientação a objetos, possibilitando a criação de designs flexíveis por meio da substituição de objetos em tempo e execução.