Programação Orientada a Objetos
|
|
|
- Lavínia Lagos Maranhão
- 9 Há anos
- Visualizações:
Transcrição
1 Programação Orientada a Objetos Aula VIII Prof. Felício Bruzzi Barros Maio de 2008
2 Sobrecarga de operadores matriz A, B, C, D; multiplica(a,b,c); soma(a,b,d); escreve(d); matriz A, B, C, D; C=A*B; D=A+B; cout << D << endl; código mais fácil de ser compreendido; funções (operadores) mais fáceis de serem utilizadas; Sobrecarga de funções: funções com o mesmo nome, mas com diferentes parâmetros (e códigos diferentes); Sobrecarga de operadores: Operadores com o mesmo nome, mas com diferentes operandos (e códigos diferentes).
3 Operadores sobrecarregáveis + - * / % ^ & ~! = < > += -= *= /= %= ^= &= = << >> >>= <<= ==!= <= >= && >*, -> [] () new new[] delete delete[]
4 Operadores não-sobrecarregáveis e regras Não podem ser sobrecarregados: :: Resolução de escopo;. Seleção de membro;.* Seleção de membro através de um ponteiro para função. Regras: O operador sobrecarregado não pode alterar as regras de precedência e associatividade do C e C++; Ao menos um dos parâmetros do operador deverá ser membro de uma classe. O número de parâmetros do operador sobrecarregado depende do tipo do operador e da função: Operador unário, função membro Nenhum parâmetro Operador unário, função não membro Um parâmetro Operador binário, função membro Um parâmetro Operador binário, função não membro Dois parâmetros
5 Sintaxe Função com um nome especial: operator op, onde op é o operador. Sobrecarga como função membro não static: Declaração: tipo_retorno operator op (lista_de_parâmetros); Definição: tipo_retorno Nome_classe::operator op (lista_de_parâmetros) {... // código da função } Como função friend (não membro): Declaração: friend tipo_retorno operator op (lista_de_parâmetros); Definição: tipo_retorno operator op(lista_de_parâmetros) {... // código da função} Como função não membro e não friend: Declaração: tipo_retorno operator op (lista_de_parâmetros); Definição: exemplo:vetmat tipo_retorno operator op(lista_de_parâmetros) {... // código da função}
6 Observações Usar passagem por referência sempre que possível mas eficiente para objetos grandes (evitar o overhead ). Não se pode passar por referência uma variável local. Não se pode usar passagem por ponteiro. (não se pode sobrecarregar operadores que agem sobre ponteiros ou tipos definidos).
7 Conversões Criar construtor com um argumento: Declaração: tipo_1 (tipo_2); void f(tipo_1); int main() { tipo_2 A; tipo_1 B(A); // Explícita f(a); // Implícita } Declaração: explicit tipo_1 (tipo_2); void f(tipo_1); int main() { tipo_2 A; tipo_1 B(A); // Explícita f(a); // Erro } exemplo:vetmat
8 Operador de conversão Há casos em que o uso de um construtor para efetuar a conversão não é adequado, porque o construtor não pode especificar: Uma conversão de um tipo definido pelo usuário para um tipo básico, pois os tipos básicos não são classes; Uma conversão de um novo tipo definido pelo usuário para uma classe previamente definida (sem que se tenha a modificação da classe antiga). Nestes casos, pode-se sobrecarregar o operador de conversão, para efetuar a conversão de um objeto do tipo Classe1 para um objeto do tipo Classe2: O operador deve ser membro de Classe1; A sintaxe a ser usada em classe 1 é: operator Classe2( ); O tipo de retorno não deve ser colocado, pois ele é implicitamente igual a Classe2; Não se pode definir um operador de conversão e um construtor dedicado a efetuar a mesma conversão: isto é ilegal, pois gera ambiguidade!
9 Operador de conversão const float PARALELO = 1.69; class Real { double dinheiro; public : Real (double valor) { dinheiro = valor; } operator Dolar ( ); // Real em Dolar via operador operator int ( ); // Real em unsigned long friend void mostrar (unsigned long var_long) }; Real :: operator Dolar ( ) { return Dolar ((float) dinheiro/paralelo); } Real :: operator ìnt ( ) { return (int) dinheiro; } int main ( ) { Real minimo (110.00), paralelo (1.13); Dolar usa (10.50); int truncado = paralelo; Dolar minimo_dolar = minimo; truncado = (int) minimo; return 0; }
10 Ambigüidades class X {/*... */ X(int); X(char *); }; class Y {/*... */ Y(int); }; class Z {/*... */ Z(X);}; X f(x); Y f(y); Z g(z); f(1); // Erro: ambíguo, f(x(1)) ou f(y(1))??? f(x(1)); // OK f(y(1)); // OK g("teste"); // Erro, dois níveis de conversão definidas pelo usuário são necessários g(x("teste")); // OK, g(z(x("teste"))); Z(X) implícita g(z("teste")); // OK, g(z(x("teste"))); X("teste") implícita
11 Laboratório IX Cria a classe Vetor, contendo: construtor de parâmetros (passando dimensão e uma ponteiro); construtor de parâmetros (passando dimensão e um escalar para preencher o vetor); construtor de cópia; destrutor; operador de atribuição; operadores binários (+=, -=, +, -); operadores unários (+,-); função produto escalar; funções de acesso à dimensão; operadores binários para multiplicação vetor * escalar, escalar * vetor; operadores binários para divisão vetor \ escalar, escalar \ vetor; operador de fluxo <<; operadores de acesso [ ] e ( ) (leitura e modificação); Escreva um programa demonstrando a utilização desta classe Evitar o uso das funções friends.
12 Quarto Trabalho primeira parte Cria a classe Matriz, contendo: construtor de parâmetros (passando número de linhas, de colunas e uma ponteiro para ponteiro); construtor de parâmetros (passando número de linhas, de colunas e um escalar para preencher a matriz); construtor de cópia; construtor para conversão entre vetor e matriz (matriz coluna); destrutor; operador de atribuição; operadores binários (+=, -=, +, -); operadores unários (+,-); operador binários (*) para produto entre matrizes ; operador binários (*) para produto entre matrizes e vetor ; funções de acesso ao número de linhas e colunas; operadores binários para multiplicação matriz * escalar, escalar * matriz; operadores binários para divisão matriz \ escalar, escalar \ matriz; operador de fluxo << operadores de acesso [ ] [ ] e (, ) (leitura e modificação); Escreva um programa demonstrando a utilização desta classe Evitar o uso das funções friends.
ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO
ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO SOBRECARGA DE OPERADORES (C++) A sobrecarga de operadores ocorre quando desejamos utilizar operadores jáj conhecidos (+,-,*,/,=,+=...)
Técnicas de Programação:
Técnicas de Programação: Programação Orientada a Objeto PROF. PROTÁSIO DEE-UFPB Classes e Objetos Classe É uma estrutura de dados que pode conter: Objeto Dados, e Funções. É uma instância de uma classe.
Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN
Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores Prof.: Bruno E. G. Gomes IFRN 1 Introdução Na aula de hoje: Declaração de classes Métodos Construtores Exercícios de criação
Introdução à Computação MAC0110
Introdução à Computação MAC0110 Prof. Dr. Paulo Miranda IME-USP Aula 2 Variáveis e Atribuições Memória Principal: Introdução Vimos que a CPU usa a memória principal para guardar as informações que estão
Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição
Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação
Princípios de Desenvolvimento de Algoritmos MAC122
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Aula de Revisão: Variáveis e Atribuições Introdução Memória Principal: Vimos no curso anterior que a CPU usa a memória
Redefinição de Operadores
Sobrecarga de Operadores em C++ Algoritmos e Estruturas de Dados 2008/2009 Mestrado Integrado em Engenharia Informática e Computação Redefinição de Operadores Quase todos os operadores podem ser redefinidos:
Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
C++ - Sobrecarga de Operadores
C++ - 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
Capítulo 7. Expressões e Sentenças de Atribuição
Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário
Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de
Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU
Aula 6 POO 1 Construtores Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações
ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO
ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos picos Definição de estrutura Acessando membros de estruturas O tipo horario com struct Implementando horario com class Escopo
Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Introdução à Programação Operadores, Expressões Aritméticas e Entrada/Saída de Dados Programa em C #include int main main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius
Programação Aplicada à Engenharia
Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Programação Aplicada à Engenharia Aula 07: Aritmética e Tomada de decisão Silvio Fernandes 2009.1 1 Operadores Aritméticos Operadores
Estrutura de dados 1. Ponteiros
Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem
Módulo 1. Introdução. AEDS I C++ (Rone Ilídio)
Módulo 1 Introdução AEDS I C++ (Rone Ilídio) Introdução Linguagens de Programação Fonte Compilador Executável SO I Hardware C++ - Características Evolução do C, ou seja, possui a mesma sintaxe É uma linguagem
Operadores e Expressões: bit-a-bit e especiais
Operadores e Expressões: bit-a-bit e especiais Objetivos Em C, OPERADORES e EXPRESSÕES podem ser classificados em cinco grande categorias: Atribuições Aritméticos Lógicos e Relacionais Bit-a-Bit Especiais
Linguagens de Programação I
Linguagens de Programação I Tema # 4 Operadores em C Susana M Iglesias FUNÇÕES ENTRADA-SAÍDA I/O printf(), utilizada para enviar dados ao dispositivo de saída padrão (stdout), scanf(), utilizada para ler
//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void
//conteúdo do arquivo Matriz.h class Matriz private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void setnumerodecolunas(int); int getnumerodelinhas(); int getnumerodecolunas();
Classes e Encapsulamento
Classes e Encapsulamento Marcio Santi POO e C++ Tipo Abstrato de Dados (TAD) TAD atributos dados que o representam interface operações associadas como é manipulado 1 Exemplo: Editor Gráfico (classe círculo)
13/11/15. Incrementando C: C++ E na especificação de BigInt... Arquitetura da solução exemplo. O arquivo de declarações. Explorando a classe BigInt
Incrementando C: permite: Definir uma classe para números grandes; Manter o código bem parecido com o programa C. O mesmo programa em C (e até mesmo em Java) não são tão convenientes e elegantes. #include
Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga
Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Professora Sheila Cáceres Sobrecarga (overloading) Na mesma classe podemos definir vários métodos com o mesmo nome Sobrecarga O tipo
Expressões e sentença de atribuição
Expressões e sentença de atribuição Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Construtores. Introdução
Construtores José Gustavo de Souza Paiva Introdução Até o momento, temos tratado a inicialização dos atributos das classes de duas maneiras Alteração dos valores dos atributos diretamente - atributos públicos
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem
C++ - Funções. Forma geral das funções C++
C++ - Funções Conjunto de instruções para executar uma tarefa particular, agrupadas numa unidade com um nome para referenciá-las. O código é agregado ao programa uma única vez e pode ser executado muitas
Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for
Introdução à linguagem C++
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas
Programação científica C++
Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 2 Expressões Combinação de dados e operadores que resulta em um valor. expressão x = 2 * y + 4; variável operador constante Memória do computador
Parte IV. Linguagens de Programação. Relembrando da Última Aula... Empacotador de Préprocessadores. Primeiro Exemplo Usando Classes em C++
Linguagens de Programação Parte IV Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Introdução à Programação (Continuação) Relembrando da Última Aula... Ponteiros e strings Mais exemplos
Linguagem Java - Introdução
Linguagem Java - Introdução Identificadores válidos resultado teste01 _numeroclientes $fortuna Identificadores Identificadores inválidos 101dalmatas 34 #x Palavras reservadas abstract assert*** boolean
#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C
#include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que
Aula 25: Funções com Arrays
CI208 - Programação de Computadores Aula 25: Funções com Arrays Prof. MSc. Diego Roberto Antunes [email protected] www.inf.ufpr.br/diegor Universidade Federal do Paraná Setor de Ciências Exatas Departamento
Ponteiros de Variáveis
Ponteiros de Variáveis C++ permite o armazenamento e a manipulação de valores de endereços de memória. Para cada tipo existente, há um tipo ponteirocapaz de armazenar endereços de memória em que existem
Introdução a JAVA. Variáveis, tipos, expressões, comandos e blocos
+ Introdução a JAVA Variáveis, tipos, expressões, comandos e blocos +Roteiro 2 Variáveis e tipos Operadores aritméticos, lógicos, relacionais e bit-a-bit Atribuição Comandos básicos Ler, Escrever, Condicional,
Programação C/C++ Slide 5 Nielsen Castelo Damasceno
Programação C/C++ Slide 5 Nielsen Castelo Damasceno Programação estruturada Programação estruturada Programação estruturada Programação estruturada Programação estruturada vetores vetores vetores vetores
Ambientação com a Sintaxe de Java: parte 1
Ambientação com a Sintaxe de Java: parte 1 Prof. Gustavo Wagner FATEC-PB Programas em Java Texto do programa: arquivo com extensão.java Arquivo contém ao menos uma classe Nome do arquivo deve ser IGUAL
Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos
Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos [email protected] Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;
Aula 27: Estruturas heterogêneas e alocação dinâmica
Aula 27: Estruturas heterogêneas e alocação dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aulas anteriores Memória
Física Computacional
Física Computacional 1. Funções: a. Inicialização de argumentos. b. Overloading. 2. Revisão de classes 3. Classes parte 2 a. Overloading de operadores. 4. Gestão de projectos com Dev-C++ 5. Gestão de projectos
LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO
LÓGICA DE PROGRAMAÇÃO PROFª. M.Sc. JULIANA H Q BENACCHIO Primeiro programa em C #include int main() { int num1, num2, result; scanf("%d",&num1); scanf("%d",&num2); result = num1 + num2; printf("%d",
Estrutura de Condição, Escolha e Repetição
Estrutura Condicional Se, Laços de repetição Estrutura de Condição, Escolha e Repetição Profª Fabíola Gonçalves C. Ribeiro Conteúdo Expressões Aritméticas Funções Expressões Lógicas Operadores Lógicos
# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira
# Estrutura de Dados # Aula - Revisão de C/C++ na Prática Prof. Leinylson Fontinele Pereira Na aula anterior... Ponteiros Funções Introdução 3 O que vamos aprender? Preparação do ambiente de testes Conceitos
Curso de Programação C em Ambientes Linux Aula 04
Curso de Programação C em Ambientes Linux Aula 04 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo
Introdução a JAVA. Variaveis, tipos, expressões, comandos e blocos
Introdução a JAVA Variaveis, tipos, expressões, comandos e blocos Roteiro Variáveis e tipos Operadores aritméticos, lógicos, relacionais e bit-a-bit Atribuição Comandos básicos Ler, Escrever, Condicional,
Programação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Classes e Objetos (Continuação) Empacotador de Pré-processador
Classes e Objetos. Prof. Leonardo Barreto Campos 1
Classes e Objetos Prof. Leonardo Barreto Campos 1 Sumário Introdução; Escopo de Classe e Acesso a Membros de Classes; Exercício; Os Métodos get e set; Separação de Interface e Implementação; Construtores
Algoritmos II prof. Daniel Oliveira
Algoritmos II prof. Daniel Oliveira Revisar conceitos abordados na disciplina anterior Abordar conceitos vistos com a linguagem C# Variáveis e listas Expressões Estruturas de controle do tipo condicional
