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

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

Embed Size (px)

Citation preview

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

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

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

Page 3: PROGRAMAÇÃO ORIENTADA A OBJECTOS EM C++ Criação e Utilização de classes e 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;

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

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;

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

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;

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

Struct

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]

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

Classe

Formato Geral da Classe:

Class nome_classe{

<lista de campos>}

[lista de variáveis do tipo da classe]

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

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.

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

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.

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

Exemplo de programa:

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

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

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

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

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;

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

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

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

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

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

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;

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

exemplo

strcpy(p1.nome, “Ana”);p1.setidade(16); // como a idade é privadacout<<p1.nome;cout<<p1.getidade;cout<<p1.ano(2006);

}

SET() : permite introduzir valores em dados privados;

GET() : permite obter os valores de campos privados;

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

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

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

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

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

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.

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

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

};

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

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

}

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

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.

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

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 v1valor_venda(v1); // passa v1 para a funçãov1.escreve(); // escreve 10}

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

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 v1valor_venda(p); // passa v1 para a funçãov1.escreve(); // escreve 10}