Prévia do material em texto
CENTRO UNIVERSITÁRIO DA GRANDE DOURADOS
Curso: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
Semestre: 2º
Disciplina: Programação Orienta a Objetos
Professora: Me. France Ricardo Marques Gonzaga
Atividades das Aulas 05 a 08
1)Explique o mecanismo de Herança da Programação Orientada a Objetos?
A herança cria um relacionamento hierárquico entre classes, permitindo que a classe filha compartilhe e estenda os comportamentos e atributos da classe pai. Ela favorece a reutilização de código, facilita a manutenção e torna o sistema mais flexível. A classe pai define os atributos e métodos compartilhados, podendo restringir o acesso a informações que não devem ser acessadas pela classe filha.
Complete
2) Se um atributo for declarado como protected, ele só pode ser utilizado na classe onde foi declarado e nas classes herdeiras. Isso significa que quando ocorrer algum bug, você só precisa procurar na classe em que o atributo foi declarado e nas classes herdeiras.
01)Como o polimorfismo promove a extensibilidade?
O polimorfismo promove a extensibilidade ao permitir a modificação de métodos herdados sem alterar o código existente, facilitando a adição de novas funcionalidades de forma eficiente. Ele favorece a reutilização de código e a manutenção do sistema à medida que novas funcionalidades são incorporadas. Por exemplo, ao sobrescrever um método de uma classe base em uma classe derivada, é possível evoluir o sistema sem modificar a classe base, garantindo organização e sustentabilidade.
02) Explique o que é sobrecarga de operadores e quais são suas limitações?
A sobrecarga de operadores permite redefinir operadores para tipos definidos pelo usuário, promovendo uma sintaxe mais intuitiva e a reutilização de operadores já existentes. No entanto, é essencial respeitar o comportamento original dos operadores e as regras da linguagem. É de extrema importancia usar essa funcionalidade com cautela, pois seu uso indevido pode tornar o código menos legível e confuso.
Complete
01) Perceba que, para chamarmos a função, devemos declarar o tipo, pois apesar do valor, está sendo passado com o ponto indicando que o número não é inteiro. Isso diferencia uma função da outra, uma com o tipo “int” e a outra com o tipo “float”, o que torna as funções distintas, sendo que as duas possuem o mesmo nome “abs”.
02) Qual a vantagem de utilizar a sobrecarga de funções?
A sobrecarga de funções traz a vantagem de permitir que funções com o mesmo nome possam ser aplicadas a diferentes tipos de dados, oferecendo flexibilidade e promovendo o polimorfismo. Isso facilita a manutenção e leitura do código, evita a duplicação de funções e torna o código mais organizado e eficiente.
01) Implemente um programa onde você tenha que criar uma classe template que você insira 4 notas. Depois calcule a média, sendo que essas notas podem ser do tipo float ou do tipo int. Crie a implementação completa, inclusive a função main.
#include
using namespace std;
// Classe template que aceita diferentes tipos (float ou int)
template
class Notas {
private:
T nota1, nota2, nota3, nota4;
public:
// Construtor para inicializar as notas
Notas(T n1, T n2, T n3, T n4) : nota1(n1), nota2(n2), nota3(n3), nota4(n4) {}
// Função para calcular a média
T calcularMedia() {
return (nota1 + nota2 + nota3 + nota4) / 4;
}
// Função para exibir a média
void exibirMedia() {
cout notasInt(7, 8, 9, 10);
notasInt.exibirMedia(); // Exibe a média das notas inteiras
// Criando um objeto da classe Notas com tipo float
Notas notasFloat(7.5, 8.0, 9.2, 10.3);
notasFloat.exibirMedia(); // Exibe a média das notas com ponto flutuante
return 0;
}
02) Escreva uma template de função chamada Maximo. A função requer dois valores de mesmo tipo que os argumentos e retorna o maior dos dois argumentos (ou qualquer valor, se forem iguais). Dê tanto a declaração quanto a definição da função para o template. Você utilizará o operador
using namespace std;
// Declaração do template de função Maximo
// A função Maximo recebe dois argumentos de mesmo tipo e retorna o maior valor.
// Esta função só pode ser usada com tipos que possuem o operador
T Maximo(T a, T b);
// Definição do template de função Maximo
template
T Maximo(T a, T b) {
if (a