Programação orientada a objectos em C++

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
Paulo Marques Hernâni Pedroso
Introdução à Programação Orientada à Objetos Prof. Daniel Merli Lamosa Maio de 2002.
Classes C++ Class nome da classe { private: membros privados
PHPOO Erick Souza. Conceitos de Orientação a Objetos Objeto é um conceito ou item(concreto ou abstrato). Software orientado a objetos Uma classe é uma.
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
Struct slink { slink* next; slink() { next=0; } slink(slink* p) { next=p; } virtual void print_me() = 0; }; next função virtual pura 1º constructor 2º
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.
Orientação a Objetos: Encapsulamento e Classificação
Orientação a Objetos: Modificador Final para Métodos e Classes
Orientação a Objetos: Encapsulamento e Classificação
Orientação a Objetos: Encapsulamento e Classificação
Identificação Única de Objetos Alcides Calsavara.
Iniciação ao Java – Márcio F. Campos
INF Computação Gráfica
Linguagem de Programação 1
LPG-I: Tipos Complexos - Estruturas
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Wagner Santos C. de Jesus
Orientação a Objetos Classes
Universidade Federal do Espírito Santo Programação II Estruturas Professora: Norminda Luiza.
Universidade de Brasília
Escola Secundária c/ 3º CEB da Batalha
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.
2002/2003 Programação Orientada para Objectos 1 Aula 7 - Herança Herança pública: relação é um. A relação tem um. A relação é composto por um. Ponteiros,
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.
Classes e objetos P. O. O. Prof. Grace.
Vamos agora aprender a utilizar estruturas.
Linguagem técnica de programação I Java – REVISÃO
Curso de extensão em Desenvolvimento Web
Classes Revisando: –Forma de implementação de estruturas específicas –Atributos (grupos de dados) –Métodos (conjuntos de procedimentos)
1 Tipos avançados (versão C/C++) Em C/C++ existe a possibilidade de criar novos tipos. Em C esta possibilidade só pode ser materializada com estruturas.
JAVA Orientação a Objetos
Linguagens Orientadas a Objeto
Sobrecarga e Encapsulamento
Oberdan B. Ferreira Polimorfismo Oberdan B. Ferreira
Linguagem de Programação II
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Linguagem de Programação II
Programação I Aula 2 (Métodos)
Estrutura de Dados Avançada
Métodos de Construção de Software: Orientação a Objetos
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Tipos Abstratos de Dados
Linguagens de Programação II Aula 04 – Entendendo Classes
if669 - Introdução à Programação
Orientação a Objetos Parte I
Programação Orientada à Objetos
Definição Classe Objeto Construtor de Classes Manipulando o objeto Namespace Utilização do namespace Herança Polimorfismo Encapsulamento Propriedades.
Wagner Santos C. de Jesus
Aula prática 14 Orientação a Objetos – C++ Parte 2
Implementação Orientada a Objetos – Aula 03
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Herança e Polimorfismos
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Estruturas Revisando: tipos de dados simples
Construtores e Destrutores
Conteúdos Programáticos Criação de classes em VB Criar Criar Manipular Manipular Tipos de acesso Tipos de acesso Constructores Constructores.
Módulo II Capítulo 1: Orientação a Objetos
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista POO para Redes de Computadores.
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
Linguagem Java Programação II.
1 Orientação a Objetos - Programação em C++ 1 o Slides – B : Introdução à OO/C++ Passando à Pratica – Estruturas, Classes e Objetos Engenharia Eletrônica.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Transcrição da apresentação:

Programação orientada a objectos em C++ Criação e Utilização de classes e objectos

Classe É uma estrutura de dados e de funções que permite a criação de variáveis com essa mesmo estrutura. Têm o nome de Objectos.

Objecto É uma instância definida numa classe. Um objecto é uma estrutura composta por: Dados ou atributos: designações para as variáveis existentes nas classes de origem, do objecto; Métodos: designação para as funções incluídas na classe de origem do objecto;

Características deste tipo de programação: Encapsulamento: possibilidade de se ocultar ou controlar o acesso à composição interna da classe, aos seus dados e ao código das suas funções membro; Polimorfismo: Possibilidade de operadores e funções assumirem diferentes formas de forma a poderem ser adaptadas a diferentes tipos de dados;

Características deste tipo de programação (cont.): Herança: Possibilidade de criar novas classes a partir de outras já existentes, recebendo (herança) a sua composição e características;

Struct Recordando uma struct: struct nome_estrutura { Uma classe é muito parecida a uma estrutura de dados (struct). Recordando uma struct: struct nome_estrutura { <lista de campos> } [lista de variáveis do tipo da estrutura]

Classe Formato Geral da Classe: Class nome_classe { <lista de campos> } [lista de variáveis do tipo da classe]

Classe - exemplo class pessoa{ char nome[40]; int idade; } p1; Uma variável declarada como sendo de um tipo de determinada classe deixa de se chamar variável para se chamar objecto.

Public e Private As palavras public e private são usadas para controlar o acesso aos membros da estrutura ou da classe. Com o private o acesso fica limitado ao interior da estrutura ou da classe e com o public, não. A única diferença entre uma estrutura e uma classe, neste aspecto, é que numa struct os membros são public por defeito e numa classe são private por default.

Exemplo de programa: main(){ class pessoa{ public : char nome[40]; #include <iostream> main(){ class pessoa{ public : char nome[40]; int idade; } p1; strcpy(p1.nome, “Ana”); p1.idade=16; cout<<“Nome:” << p1.nome; cout <<“Idade” <<p1.idade;}

Criação e utilização de classes e objectos: Programa com uma função dentro da classe: # include <iostream> main(){ class pessoa{ public: char nome[40]; int idade; int ano (int ano_actual) {return ano_actual – idade;} } p1; strcpy (p1.nome, “Ana”); p1.idade = 16; cout<<p1.nome; cout<<p1.idade; cout <<p1.ano(2006); }

Cont. Output: Ana 16 1990 NOTA: se substituíssemos a palavra class por struct, funcionaria da mesma forma. A função ano() funciona com um parâmetro inteiro (int ano_actual) e devolve um valor inteiro. O valor devolvido é resultante da instrução return ano_actual – idade;

Cont. Modo como é efectuada a chamada à função ano(), que é membro da classe pessoa e objecto p1.ano(2006). A função: É chamada através de um objecto do tipo classe pessoa; p1.ano; É chamada com um parâmetro correspondente ao ano corrente, p1.ano(2006);

exemplo Se a idade deixar de ser public e passar a private a função é aceite mas dá erro. ex. class pessoa{ int idade; public: char nome[40]; int ano (int ano_actual - idade) {return ano_actual – idade;}

Solução: # include <iostream> main(){ class pessoa{ private: idade; public: char nome[40]; void setidade(int i) {idade=i;} int getidade() {return idade;} int ano (int ano_actual) {return ano_actual – idade;} } p1;

exemplo strcpy(p1.nome, “Ana”); p1.setidade(16); // como a idade é privada cout<<p1.nome; cout<<p1.getidade; cout<<p1.ano(2006); } SET() : permite introduzir valores em dados privados; GET() : permite obter os valores de campos privados;

SET() Void setidade(int i) {idade = i;} Função tipo void porque não retorna nenhum valor. utiliza o parametro i (int i) para receber como argumento de chamada um valor para atribuir ao campo idade: {idade=i;}

GET() Int getidade() {return idade;} Função do tipo int porque retorna um valor desse tipo. Não necessita de parâmetros e limita-se a uma instrução: {return idade;}

Funções-membro definidas fora da classe e operador de resolução de escopo (::) Quando uma função de uma classe é mais extensa, uma outra prática a fazer é escrever as funções fora da classe e dentro da classe declaram-se os protótipos.

…. Class empregado{ char …. Class empregado{ char *codigo; float salario; public: char nome[40]; int idade; void setcodigo (char*c) {codigo=c} void setsalario (float s) {salario=s} int *getcodigo() return codigo;} int getsalario() return slario;} void mostradados(); };

main(){ empregado e1; strcpy(e1. nome, “Miguel”); e1. idade=28; e1 main(){ empregado e1; strcpy(e1.nome, “Miguel”); e1.idade=28; e1.setcodigo (“A-101”); e1.setsalario (1000); p1.mostradados(); }

Resolução de escopo void empregado::mostradados(){ //operador de //resolução de escopo cout<<“Nome”<<nome; cout<<“idade<<idade; cout<<“Codigo”<<getcodigo(); cout<<“salario”<<getsalario(); } :: Informa o compilador que determinada função FX() pertence a determinada classe.

Passagem de objectos para funções … Class produto{ float valor; public: void atribui (float v) {valor=v;} void escreve () {cout<<valor;} }; void valor_venda(venda v){ v.escreve(); // escreve 10 v.atribui(20); //altera só no local v.escreve(); // escreve 20 } main(){ venda v1; v1.atribui(v1); //atribui 10 a v1 valor_venda(v1); // passa v1 para a função v1.escreve(); // escreve 10 }

Passagem de objectos para funções através de apontadores … Class produto{ float valor; public: void atribui (float v) {valor=;} void escreve () {cout<<valor;} }; void valor_venda(venda *v){ V->escreve(); // escreve 10 V->atribui(20); //altera só no local V->escreve(); // escerve 20 } main(){ venda v1, *p; p=&pv1; v1.atribui(v1); //atribui 10 a v1 valor_venda(p); // passa v1 para a função v1.escreve(); // escreve 10 }