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?
O mecanismo de herança é muito simples, uma classe vai herdar as
características de outra classe, começa a complicar quando começamos a pensar em
como ela vai herdar, pois a classe pai pode bloquear alguns acessos a caraterísticas que
ele não quer que seja acessado pela classe filho. As características na classe pai pode ser
classificadas como public, protected e private, a classe filha só vai poder acessar aquilo
que lhe é permito, menos a private que é privado a classe pai.
Esse mecanismo nos ajuda a montar todo o processo de desenvolvimento do
sistema e facilita toda a manutenção que será dada ao projeto no futuro próximo. Tendo
isso em mente, torna mais claro a importância da herança na POO, facilitando a vida de
quem desenvolve e de quem vai dar a manutenção.
Complete
2) Se um atributo for declarado como protected, ele só pode ser utilizado na classe pai
onde foi criado e nas classes filhas. 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?
Promove a extensibilidade com o poder que é dado a classe filho de estender da
classe pai um método que pode ser redefinido na classe derivada. Podendo ser
executado e alterado dependendo de como ele é chamado. Isso é muito útil dentro da
POO, pois vai ajudar na implementação e no desenvolvimento do projeto e na sua
manutenção.
02) Explique o que é sobrecarga de operadores e quais são suas limitações?
Sobrecarga de operadores é usar o mesmo nome para tarefas parecidas, mas com
código de programação diferente, implementando uma nova maneira de um operador
funcionar, é uma forma de definir itens já existentes. A limitação está na utilização de
operadores já existentes, alguns podem ser reescritos, mas outros não, tem o objetivo de
simplificar a notação e uniformizar a expressão.
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?
Pode se usar o mesmo nome em várias funções, mas com parâmetros diferentes, isso
ajuda na hora de aplicar a função desejada, pois ela vai ser escolhida conforme os
parâmetros passados, pois dependendo do que foi passado na função ela vai realizar
uma determinada tarefa. Isso é vantajoso para determinar um procedimento que é
realizado a partir dos parâmetros passado, facilitando a implementação.
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 <iostream>
using namespace std;
template <class T>
T GetMax () {
T result,a,b,c,d;
cout<<"Nota 1: "<< endl;
cin >> a;
cout<<"Nota 2: "<< endl;
cin >> b;
cout<<"Nota 3: "<< endl;
cin >> c;
cout<<"Nota 4: "<< endl;
cin >> d;
result = (a + b +c + d)/4;
cout << result << endl;
};
int main () {
GetMax<float>();
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 < em sua definição. Portanto esse template de
função será aplicado apenas a tipos para os quais < está definido. Escreva um
comentário para a declaração de função que explique essa restrição.
#include <iostream>
using namespace std;
template <class T>
T Maximo (T a, T b) {
/*a template Maximo receber os valores podendo receber qualquer valor,
mas estamos passando um tipo float*/
if (a > b){ /*aqui fazemos a comparação entre os dois valores*/
cout << a << endl; /*se 'a' for maior que 'b' apresenta 'a'*/
}else{
cout << b << endl; /*se 'b' for maior que 'a' apresenta 'b'*/
}
};
int main () {
float a, b;
cout<<"Valor 1: "<< endl;
cin >> a;
cout<<"Valor 2: "<< endl;
cin >> b;
Maximo<float>(a, b);
/*inserimos dois valores do tipo float e passamos eles na função */
return 0;
}