Objectos: Introdução O objecto ou classe é o conceito base de uma linguagem de programação por objectos como o C++. Tal como acontecia com as estruturas,

Slides:



Advertisements
Apresentações semelhantes
Classes C++ Class nome da classe { private: membros privados
Advertisements

Programação II Estruturas de Dados
List templates Vamos considerar a lista ligada (singly linked list) O objecto da classe slink O objecto da classe slink O objecto da classe slink NULL.
1. Classes 2. Membros estáticos 1.1. Palavra chave this
Vamos abordar o exemplo
Programação Orientada aos Objectos Paulo Marques Departamento de Eng. Informática Universidade de Coimbra Out/2005 Core C++: Uma abordagem.
14 de Dezembro de 2009 Teste Diehard aplicado ao gerador da biblioteca OpenSSL Segurança em Redes Móveis Elaborado por: Luís Ricardo Fonseca Instituto.
Funciona, porém está ilegível!
Templates Traduzido de:
Linguagem de Programação C++
Ponteiros em C.
Programação C++.
Curso de Programação em C++
Funções.
1 Aula 5 Instâncias dinâmicas. 2003/2004 Programação Orientada para Objectos 2 Instâncias… int j = 20; int f() { int const i = 10; // … } Constante automática.
Matrizes clássicas e vectores em C++
Aula 11 Tipos Abstractos de Dados II. 2003/2004 Introdução à Programação 2 Estrutura global do programa #include using namespace std; int mdc(int const.
Aula 8 Polimorfismo.
1 Aula 7 Herança. 2003/2004 Programação Orientada para Objectos 2 Conceitos fundamentais: Herança Polimorfismo Ligação dinâmica.
Sobrecarga de nomes de rotinas Rotinas recursivas Invocação de rotinas
2002/2003 Programação Orientada para Objectos 1 Aula 4 Memória, unidade básica de memória e conceito de endereço Ponteiros Relação de ponteiros com matrizes.
INF 1771 – Inteligência Artificial
Iniciação à linguagem C++
Algoritmos e linguagens de programação 1 (aula 05)
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Introdução a Estruturas de Dados Avançadas Utilizando Linguagem C
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Revisão /*======================================================*/
Const member functions
Curso C++ (J. Seixas) Primeiro exemplo: classe node Uma classe representando um ponto de uma rede (node) typedef long coord; typedef long seq; typedef.
1 programa dados Utilização de ficheiros externos A maneira mais simples de escrever para um ficheiro externo é redireccionar a saída de um programa: em.
1 programa dados Utilização de ficheiros externos A maneira mais simples de escrever para um ficheiro externo é redireccionar a saída de um programa: em.
1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa.
Informática e Computação Estrutura de Repetição aula 13
Exercício 1 Faça um programa que receba como entrada o nome e o salário de um funcionário de uma empresa e que calcule o novo valor do salário do.
Aula 07.
Uma classe para vectores
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Metaprogramação – API Reflection da linguagem Java
© 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C (continuação)
Linguagem de Programação II
Linguagem de Programação II
Revisão de Orientação a Objetos e C++
Atributos, Encapsulamento e Interface em Java
VETORES Roteiro da aula Referência ao Programa: Estrutura de Dados
Curso de C/C++ Aula 9 Instrutor: Luiz Felipe Sotero
Programação em C++ Compiladores
Procedural vs. OO (Figuras Geométricas: Área do triângulo)
Programação orientada a objectos em C++
Roteiro Jogo de adivinhação Tarefa Desafio Algoritmo do jogo
Informática e Computação Estrutura de Repetição aula 12
Uso de parâmetros na linha de comando. Parâmetros da função main:
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 07) Prof. Alessandro Bernardo.
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Tipos de dados inteiro caracter real logico
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 03) Prof. Alessandro Bernardo.
1Unidade – Estrutura Condicional CASE Algoritmos e Linguagens de Programação Estrutura Condicional CASE Faculdade INED – Abril 2007 Prof. Edwar.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 08) Prof. Alessandro Bernardo.
VETORES AULA 01 Roteiro da aula Referência ao Programa: Estrutura de Dados.  Variáveis Compostas homogenias   Objetivo: apresentar VETOR.
Linguagem de Programação II
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Fundamentos de Programação 1 Slides 12 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Union, Enum e Typedef ”
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ PAE: Pedro Shiguihara Professor: Dilvan Moreira.
Introdução a Programação
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
Orientação a Objetos - Programação em C++
Ponteiros Parte III.
Curso Profissional de Técnico de Gestão e Programação de Sistemas de Informação Ano Letivo 2017/2018 Programação e Sistemas de Informação 10º Ano.
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
Orientação a Objetos - Programação em C++
Transcrição da apresentação:

