POO I

Cards (25)

  • 1-Utilizando a linguagem de programação C++, foi definida uma classe Empregado em empregado.cpp. Nessa definição, é encontrada a seguinte linha de comando:
     
    virtual float calculaSalario();
     
    Qual a propriedade da orientação a objetos implementada utilizando esse comando e o que essa linha de comando indica?
     
    Polimorfismo, e a linha de comando indica que cada classe filha dessa classe vai ter uma implementação obrigatória desse método, mas conforme a sua necessidade
  • 2- Considere o código abaixo, escrito na linguagem de programação C++, que é o arquivo Aluno.h (supondo que exista um arquivo previamente escrito chamado Pessoa.h).
    #ifndef Aluno H
    #define Aluno H
    #include “Pessoa.h”

    #include <string>
    usingnamespace std;

    class Aluno: public Pessoa{
    private:
    string curso;
    string semestre;
    public:
    Aluno();
    string obtemCurso();
    void configuraCurso();
    string obtemSemestre();
    void configuraSemestre();
    };
    #endif
    Aluno é subclasse da superclasse Pessoa e herda dela atributos e metodos
  • 3-Analise o trecho de código abaixo, escrito em C++.
    class classe base (){
    private:
    int a;
    float x;
    protected:
    int b;
    float y,
    public:
    int c;
    float z;
    };
    class subclasse 1: public classe base
    {...};
    class subclasse 2: private classe base
    {...};
    class subclasse 3: private classe base
    {...};
    Na subclasse_1 os atributos b e y são protegidos
  • 4-  Considere a declaração da seguinte classe em C++, sabendo que um Assistente Tecnológico da prefeitura de Divinópolis criou esta classe como parte do programa prefeituras.cpp, é correto afirmar:
    #include <iostream>
    #include <string>
    using namespace std;
     
    class Prefeitura{
    public:
    void setNome(string nome);
    void setAno(int ano);
    string getNome();
    int getAno();
    private:
    string nome;
    int ano;
    };
    void Prefeitura::setNome(string nome)(this->nome = nome;) implementa o método setNome
  • 5-Em C++, como se denomina um conjunto de funções que compartilha um mesmo nome, porém contendo um código independente em cada uma?
     
     Polimorfismo
  • 6- Considerando o código C++ a seguir, assinale a alternativa que apresenta, corretamente, o valor que será impresso na linha: c.print().
     
    class A {
    private:
    int i;
    public:
    A() = (i = 2;)
    A(int a)(i = a;)
    void print () (printf ("%d", i) ;)
    int get() (return i;)
    };
    class B:public A {
    private:
    int j;
    public:
    B() (j = 1;)
    void operators+=(B b) (j += b.get();)
    void print () (printf ("%d", j);)
    };
    int main(){
     
    B b;
    B c = b;
    c += c;
    c += c;
     
    c.print ();
    return 0;
    }
    O valor é 5
  • 7-Se durante a execução n = 6, qual a será a saída?
    include <iostream>
    using namespace std;
    class No {
    public:
    int Dado;
    No* Prox;
    };
    int main() {
    No *L, *i;
    int n;
    cin >> n;
    if(n == 0)
    L = NULL;
    else{
    L = new No();
    L->Dado = n--;
    L->Prox = NULL;
    for ( ;n>0; ){
    i = new No();
    i->Dado = n--;
    i->Prox =L;
    L = i
    }
    }
    while(L != NULL){
                cout << L->Dado << “ ”;
                L = L->Prox;
    }
    return 0;
    }
    A saída será 1 2 3 4 5 6
  • 8-Quais afirmativas estão corretas?
    00: #define TAMANHO 2
    01:
    02: class T{
    03:
    04: public:
    05: T() (printf ("Oi\n");)
    06: ~T() (printf ("Fui \n");)
    07: };
    08:
    09: void main(){
    10:
    11: T* v1 = new T;
    12: T* v2 = new T[TAMANHO];
    13: T* v3 =new T;
    14: T* v4 = new T[TAMANHO];
    15:
    16: delete v1;
    17: delete[ ] v2;
    18: delete[ ] v3;
    19: delete v4;
    20: }
    |. [ V ]São instanciados 6 objetos da classe T.
    Il. [ V ]A linha 18 poderá causar erros de execução.
    III. [ F ]A linha 17 causará problemas de compilação.
    IV. [ F ]A linha 19 irá liberar toda a memória alocada na linha 14.
  • 9-Referente à linguagem de programação C++, uma de suas características marcantes é a existência de:
    Herança Multipla
  • 10-Analise o trecho de código C++ abaixo. Considerando os conceitos de iteradores e algoritmos presentes na Standard Template Library (STL).
     
    using namespace std
    int main(){
                int arr[] = (10, 7, 2, 15, 4);
                vector<int> v (arr, arr+5);
                vector<int>::iterator it;
     
    sort(v.rbegin(), v.rend());
    for(it = v.begin(); it != v.end(); it++)
                printf(“[%d]”, *it);
     
    return 0;
    }
    O código C++ acima imprimirá na saída padrão: [15][10][7][4][2]
  • 11- Um recurso relevante da linguagem C++ é o que declara membros de classe como static. O objetivo de se declarar um membro de classe como static em C++ é permitir que:
    Apenas uma cópia do membro seja compartilhada por todos os objetos da classe
  • 12-A sobrecarga de operadores é uma técnica muito utilizada em C++. Qual um exemplo de uma técnica que NÃO apresenta um operador que possa ser sobrecarregado em C++?

    ?:
  • 13-a) As classes em C++ não podem ser compostas por objetos de outras classes.
    Verdadeiro ou Falso: Falso
  • 13-b)Membros static de uma classe podem ser acessados através de um objeto daquela classe ou através do nome da classe, usando o operador de resolução de escopo (se o membro for public).
    Verdadeiro ou Falso: Verdadeiro
  • 13-c)Uma função membro definida como const modifica membro de dados de um objeto.
    Verdadeiro ou Falso: Falso
  • 13-d)Tentar declarar como const um construtor ou destruidor é um erro de sintaxe.
    Verdadeiro ou Falso: Verdadeiro
  • 13-e)Quando se deriva uma classe a partir de uma classe public, os membros public da classe base se tornam membros protected da classe derivada e os membros protected da classe base setoram public da classe derivada.
    Verdadeiro ou Falso: Falso
  • 13-f)Quando se deriva uma classe a partir de uma classe public, os membros. public da classe base se tornam membros public da classe derivada e os membros protected da classe base se tornam protected da classe derivada.
    Verdadeiro ou Falso: Verdadeiro
  • 14-Durante o desenvolvimento de software orientados à objetos, o objetivo do desenvolvedor é procurar usar rotinas com:
    Fraco acoplamento e alta coesão
  • 15-Os programas na linguagem C++ consistem em peças-chave denominadas classes e funções. Ao derivar uma classe a partir de uma classe base, esta pode ser herdada como public, protected ou private. "Ao derivar uma classe a partir de uma classe base com herança protected, os membros public da classe base tornam-se membros protected da classe derivada e os membros protected da classe base tornam-se membros protected da classe derivada”
  • 16 - A figura abaixo representa qual operação de abstração?
    Classificação e Instanciação
  • 17- A figura abaixo representa quais operações de abstração?
    Especialização e Agregação
  • 18-Na programação orientada à objeto, como se denomina a capacidade de ocultar dados dentro de modelos, permitindo que somente operações especializadas ou dedicadas manipulem dados ocultos?
    Encapsulamento
  • 19-O encapsulamento é um mecanismo da programação orientada a objetos no qual os membros de uma classe (atributos e métodos) constituem uma caixa preta. O nível de visibilidade dos membros pode ser definido pelos modificadores de visibilidade "privado, "público" e protegido”. Com relação ao comportamento gerado pelos modificadores de visibilidade:
    Um membro protegido é visível na classe à qual pertence e um suas classes descendentes
  • 20- No contexto da orientação a objetos, existe uma medida de quanto dois itens, tais como classes ou métodos, estão inter-relacionados. Esta medida costuma ser classificada como forte, quando um item depende da forma como o outro foi implementado, ou fraca, quando um item depende do outro, mas não de seus detalhes de implementação. Essa medida é conhecida como:
    Acoplamento