Buscar

UNINASSAU - Livro Unidade 4.1 - Linguagem de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Continue navegando


Prévia do material em texto

LINGUAGEM DE 
PROGRAMAÇÃO
Priscila Gonçalves
Sobrecarga em C++
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Definir o que é sobrecarga.
 � Identificar o polimorfismo.
 � Construir uma aplicação de sobrecarga.
Introdução
Em orientação a objetos, a sobrecarga de método ocorre quando temos 
dois métodos com mesmo nome, mas com assinaturas diferentes, isto 
é, diferentes números e tipos de parâmetros. Dois métodos podem ter 
o mesmo nome se tiverem diferentes números e tipos de parâmetros,
portanto, diferentes assinaturas.
Neste capítulo, você estudará a sobrecarga e sua aplicação, identificará 
o polimorfismo e aprenderá como construir as aplicações de sobrecarga.
Conceito
Quando falamos sobre orientação a objetos, vemos que, geralmente, a sobre-
carga de método ocorre quando temos dois métodos que possuem o mesmo 
nome, mas com diferentes assinaturas, ou seja, diferentes tipos e quantidades 
de parâmetros. Para que você entenda melhor, suponha que dois métodos 
tenham o mesmo nome, mas possuam diferentes tipos de parâmetros e dife-
rentes números, obtendo, assim, assinaturas diferentes. Em Java, por exemplo, 
dois ou mais métodos em uma classe podem ter o mesmo nome, desde que 
os parâmetros declarados sejam diferentes. O polimorfismo é implementado 
por meio da sobrecarga.
Sobrecarga em C++2
Em C++ você pode fazer uso de sobrecarga em funções e operadores, 
como apresentado na Figura 1. Dessa forma, fornecerá mais de uma definição 
para um determinado nome de função dentro do mesmo programa. Em geral, 
o compilador é quem faz a seleção sobre qual a versão de função é mais 
apropriada, ou qual é o melhor operador, baseando nos argumentos com os 
quais ele é chamado. Para esse procedimento, o compilador deve verificar os 
seguintes pontos:
 � objeto que está sendo inicializado;
 � o lado esquerdo de uma instrução de atribuição;
 � o argumento formal a uma função;
 � o argumento formal a um operador definido pelo usuário;
 � o tipo de retorno de função.
