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

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

PROGRAMAÇÃO ORIENTADA A OBJECTOS EM C++ Criação e Utilização de classes e objectos.

Apresentações semelhantes


Apresentação em tema: "PROGRAMAÇÃO ORIENTADA A OBJECTOS EM C++ Criação e Utilização de classes e objectos."— 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 Uma classe é muito parecida a uma estrutura de dados (struct). Recordando uma struct: struct nome_estrutura { } [lista de variáveis do tipo da estrutura]

7 Classe Formato Geral da Classe: Class nome_classe { } [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: #include main(){ class pessoa{ public : char nome[40]; int idade; } p1; strcpy(p1.nome, “Ana”); p1.idade=16; cout<<“Nome:” << p1.nome; cout <<“Idade” <

11 Criação e utilização de classes e objectos: Programa com uma função dentro da classe: # include 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<

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

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 *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.setcodigo (“A-101”); e1.setsalario (1000); p1.mostradados(); }

22 Resolução de escopo void empregado::mostradados(){ //operador de //resolução de escopo cout<<“Nome”<

23 Passagem de objectos para funções … Class produto{ float valor; public: void atribui (float v) {valor=v;} void escreve () {cout<

24 Passagem de objectos para funções através de apontadores … Class produto{ float valor; public: void atribui (float v) {valor=;} void escreve () {cout<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++ Criação e Utilização de classes e objectos."

Apresentações semelhantes


Anúncios Google