Você está na página 1de 11

Bruno Alberto Magaia

Licenciatura em Informática

Universidade Pedagógica de Maputo

Maputo, 2024
Bruno Alberto Magaia

Tema: Resolução de exercícios sobre herança

Trabalho de caracter avaliativo a


ser entregue na cadeira de Lab
C++

Universidade Pedagógica de Maputo

Maputo, 2024
1. O que significa herança em C++?

Resposta:

Em programacao C++, o termo herança e uma abordagem fundamental da programação orientada


a objetos (POO).

Pois que permite a reutilizacao das classes, permitindo que uma determinada classe possa derivar
características, comportamentos ou estado(s) de uma outra classe.

A classe derivada pode herdar os metodos, ou ate mesmo as variaveis de uma determinada classe
(porem as mesmas devem estar visiveis ou com a visibilidade publica).

NB:

A classe base é também chamada de classe pai ou superclasse, e a classe derivada é chamada de
classe filha ou subclasse.

A herança em C++ é realizada através da palavra-chave public, protected ou private, que


determina o nível de acesso dos membros herdados pela classe derivada.

Os principais benefícios da herança em C++ são:

Reutilização de código: A classe derivada pode herdar os membros da classe base, evitando a
necessidade de reescrever o mesmo código várias vezes.

Extensibilidade: A classe derivada pode adicionar novos membros ou modificar os membros


herdados da classe base, permitindo adaptar a funcionalidade existente às necessidades específicas
da classe derivada.

Polimorfismo: A herança permite o polimorfismo, que é a capacidade de tratar objetos de classes


diferentes de maneira uniforme. Isso significa que um objeto da classe derivada pode ser tratado
como um objeto da classe base, permitindo a substituição de objetos e a execução de métodos
específicos da classe derivada.
2. Quais são as diferentes formas de herança? Dê um exemplo para cada um.

Resposta:

Podemos destacar alguns tipos de heranca, como :

Herança pública (ou do inglês public inheritance)

Neste tipo de herança, os membros públicos e protegidos da classe base são herdados como
membros públicos e protegidos, respectivamente, na classe derivada. Os membros privados da
classe base não são herdados.

Herança protegida (ou do inglês protected inheritance)

Neste tipo de herança, os membros públicos e protegidos da classe base são herdados como
membros protegidos na classe derivada. Os membros privados da classe base não são herdados.

O tipo de herança protegida é menos comum do que a herança pública (public), e é utilizada apenas
quando se deseja restringir (ou limitar) o acesso direto aos membros herdados.

Herança privada (private inheritance)

Neste tipo de herança, membros públicos (public) e protegidos (protected) da classe base são
herdados como membros privados na classe derivada.

Os membros privados da classe base não são herdados, a herança privada (private) é menos comum
e é utilizada quando se deseja ocultar completamente a relação de herança entre as classes.
3. Descreve a sintaxe de cada tipo de herança.

Descrição da herança Publica:

#include <iostream>
using namespace std;
class aluno {
public:
void Exame() {
cout << "\n Eu vou me dedicar, para dispensar \n na cadeira de Lab no ano de 2024." << endl;
}
};
class Docente : public aluno {
public:
void dispensa() {
cout << "\n So Considerarei alunos dedicados." << endl;
}
};
int main() {
Docente docente;
docente.dispensa();
docente.Exame();
return 0;
}
Descrição da herança Protegida:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
class Aluno
{
protected:
double media(double t1,double t2)
{
return ((t1+t2)/2);
}
public:

string Nota(double t1,double t2)


{
double dado=((t1+t2)/2);
if((dado >= 13.5) && (dado <= 20))
{
return " Aluno Dispensado." ;
}else if((dado >= 9.5) && (dado < 13.5 )){
return " Aluno Admitido." ;
}else if((dado >= 0) && (dado < 9.5 )){
return " Aluno Reprovado." ;
}else
{
return " Nota Invalida." ;
}
}
};

class Docente : protected Aluno {


public:

string result =Nota(15.6,12.3);


void resultado() {

cout << "\n Docente diz, " <<result<< endl;


}
};

int main() {
Docente docente;
docente.resultado();

return 0;
}
Descrição da herança Privada:

#include <iostream>

using namespace std;

class Aluno
{
private:

double media[50];
int total=0;

string msg1="\n Caro estuante!";


string msg2="\n nAplicando os conhecimentos de herança, resolva os exercicios em
anexo.";
string msg3="\n Data de entrega: 29 de abr., 00:00";

public:
string Msg=msg1+" "+msg2+" "+msg3;
};

class Docente: public Aluno


{

};

int main()
{
Docente dc;
cout<<"\n O Docente diz : "<<dc.Msg;
}
5. Crie uma classe base chamada "Pessoa" com atributos protegidos para o nome e a idade,
juntamente com métodos públicos para obter e definir esses atributos. Em seguida, crie uma
classe derivada chamada "Estudante" que herda da classe "Pessoa" e adiciona um atributo
adicional para a matrícula do estudante, juntamente com métodos para obter e definir esse
atributo.

#include <iostream>
#include <string>

using namespace std;


class Pessoa {
protected:
string nome;
int idade;

public:
Pessoa(string nome, int idade) : nome(nome), idade(idade) {}

string Ler_Nome() const {


return nome;
}

void enviar_Nome(string novoNome) {


nome = novoNome;
}

int Ler_Idade() const {


return idade;
}

void enviar_Idade(int novaIdade) {


idade = novaIdade;
}
};

class Estudante : public Pessoa {


private:
string matricula;

public:
Estudante(string nome, int idade, string matricula)
: Pessoa(nome, idade), matricula(matricula) {}

string Ler_Matricula() const {


return matricula;
}

void enviar_Matricula(string novaMatricula) {


matricula = novaMatricula;
}
};

int main()
{
Pessoa pessoa("Magaia", 30);
cout << "\n Nome: " << pessoa.Ler_Nome() << ", idade: " << pessoa.Ler_Idade() << std::endl;

Estudante estudante("Bruno", 30, "153647");


cout << "\n Nome: " << estudante.Ler_Nome() << ", Idade: " << estudante.Ler_Idade()
<< " e Matricula: " << estudante.Ler_Matricula() << std::endl;

return 0;
}

Você também pode gostar