Figura 1. Sobrecarga de operadores.
Fonte: WikiLivros (2018, documento on-line).
3Sobrecarga em C++
No exemplo da Figura 1, é mostrado um trecho de um código em que x e y 
não tem referência sobre a qual objeto pertencem. Contudo, a operação ocorre 
dentro de um dos objetos, o que está antes do operador. Logo, você pode notar 
que o operador pertence a um dos objetos, obrigatoriamente àquele que o 
antecede. Dessa forma, neste exemplo foi declarado o segundo dado a operar.
Se for selecionada mais de uma função, a sobrecarga será ambígua e apresentará 
erro, ou seja, a função que deverá ser selecionada será melhor que todas as outras do 
grupo para, no mínimo, um argumento. Se não ocorrer dessa maneira, a chamada da 
função irá gerar um erro.
Identificação de polimorfismo
O polimorfismo é um dos conceitos mais utilizados em programação orientada 
ao objeto, pois promove a reutilização contínua dos códigos, apresentando a 
maneira como um método pode assumir formas diferentes das quais foram 
implementadas inicialmente e agir de modo que possa ser reutilizado, inclu-
sive em outra classe. O polimorfismo cria variações de métodos com nomes 
totalmente iguais em uma classe, contendo listas de argumentos diferentes para 
que seja feita a separação deles. Em C++ isso ocorre por meio da conversão 
de ponteiros ou referências, utilizando objetos em hierarquia de classes.
Segundo Horstmann (2005), polimorfismo descreve um conjunto de objetos 
de diferentes classes com comportamento similar. A herança é usada para 
expressar atributos em comum entre as classes, e as funções virtuais permitem 
variações no comportamento.
Uma das vantagens da sobrecarga é permitir que os métodos relacionados sejam 
acessados com o uso de um mesmo nome, assim, quando um método for sobrecar-
regado, poderá executar qualquer atividade em cada versão existente.
Sobrecarga em C++4
Construção de aplicação de sobrecarga
Para construir uma aplicação que contenha sobrecarga, você, como progra-
mador, terá que declarar dois ou mais métodos da mesma classe que com-
partilhem o mesmo nome, porém trazendo declarações de parâmetros de 
entradas diferentes, ou seja, declarar versões diferentes do mesmo método. 
Por meio da sobrecarga de operadores, você poderá redefinir o significado da 
grande maioria dos operadores em C++, quando ao menos um operando for 
um objeto da classe.
Uma informação importante é que não se pode criar operadores em C++, 
apenas podem ocorrer novas definições para operadores já existentes; e nem 
todos podem ser sobrecarregados.
Veja no Quadro 1 um exemplo de operadores que podem receber a 
sobrecarga.
Operadores unários
!
&
( )
*
+
++
-
--
~
conversion operators
NOT lógico
Address-of
Operador cast
Desreferência de ponteiro
Mais unário
Incremento
Negação unária
Decremento
Complemento de um
Operadores de conversão
Operadores binários
,
!=
%
%=
&
&&
&=
*
*=
Vírgula
Desigualdade
Módulo
Atribuição de módulo
AND bit a bit
AND lógico
Atribuição AND de bit a bit 
Multiplicação
Atribuição de multiplicação
Quadro 1. Linguagem de programação C++
(Continua)
5Sobrecarga em C++
Quadro 1. Linguagem de programação C++
Operadores binários
+
+=
-
-=
->
->*
/
/=
<
<<
<<=
<=
=
==
>
>=
>>
>>=
^
^=
Adição
Atribuição de adição
Subtração
Atribuição de subtração
Seleção de membro
Seleção de ponteiro para membro
Divisão
Atribuição de divisão
Menor que
Shift esquerda
Atrib. de deslocamento para a esquerda
Menor ou igual
Atribuição
Igualdade
Maior que
Maior ou igual
Shift direita
Atrib. de deslocamento para a direita
OR exclusivo
Atribuição de OR exclusivo
Operadores unários ou binários
( )
[ ] 
delete
new
Chamada de função
Subscrito de matriz
Delete
New
(Continuação)
Para mostrar o conceito de sobrecarga, veja o código a seguir, em que um salário 
deverá ser calculado de duas formas: uma somente passando o número de horas 
trabalhadas no mês; e outra com o salário básico mais o número de horas extras na 
classe Instrutor (Java ou C#):
Sobrecarga em C++6
Observe como a sobrecarga pode ser utilizada:
7Sobrecarga em C++
1. No desenvolvimento de software, 
as estruturas disponibilizadas por 
cada linguagem de programação 
possuem o intuito de facilitar o 
momento do desenvolvimento 
do software. Uma dessas 
estruturas é a sobrecarga. 
Assinale a alternativa que traz o 
conceito correto da sobrecarga.
a) Permite que uma classe, 
possua atributos e métodos 
de uma classe principal, 
possibilitando a mudança de 
comportamento do objeto.
b) Ocorre quando temos dois 
métodos que possuem o 
mesmo nome, mas com 
diferentes assinaturas, ou 
seja, diferentes tipos e 
quantidades de parâmetros.
c) Ao implantar a sobrecarga as 
classes, as classes derivadas 
ficam dependentes das 
classes principais.
Sobrecarga em C++8
d) A sobrecarga é responsável por 
implementar a herança, onde 
os objetos poderão se adequar 
a comportamentos diferentes. 
e) A diferença entre herança e 
polimorfismo, é devido ao uso 
de sobrecarga. Na herança a 
sobrecarga atua, permitindo 
que a classe derivada se 
torna dependente da classe 
principal, atuando sempre em 
conjunto com a mesma.
2. As classes assumem uma 
organização hierárquica, com 
uma classe-base no nível mais 
alto. As entidades no nível mais 
baixo da hierarquia herdam os 
campos de dados (atributos) e 
funções de nível mais alto. Estamos 
nos referindo a qual conceito?
a) Sobrecarga. 
b) Polimorfismo.
c) Herança.
d) Funções.
e) Compilador.
3. Qual é o tipo de relação onde 
toda a instância de uma classe 
é igualmente uma instância 
da outra, representando assim, 
a extensão de classes?
a) Ao aplicar o uso da herança 
e sobrecarga, a seleção da 
função a ser executadas, 
será posta em execução.
b) A argumentação utilizada 
no polimorfismo define 
métodos e atributos que serão 
utilizados, logo as funções e 
operadores serão indefinidos.
c) A argumentação utilizada 
no polimorfismo define 
métodos e atributos que serão 
utilizados, logo as funçõese 
operadores serão indefinidos.
d) A função e a sobrecarga 
verificam o argumento formal 
e o operador, que geralmente 
é definido pelo usuário. 
e) O compilador é quem faz a 
seleção sobre qual a versão 
de função é mais apropriada, 
ou qual é o melhor operador, 
baseando nos argumentos 
com os quais ele é chamado.
4. A linguagem C++ possui recursos 
importantes e que podem 
tornar o código reutilizável de 
diversas maneiras. Uma destas 
estruturas permite que haja 
várias versões de uma mesma 
função em uma hierarquia de 
classes. Assinale a alternativa que 
traz o recurso mencionado.
a) Polimorfismo.
b) Funções.
c) Herança.
d) Compilador.
e) Sobrecarga. 
5. O polimorfismo possibilita que uma 
função pode provocar diversas 
ações, tendo como base o tipo de 
objeto ao qual a função é chamada. 
Assinale a alternativa que traz 
conceitos corretos sobre o uso 
da sobrecarga e polimorfismo . 
a) A linguagem C++ permite que 
novas definições ocorram para 
operadores já existentes.
b) Novos operadores podem ser 
criados, já que a linguagem C++ 
permite que estes operadores 
possam ser sobrecarregados.
c) A classe derivada 
obrigatoriamente precisa 
acessar um construtor da 
classe principal. A linguagem 
C++ permite que as instruções 
executem individualmente. 
9Sobrecarga em C++
d) O polimorfismo é utilizado 
para expressar atributos 
em comum entre classes. A 
linguagem C++ não converte 
ponteiros ou referências.
e) Caso algumas funções sejam 
selecionadas, a sobrecarga 
será ambígua e executará 
normalmente as instruções.
HORSTMANN, C. Conceitos de computação com o essencial de C++. 3. ed. Porto Alegre: 
Bookman, 2005.
WIKILIVROS. Programar em C++/Sobrecarga de operadores. 2018. Disponível em: <ht-
tps://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Sobrecarga_de_operadores>. 
Acesso em: 1 jul. 2018.
Leituras recomendadas
ARNOLD, K.; GOSLING, J.; HOLMES, D. A linguagem de programação Java. 4. ed. Porto 
Alegre: Bookman, 2007.
MEYERS, S. C++ eficaz: 55 maneiras de aprimorar seus programas e projetos. 3. ed. 
Porto Alegre: Bookman, 2011.
MICROSOFT. Sobrecarga de função. c2018. Disponível em: <https://msdn.microsoft.
com/pt-br/library/5dhe1hce.aspx>. Acesso em: 4 maio 2018.
SCHILDT, H. Java para iniciantes: crie, compile e execute programas. 6. ed. Porto 
Alegre: Bookman, 2015.
WIKILIVROS. Programar em C++. 2011. Disponível em: <https://pt.wikibooks.org/wiki/
Categoria:Livro/Programar_em_C%2B%2B>. Acesso em: 4 maio 2018.
Conteúdo: