Buscar

09-Classes, Objetos e Escopos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Classes, Objetos
e Escopos
Profa. Dra. Ieda Hidalgo
E-mail: iedahidalgo@ft.unicamp.br
Definição de Classe
Classe é um tipo definido pelo usuário que
combina num único registro dados e funções.
A primeira evolução que uma classe
acrescenta à programação é a possibilidade de
se controlar o acesso aos seus membros.
A segunda, é a possibilidade de incluir entre
seus membros funções.
Definição de Objeto
Do mesmo modo que a existência do tipo
“int” não cria uma variável, definir uma
classe não cria um objeto.
Podem ser declaradas variáveis de uma
classe já definida.
As variáveis de tipo classe são chamadas
de objetos ou instâncias da classe.
Nomenclatura
Os dados de um objeto são chamados de dados-
membro ou atributos.
As funções de um objeto são chamadas de
funções-membro ou métodos.
Os membros de uma classe são privados por
default, nas estruturas e uniões eles são
públicos por default.
Definindo uma Classe
A definição de uma classe começa pela
palavra-chave “class”, seguida do nome da
classe e de seu corpo (delimitado por “{“ e
finalizado com um ";“).
Sintaxe
class nome-classe
{
dados e funções privadas
protected:
dados e funções protegidas
public:
dados e funções públicas
} lista-objetos;
Exemplo
class Retangulo // define a classe
{
private: // default, pode ser omitido
int base, altura; // dados-membro
public:
// função-membro inline
void inicia (int b, int h) {base=b; altura=h;}
// função-membro
void imprime()
}; // aqui podem ser criados objetos da classe
Observações
Uma função-membro é inline quando o seu
código está definido no corpo da classe.
Uma função-membro inline pode ser definida
fora da classe usando a palavra inline.
Um membro de uma classe pode ser de
qualquer tipo, inclusive do tipo de outra
classe.
A ordem de declaração de acesso (público,
protegido ou privado) não importa.
Criando Objetos da Classe
Após a definição de uma classe podemos
declarar um objeto desse tipo. Um objeto
contém sua própria cópia de cada membro
definido pela classe.
Declarar um objeto é similar a declarar uma
variável de qualquer tipo.
Sintaxe / Exemplo
Obs: objetos também podem ser
declarados antes do “;” que finaliza a
declaração de uma classe.
Sintaxe:
tipo-classe nome-objeto;
Exemplo:
// declara dois objetos, x e y, da classe Retangulo
Retangulo x, y; 
Acessando Membros do Objeto 
Diretamente
Sintaxe:
nome-objeto.nome-membro
Exemplo:
x.inicia(5,3); // executa a função inicia do objeto x.
Acessando Membros do Objeto 
usando Ponteiro
Sintaxe:
nome-ponteiro->nome-membro
Exemplo:
// declara um objeto y e um ponteiro p da classe Retangulo
Retangulo y ,*p
p = &y; // p recebe o endereço do objeto y
p->inicia(5,3); // executa a função inicia do objeto y
Implementação da Função-Membro
As funções-membro cujo código fica fora da
classe devem ter seu protótipo escrito dentro
da definição da classe. Essa é a maneira de
informar ao compilador que a função faz parte
da classe, embora esteja definida fora dela.
Para implementar uma função membro você
deve dizer ao compilador a que classe a função
pertence, usando o operador de resolução de
escopo “::”.
Sintaxe:
tipo-retorno nome-classe :: nome-função parâmetros
Exemplo:
int Retangulo :: imprime()
{
...
inicia(10, 13);
area = base x altura;
...
}
Dentro da função os membros podem ser usados
diretamente (sem associá-los a um objeto). Isto porque uma
função-membro deve ser chamada em relação a um objeto e,
portanto, não é necessário especificá-lo uma segunda vez.
Criando uma Matriz de Objetos
Sintaxe:
nome-classe nome-objeto tamanho-matriz
Exemplo:
Retangulo y[4];
Atribuindo Objetos
Se ambos os objetos são do mesmo tipo,
então um objeto pode ser atribuído a outro.
Após a atribuição os dois objetos serão
idênticos.
Sintaxe: nome-objeto1 = nome-objeto2;
Retornando Objetos
Para retornar um objeto declare a função
com tipo de retorno igual ao tipo da classe e
retorne um objeto do mesmo tipo usando a
instrução return.
Escopos
No corpo da definição de uma classe, as
palavras: public, private e protected
especificam o acesso e a visibilidade dos
seus membros às partes do sistema.
Tipos de Clientes
Uma classe tem pelo menos três tipos de
clientes:
� clientes por instanciação (são os objetos)
� clientes por herança (são as subclasses
que herdam a estrutura da classe)
� clientes por módulo (são as classes que
estão dentro do mesmo módulo/pacote)
Acesso Público
Os membros públicos podem ser acessados por
qualquer função-membro e por qualquer outra função
do programa onde um objeto foi declarado.
Os membros públicos fazem a interface entre o
programador e a classe.
Geralmente na parte pública da classe são colocadas
as funções que irão operar os dados.
Qualquer um dos 3 tipos de clientes pode fazer acesso,
manipular e invocar diretamente membros declarados
como públicos.
Acesso Privado
Os membros privados podem ser acessados pela
classe inteira, mas não fora dela.
Um membro privado não pode ser acessado por
meio de um objeto.
Geralmente na parte privada da classe são
colocados os membros que conterão dados.
Nenhum dos 3 tipos de clientes tem acesso.
Acesso Protegido
Os membros protegidos são acessados
dentro da própria classe e pelos clientes por
herança.

Outros materiais