Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
1 UNIVERSIDADE FEDERAL DE OURO PRETO INSTITUTO DE CIÊNCIAS EXATAS E BIOLÓGICAS DEPARTAMENTO DE COMPUTAÇÃO BCC702 – PROGRAMAÇÃO DE COMPUTADORES II 10a Aula prática de BCC702 – Programação Orientada a Objetos Sobrecarga de Operadores Sobrecarregar um operador significa redefinir seu símbolo, de maneira que ele se aplique também a tipos de dados definidos pelo usuário como classes e estruturas. A implementação de sobrecarga de operadores é definida por meio de funções chamadas operadoras, criadas como membro da classe. A forma geral é: Como exemplo considere a classe Ponto, implementada em sala, para a qual é definido o operador binário ( + ). Interface para a classe Ponto: #include <iostream> using namespace std; class Ponto{ private: int x, y; public: Ponto(); Ponto(int x1, int y1); void print(); Ponto operator +(Ponto p); //função operadora }; Ponto.h Implementação da classe Ponto: #include "Ponto.h" Ponto::Ponto(){ x = 0; y = 0; } 2 Ponto::Ponto(int x1, int y1){ x = x1; y = y1; } void Ponto::print(){ cout << "( "<< x << ", "<< y << " )" << endl; } Ponto Ponto::operator +(Ponto p){ Ponto aux; aux.x = x + p.x; aux.y = y + p.y; return aux; } Ponto.cpp Utilizando a classe Ponto no programa principal. #include "Ponto.h" void main(){ Ponto A(5, 1), B(2, 3), C; cout<<"A = "; A.print(); cout<<"B = "; B.print(); cout<<"C = "; C.print(); C = A + B; cout<<"C = A + B = "; C.print(); system("pause"); } <<saída>> A = ( 5, 1 ) B = ( 2, 3 ) C = ( 0, 0 ) C = A + B = ( 7, 4 ) Exercícios: 1. Acrescente à classe Ponto os operadores: menos unário ( - ), menos binário ( - ), multiplicação ( * ), divisão ( / ), módulo ( % ), as operações aritméticas de atribuição ( +=, -=, /=, *= e %=) e as operações relacionais (==, !=). 2. Defina uma classe denominada Fracao. Essa classe deve armazenar o numerador e o denominador de uma fração em duas variáveis inteiras. Inclua: 3 a) Uma construtor sem parâmentros e outro que receba numerador e denominador da fração; b) Um método que retorne o numerador e outro que retorne o denominador; c) As operações de adição, subtração, multiplicação e divisão realizando a sobrecarga de operadores; d) As operações de incremento e decremento pré e pós-fixadas. Mantenha a sua fração o mais simplificada possível e, para tanto, utilize a seguinte função que calcula o máximo divisor comum, entre dois valores inteiros: int mdc(int a, int b){ int resto; while(b != 0){ resto = a % b; a = b; b = resto; } return a; } Além disso, para auxiliar neste exercício lembre-se que o mínimo múltiplo comum entre dois valores inteiros a e b é dado por: )b,a(mdc ba ×