A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação orientada a objectos em C++

Apresentações semelhantes


Apresentação em tema: "Programação orientada a objectos em C++"— Transcrição da apresentação:

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

2 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.

3 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;

4 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;

5 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;

6 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]

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

8 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.

9 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.

10 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;}

11 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); }

12 Cont. Output: Ana 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;

13 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);

14 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;}

15 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;

16 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;

17 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;}

18 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;}

19 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.

20 …. 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(); };

21 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(); }

22 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.

23 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 }

24 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 }


Carregar ppt "Programação orientada a objectos em C++"

Apresentações semelhantes


Anúncios Google