Objectos: Introdução O objecto ou classe é o conceito base de uma linguagem de programação por objectos como o C++. Tal como acontecia com as estruturas, um objecto define um novo tipo. Para criar um novo objecto usa-se a declaração class: class myObject; Criamos assim o objecto (tipo) myObject, que não está todavia ainda definido. Curso C++ (J. Seixas)

Primeiro exemplo: classe node Vamos criar uma classe representando um ponto de uma rede (node) typedef long coord; typedef long seq; typedef double dist; class row; class node { public: node(); node(coord x, coord y); dist getDistance(node myNode); dist getDistance(row myRow); coord getXCoord(); coord getYCoord(); private: coord xCoord; coord yCoord; }; Forward declaration Acesso a todos Construtor Member functions Acesso só à classe Data members Não esquecer o ;! Curso C++ (J. Seixas)

Primeiro exemplo: classe node Conteúdo do ficheiro node.h #include <iostream> using namespace std; typedef long coord; typedef long seq; typedef double dist; class row; class node { public: node(); node(coord x, coord y); dist getDistance(node myNode); dist getDistance(row myRow); coord getXCoord(); coord getYCoord(); private: coord xCoord; coord yCoord; }; Curso C++ (J. Seixas)

Primeiro exemplo: classe node Conteúdo do ficheiro node.cpp #include "node.h" using namespace std; node::node(){} node::node(coord x, coord y){ xCoord = x; yCoord = y; } coord node::getXCoord(){ return xCoord; coord node::getYCoord(){ return yCoord; Curso C++ (J. Seixas)

Primeiro exemplo: classe node Conteúdo do ficheiro main.cpp #include <iostream> #include "node.h" using namespace std; int main(int argc, char *argv[]) { node origin(0,0); coord x,y; seq Nx, Ny; cout << "Introduza as coordenadas do nodo: "; cin >> x >> y; node point2D(x,y); cout << "Introduza o tamanho da rede (Nx Ny): "; cin >> Nx >> Ny; seq seqNodePosition=y*Nx+x; // start at 0! cout << "Posicao sequencial: " << seqNodePosition << endl; cout << "Coordenada x do nodo: " << point2D.getXCoord() << endl; cout << "Coordenada x do nodo: " << point2D.xCoord << endl; cout << "Coordenada y do nodo: " << point2D.getYCoord() << endl; return 0; } Curso C++ (J. Seixas)

Primeiro exemplo: classe node Compilação : g++ -o node node.cpp main.cpp Resultado: $ ./node.exe Introduza as coordenadas do nodo: 2 3 Introduza o tamanho da rede (Nx Ny): 10 10 Posicao sequencial: 32 Coordenada x do nodo: 2 Coordenada y do nodo: 3 Curso C++ (J. Seixas)

Primeiro exemplo: classe node O que significa privado ao nível do compilador: #include <iostream> #include "node.h" using namespace std; int main(int argc, char *argv[]) { node origin(0,0); coord x,y; seq Nx, Ny; cout << "Introduza as coordenadas do nodo: "; cin >> x >> y; node point2D(x,y); cout << "Introduza o tamanho da rede (Nx Ny): "; cin >> Nx >> Ny; seq seqNodePosition=y*Nx+x; // start at 0! cout << "Posicao sequencial: " << seqNodePosition << endl; cout << "Coordenada x do nodo: " << point2D.getXCoord() << endl; cout << "Coordenada x do nodo: " << point2D.xCoord << endl; cout << "Coordenada y do nodo: " << point2D.getYCoord() << endl; return 0; } Curso C++ (J. Seixas)

Primeiro exemplo: classe node O que significa privado ao nível do compilador: $ g++ -o node main.cpp node.cpp main.cpp: In function `int main(int, char**)': node.h:20: error: `coord node::xCoord' is private main.cpp:19: error: within this context Curso C++ (J. Seixas)

Primeiro exemplo: classe node Cada instância do objecto é uma entidade autónoma com as suas definições próprias: #include <iostream> #include "node.h" using namespace std; int main(int argc, char *argv[]) { node origin(0,0); coord x,y,w,z; seq Nx, Ny; cout << "Introduza as coordenadas do nodo 1: "; cin >> x >> y; node point2D1(x,y); cout << "Introduza as coordenadas do nodo 2: "; cin >> w >> z; node point2D2(w,z); cout << "Coordenada x do nodo 1: " << point2D1.getXCoord() << endl; cout << "Coordenada y do nodo 1: " << point2D1.getYCoord() << endl; cout << "Coordenada x do nodo 2: " << point2D2.getXCoord() << endl; cout << "Coordenada y do nodo 2: " << point2D2.getYCoord() << endl; return 0; } Curso C++ (J. Seixas)

Primeiro exemplo: classe node Cada instância do objecto é uma entidade autónoma com as suas definições próprias: Introduza as coordenadas do nodo 1: 2 3 Introduza as coordenadas do nodo 2: 4 5 Coordenada x do nodo 1: 2 Coordenada y do nodo 1: 3 Coordenada x do nodo 2: 4 Coordenada y do nodo 2: 5 Curso C++ (J. Seixas)

Primeiro exemplo: classe node As funções get e set (node.h): #include <iostream> using namespace std; typedef long coord; typedef long seq; typedef double dist; class row; class node { public: node(); node(coord x, coord y); dist getDistance(node myNode); dist getDistance(row myRow); coord getXCoord(); coord getYCoord(); void setXCoord( coord x ); void setYCoord( coord y ); void setCoordinates( coord x , coord y); private: coord xCoord; coord yCoord; }; Curso C++ (J. Seixas)

Primeiro exemplo: classe node As funções get e set (node.cpp): #include "node.h" using namespace std; node::node(){} node::node(coord x, coord y){ xCoord = x; yCoord = y; } coord node::getXCoord(){ return xCoord; coord node::getYCoord(){ return yCoord; void node::setXCoord( coord x ){ xCoord=x; void node::setYCoord( coord y ){ yCoord=y; void node::setCoordinates( coord x , coord y){ Curso C++ (J. Seixas)

Primeiro exemplo: classe node As funções get e set (main.cpp): #include <iostream> #include "node.h" using namespace std; int main(int argc, char *argv[]) { node origin(0,0); coord x,y,w,z; seq Nx, Ny; cout << "Introduza as coordenadas do nodo 1: "; cin >> x >> y; node point2D1; point2D1.setXCoord(x); point2D1.setYCoord(y); cout << "Introduza as coordenadas do nodo 2: "; cin >> w >> z; node point2D2; point2D2.setCoordinates(w,z); cout << "Coordenada x do nodo 1: " << point2D1.getXCoord() << endl; cout << "Coordenada y do nodo 1: " << point2D1.getYCoord() << endl; cout << "Coordenada x do nodo 2: " << point2D2.getXCoord() << endl; cout << "Coordenada y do nodo 2: " << point2D2.getYCoord() << endl; return 0; } Curso C++ (J. Seixas)

Primeiro exemplo: classe node As funções get e set (resultado): Introduza as coordenadas do nodo 1: 1 2 Introduza as coordenadas do nodo 2: 2 3 Coordenada x do nodo 1: 1 Coordenada y do nodo 1: 2 Coordenada x do nodo 2: 2 Coordenada y do nodo 2: 3 Curso C++ (J. Seixas)

Funções inline Em C++ para além de macros temos funções inline. Chamar uma função inline é semanticamente equivalente a chamar uma função normal, só que mais rápido. Porquê usar funções inline se temos também macros? Vejamos um exemplo: Curso C++ (J. Seixas)

Funções inline // A macro that returns the absolute value of i #define unsafe(i) \ ( (i) >= 0 ? (i) : -(i) ) // An inline function that returns the absolute value of i inline int safe(int i) { return i >= 0 ? i : -i; } int f(); void userCode(int x) int ans; ans = unsafe(x++); // Error! ans = unsafe(f()); // Danger! ans = safe(x++); // Correct! ans = safe(f()); // Correct! Curso C++ (J. Seixas)

Funções inline Como se declaram inline funções membro: No header file:  class myClass {  public:    void f(int i, char c);  }; No ficheiro de definição cpp: Inline void myClass::f(int i, char c) { ... } Curso C++ (J. Seixas)