SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Palestra: Classes em C++
Lucas Santana Lellis
lellis@unifesp.br
PESL - Programa de Educa¸c˜ao em Software livre
Universidade Federal de S˜ao Paulo
27 de Setembro de 2013
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
1 Introdu¸c˜ao
2 O que s˜ao Objetos e Classes?
Objetos
Classes
3 Construtores e Destrutores
Construtores
Destrutores
4 Encapsulamento
Especificadores de acesso
Implementa¸c˜ao das fun¸c˜oes ”get”
Implementa¸c˜ao das fun¸c˜oes ”set”
5 Conclus˜ao
O que vem pela frente?
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Introdu¸c˜ao
Nessa palestras vamos apresentar um dos recursos mais
importantes do C++: As CLASSES. Vamos introduzir o
conceito de classes e apresentar t´ecnicas de implementa¸c˜ao e
utiliza¸c˜ao.
Tudo o que pode ser visto como um tipo de dado, ou uma
classe de objetos ou conceitos, pode ser representado como
uma classe.
O c´odigo pode ficar muito mais limpo, e muito mais intuitivo.
Somado com alguns recursos auxiliares, podemos criar tipos
de dados extremamente vers´ateis, sendo poss´ıvel programar
seus operadores, e/ou tamb´em, criar classes ”Template” (
Classes que recebem um tipo de dados como parˆametro ).
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Objetos
Classes
O que s˜ao Objetos e Classes?
Antes de definir o que ´e uma ”classe” em C++, temos que definir
o que s˜ao ”Objetos” e ”Classes” no mundo real. Sem os ”objetos”
n˜ao ter´ıamos ”classes de objetos”...
Vamos tomar emprestado da aula introdut´oria, a defini¸c˜ao que
criamos para ”Classes” e para ”Objetos”.
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Objetos
Classes
Objetos
O Mundo Real ´e formado por objetos que interagem entre si (casa,
carro, aluno, professor, etc)
O que ´e um objeto?
Qualquer coisa, real ou abstrata, com limites e significados bem
definidos para a aplica¸c˜ao. Possuem um estado (valores de
atributos) e oferecem opera¸c˜oes (comportamentos) para examinar
ou alterar este estado.
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Objetos
Classes
Podemos representar um objeto como uma entidade individual, que
possui seus atributos e suas fun¸c˜oes.
Em C++, os atributos seriam as vari´aveis que guardam suas
informa¸c˜oes. E as fun¸c˜oes, ou ( m´etodos ), s˜ao fun¸c˜oes usadas
para interagir com esse objeto, como uma fun¸c˜ao usada para
mudar algum atributo, por exemplo.
Pera a´ı!
S´o um detalhe, n´os n˜ao programamos objetos diretamente!!
Temos que criar uma CLASSE de objetos antes.
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Objetos
Classes
Classes
O que ´e uma classe?
´E uma forma de CLASSIFICAR um tipo de objetos.. Ou seja,
quando dois objetos possuem o mesmo tipo de atributos e as
mesmas fun¸c˜oes, eles pertencem a uma mesma classe.
Assim que criamos uma classe, podemos INSTANCIAR um objeto,
com seus respectivos atributos, que s˜ao individuais para cada
objeto.
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Objetos
Classes
Struct: O grande ancestral
Ao cursar a mat´eria de ”Algoritmos e Estrutura de Dados”, usando
a linguagem C, n´os costum´avamos criar tipos de dados a partir de
STRUCTS. Aquilo que fizemos em AED ´e muito parecido com
uma classe. Por´em, a orienta¸c˜ao a objetos, em especial o C++,
trazem recursos que v˜ao muito al´em do que se pode fazer com um
struct. E melhor! D´a pra fazer muita coisa sem usar aloca¸c˜ao
dinˆamica e ponteiros. Al´em da seguran¸ca oferecida pela t´ecnica de
Encapsulamento, e a reutiliza¸c˜ao de c´odigo que s´o ´e poss´ıvel por
causa dos conceitos de orienta¸c˜ao a objetos, como heran¸ca,
polimorfismo, e tamb´em pela programa¸c˜ao gen´erica (Templates).
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Objetos
Classes
Classes em C++
Declarando uma classe.
class nome_da_classe {
public:
//Atributos
int X, Y;
//Metodos
int funcao ( int val ) {
return ( X*val + Y );
}
};
Podemos decidir ”o quˆe” e ”como” as outras classes interagem
com a nossa classe. Por meio do ”encapsulamento”, que ser´a
melhor trabalhado nas pr´oximas palestras.
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Construtores
Destrutores
Construtores e Destrutores
Como muitos sabem, as classes em C++, em situa¸c˜oes normais,
n˜ao precisam da ajuda do programador para fazer a aloca¸c˜ao
dinˆamica de mem´oria. Al´em disso ela tem um coletor de lixo. Ou
seja, normalmente n˜ao precisamos alocar e liberar mem´oria
manualmente, muita coisa j´a ´e implementada durante a
compila¸c˜ao do programa.
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Construtores
Destrutores
Construtores
Construtores s˜ao as fun¸c˜oes respons´aveis por inicializar as
vari´aveis dentro de um objeto. Vocˆe chama um construtor
durante a instancia¸c˜ao de um objeto.
Se vocˆe n˜ao criar um construtor, os construtores
implementados automaticamente pelo compilador v˜ao criar
objetos vazios, e ent˜ao, vocˆe precisaria inicializar cada vari´avel
desse objeto separadamente.
Com um construtor vocˆe poupa v´arias linhas de c´odigo ;).
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Construtores
Destrutores
Implementando um construtor
class Circulo {
public:
int pos_X, pos_Y;
int raio;
Circulo ( int X, int Y, int r ) { //Construtor
pos_X = X;
pos_Y = Y;
raio = r;
}
};
int main () { //Instanciando um objeto usando o Construtor
Circulo c1 ( 10, 10, 5 );
}
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Construtores
Destrutores
Destrutores
Sabe-se que o C++ j´a faz coleta autom´atica das vari´aveis e
dos objetos que deixamos para tr´as.
Os Destrutores servem para liberar os dados que foram
alocados dinˆamicamente ( usando new ).
Para liberar a mem´oria alocada pela fun¸c˜ao new, usamos a
fun¸c˜ao delete.
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Construtores
Destrutores
Construtor com aloca¸c˜ao dinˆamica de matriz
class Matriz {
public:
unsigned int lin, col;
int ** mat; //Ponteiro == Vai precisar de al. dinamica
Matriz ( unsigned int l, unsigned int c ) {
lin = l; col = c;
mat = new int* [l];
for ( unsigned int i = 0; i < l; i++ )
mat[i] = new int[col];
}
// ...
};
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Construtores
Destrutores
Destrutor
class Matriz {
// ...
/* So precisamos deletar as variaveis alocadas atraves
da funcao new */
virtual ~Matriz() {
for (int i=0; i<col; i++ )
delete mat[i];
delete mat;
}
// ...
};
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Especificadores de acesso
Implementa¸c˜ao das fun¸c˜oes ”get”
Implementa¸c˜ao das fun¸c˜oes ”set”
Encapsulamento
Muitas vezes n˜ao queremos que as outras classes tenham
acesso direto `a vari´aveis e fun¸c˜oes espec´ıficas dos objetos de
uma classe espec´ıfica. A t´ecnica respons´avel pelo controle de
acesso aos elementos de uma classe ´e o ”encapsulamento”.
N´os podemos controlar esse acesso usando os chamados
”especificadores de acesso”.
Os especificadores de acesso s˜ao conhecidos pelos
identificadores ”public”, ”private” e ”protected”.
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Especificadores de acesso
Implementa¸c˜ao das fun¸c˜oes ”get”
Implementa¸c˜ao das fun¸c˜oes ”set”
Esses especificadores modificam os direitos de acesso que as
classes e fun¸c˜oes externas tˆem sobre os elementos de uma classe.
Os membros privados ( private ) s˜ao acess´ıveis apenas pelos
membros da pr´opria classe, ou pelas classes ”amigas”.
Os membros protegidos ( protected ), al´em dos direitos dados
pelos membros privados, tamb´em estendem esse acesso `as
classes derivadas ( Herdeiras ).
Quando n˜ao colocamos nenhum especificador, os membros
ser˜ao, obrigatoriamente, do tipo ”protected”.
Quando n˜ao h´a heran¸ca, n˜ao h´a a necessidade de diferenciar
”private” de ”protected”.
Os membros p´ublicos ( public ) s˜ao acess´ıveis atrav´es de
qualquer classe ou fun¸c˜ao que interage com os objetos dessa
classe.
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Especificadores de acesso
Implementa¸c˜ao das fun¸c˜oes ”get”
Implementa¸c˜ao das fun¸c˜oes ”set”
Exemplo de utiliza¸c˜ao do encapsulamento
class ContaBancaria {
/* Aqui, para proteger o acesso as variaveis agencia,
conta e saldo. Podemos deixar sem especificador, ou
colocar os especificadores ’’protected’’ ou
’’private’’. */
int agencia;
int conta;
float saldo;
public: //O construtor eh uma funcao publica...
ContaBancaria ( int ag, int cnt ) {
agencia = ag;
conta = cnt;
saldo = 0.0;
}
}
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Especificadores de acesso
Implementa¸c˜ao das fun¸c˜oes ”get”
Implementa¸c˜ao das fun¸c˜oes ”set”
Se, a partir da main, tentarmos acessar alguma das vari´aveis
protegidas da classe ”ContaBancaria”, o compilador ir´a exibir uma
mensagem de erro;
Tentativa de acesso das vari´aveis protegidas
int main () {
Contabancaria teste ( 1234, 99999 );
cout << teste.agencia; // Impossivel!
}
Mas podemos criar fun¸c˜oes de acesso limitado aos dados:
int getX() : Retornam o valor da vari´avel X.
void setX( int val ) : Modificam o valor da vari´avel X.
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Especificadores de acesso
Implementa¸c˜ao das fun¸c˜oes ”get”
Implementa¸c˜ao das fun¸c˜oes ”set”
Podemos exemplificar o uso dos gets estendendo o exerc´ıcio
anterior.
Usando ”gets”
class ContaBancaria {
int agencia, conta;
float saldo; // ...
*/ Essas funcoes abaixo sao publicas e permitem apenas
obter o valor das variaveis, mas sem possibilidade de
edicao */
public:
int getAgencia () { return agencia };
int getConta () { return conta } ;
float getSaldo() { return saldo };
}
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Especificadores de acesso
Implementa¸c˜ao das fun¸c˜oes ”get”
Implementa¸c˜ao das fun¸c˜oes ”set”
Vamos exemplificar agora o uso dos sets.
Usando ”sets”
class ContaBancaria {
int agencia, conta;
float saldo; // ...
*/ Agora, somente o saldo pode ser alterado. */
public:
void setSaldo ( float novo_saldo ) { saldo =
novo_saldo; }
}
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Especificadores de acesso
Implementa¸c˜ao das fun¸c˜oes ”get”
Implementa¸c˜ao das fun¸c˜oes ”set”
Agora est´a tudo certo, n´e? .. Bom, na verdade n˜ao, pois n˜ao
podemos permitir que o saldo seja alterado diretamente, que tal
implementar fun¸c˜oes de saque e dep´osito?
Fun¸c˜oes de saque e dep´osito
class ContaBancaria {
void saque ( float valor ) {
if ( saldo >= valor )
saldo -= valor;
}
void deposito ( float valor ){
saldo += valor;
}
}
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
Especificadores de acesso
Implementa¸c˜ao das fun¸c˜oes ”get”
Implementa¸c˜ao das fun¸c˜oes ”set”
Para finalizar, vamos mostrar como utilizar essas fun¸c˜oes no
programa.
Usando as fun¸c˜ao no nosso programa
int main () {
Contabancaria teste ( 1234, 99999 );
cout << "AG: " << teste.getAgencia() << " ,CNT: "
<< teste.getConta() << endl;
teste.deposito( 100.0 );
teste.saque ( 50.0 );
cout << "SALDO: " << teste.getSaldo();
/* A saida sera:
AG: 1234, CNT: 99999
SALDO: 50.0
*/
}
Lucas Lellis Classes em C++
Introdu¸c˜ao
O que s˜ao Objetos e Classes?
Construtores e Destrutores
Encapsulamento
Conclus˜ao
O que vem pela frente?
O que vem pela frente?
Teremos palestras todas as sextas-feiras, abordando cada vez
novos conceitos sobre C++. A pr´oxima ser´a ”Classes - Parte 2”,
onde aprofundaremos nossos conhecimentos sobre as classes em
C++.Lembrando que todas as apresenta¸c˜oes desse ciclo de
palestras ser˜ao colocadas no moodle do PESL!
Nossos canais de comunica¸c˜ao
1 MOODLE do PESL - Curso de C++ :
http://pinguim.pro.br/moodle/course/view.php?id=6
2 Portal do Programa de Educa¸c˜ao em Software Livre
http://pinguim.pro.br/
3 Facebook: https://www.facebook.com/PESL.PInguim
4 Youtube: http://www.youtube.com/user/pinguimvideos/
Lucas Lellis Classes em C++

Mais conteúdo relacionado

Mais procurados

Perguntas e Respostas sobre Ensino Híbrido
Perguntas e Respostas sobre Ensino HíbridoPerguntas e Respostas sobre Ensino Híbrido
Perguntas e Respostas sobre Ensino Híbridorosemaralopes
 
Arrays (vetores) em Java
Arrays (vetores) em JavaArrays (vetores) em Java
Arrays (vetores) em JavaDaniel Brandão
 
Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...
Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...
Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...Alex Camargo
 
Algoritmo clique maximo - Analise de Algoritmos
Algoritmo clique maximo  - Analise de AlgoritmosAlgoritmo clique maximo  - Analise de Algoritmos
Algoritmo clique maximo - Analise de AlgoritmosAdilmar Dantas
 
Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição Aislan Rafael
 
Modelagem - Aula 1
Modelagem - Aula 1Modelagem - Aula 1
Modelagem - Aula 1Joabe Amaral
 
Promovendo o alinhamento estratégico por meio da Strategic Inception
Promovendo o alinhamento estratégico por meio da Strategic InceptionPromovendo o alinhamento estratégico por meio da Strategic Inception
Promovendo o alinhamento estratégico por meio da Strategic InceptionMayra de Souza
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHASAparicio Junior
 
WORKSHOP OKR - GESTÃO POR RESULTADOS
WORKSHOP OKR - GESTÃO POR RESULTADOSWORKSHOP OKR - GESTÃO POR RESULTADOS
WORKSHOP OKR - GESTÃO POR RESULTADOSCarlos Silva Júnior
 
Aula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem CAula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem Cprofjr
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceArthur Emanuel
 

Mais procurados (20)

Business Agility com Strategic Inception na Icatu Seguros
Business Agility com Strategic Inception na Icatu SegurosBusiness Agility com Strategic Inception na Icatu Seguros
Business Agility com Strategic Inception na Icatu Seguros
 
Perguntas e Respostas sobre Ensino Híbrido
Perguntas e Respostas sobre Ensino HíbridoPerguntas e Respostas sobre Ensino Híbrido
Perguntas e Respostas sobre Ensino Híbrido
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
Arrays (vetores) em Java
Arrays (vetores) em JavaArrays (vetores) em Java
Arrays (vetores) em Java
 
Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...
Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...
Laboratório de Programação II: Grafos - Matriz de adjacência e Matriz de inci...
 
Algoritmo clique maximo - Analise de Algoritmos
Algoritmo clique maximo  - Analise de AlgoritmosAlgoritmo clique maximo  - Analise de Algoritmos
Algoritmo clique maximo - Analise de Algoritmos
 
Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição
 
Modelagem - Aula 1
Modelagem - Aula 1Modelagem - Aula 1
Modelagem - Aula 1
 
Promovendo o alinhamento estratégico por meio da Strategic Inception
Promovendo o alinhamento estratégico por meio da Strategic InceptionPromovendo o alinhamento estratégico por meio da Strategic Inception
Promovendo o alinhamento estratégico por meio da Strategic Inception
 
Si diagrama de classes
Si  diagrama de classesSi  diagrama de classes
Si diagrama de classes
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Histograma
HistogramaHistograma
Histograma
 
Encapsulamento em oo
Encapsulamento em ooEncapsulamento em oo
Encapsulamento em oo
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHAS
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
WORKSHOP OKR - GESTÃO POR RESULTADOS
WORKSHOP OKR - GESTÃO POR RESULTADOSWORKSHOP OKR - GESTÃO POR RESULTADOS
WORKSHOP OKR - GESTÃO POR RESULTADOS
 
Aula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem CAula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem C
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, Interface
 
12 SQL - Junções / Join
12 SQL - Junções / Join12 SQL - Junções / Join
12 SQL - Junções / Join
 

Destaque

Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dadosJean Martina
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++PeslPinguim
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - MatrizesPacc UAB
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Aula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisAula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisPacc UAB
 
TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++Ellen Diana
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Languagesatvirsandhu9
 

Destaque (14)

Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - Matrizes
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
 
SubProgramas
SubProgramasSubProgramas
SubProgramas
 
Apresentação c++ UFC-Quixadá
Apresentação c++ UFC-QuixadáApresentação c++ UFC-Quixadá
Apresentação c++ UFC-Quixadá
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
599026
599026599026
599026
 
Aula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisAula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionais
 
TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Language
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
C++ Presentation
C++ PresentationC++ Presentation
C++ Presentation
 
C++ programming
C++ programmingC++ programming
C++ programming
 

Semelhante a Aula 02 - Classes em C++ ( Parte 1 )

Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )PeslPinguim
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasBreno Vitorino
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E ClassesCursoSENAC
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0César Augusto Pessôa
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens PooInfogenius
 
Apostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a ParteApostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a ParteIlton Barbosa
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Sérgio Souza Costa
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaMoises Omena
 
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)Marcello Thiry
 

Semelhante a Aula 02 - Classes em C++ ( Parte 1 ) (20)

Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )
 
Aula03
Aula03Aula03
Aula03
 
Aula1
Aula1Aula1
Aula1
 
Java7
Java7Java7
Java7
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
 
v
vv
v
 
SCJA
SCJASCJA
SCJA
 
Virada Tecnológica 2017
Virada Tecnológica 2017Virada Tecnológica 2017
Virada Tecnológica 2017
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E Classes
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
Aula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptxAula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptx
 
Atividade 3
Atividade 3Atividade 3
Atividade 3
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 
Apostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a ParteApostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a Parte
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
 

Mais de PeslPinguim

Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao ArduinoPeslPinguim
 
Aula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalAula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalPeslPinguim
 
Aula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalAula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalPeslPinguim
 
Aula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalAula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalPeslPinguim
 
Aula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalAula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalPeslPinguim
 
Aula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalAula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalPeslPinguim
 
Aula 1 apresentacao
Aula 1 apresentacaoAula 1 apresentacao
Aula 1 apresentacaoPeslPinguim
 
Aula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalAula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalPeslPinguim
 
Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_PeslPinguim
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10PeslPinguim
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5PeslPinguim
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4PeslPinguim
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1PeslPinguim
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7PeslPinguim
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3PeslPinguim
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2PeslPinguim
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9PeslPinguim
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 PeslPinguim
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroPeslPinguim
 

Mais de PeslPinguim (20)

Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Aula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalAula 4 redes Inclusão Digital
Aula 4 redes Inclusão Digital
 
Aula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalAula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão Digital
 
Aula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalAula 3 software Inclusão Digital
Aula 3 software Inclusão Digital
 
Aula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalAula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão Digital
 
Aula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalAula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão Digital
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Aula 1 apresentacao
Aula 1 apresentacaoAula 1 apresentacao
Aula 1 apresentacao
 
Aula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalAula 5 internet Inclusão Digital
Aula 5 internet Inclusão Digital
 
Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoro
 

Aula 02 - Classes em C++ ( Parte 1 )

  • 1. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Palestra: Classes em C++ Lucas Santana Lellis lellis@unifesp.br PESL - Programa de Educa¸c˜ao em Software livre Universidade Federal de S˜ao Paulo 27 de Setembro de 2013 Lucas Lellis Classes em C++
  • 2. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao 1 Introdu¸c˜ao 2 O que s˜ao Objetos e Classes? Objetos Classes 3 Construtores e Destrutores Construtores Destrutores 4 Encapsulamento Especificadores de acesso Implementa¸c˜ao das fun¸c˜oes ”get” Implementa¸c˜ao das fun¸c˜oes ”set” 5 Conclus˜ao O que vem pela frente? Lucas Lellis Classes em C++
  • 3. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Introdu¸c˜ao Nessa palestras vamos apresentar um dos recursos mais importantes do C++: As CLASSES. Vamos introduzir o conceito de classes e apresentar t´ecnicas de implementa¸c˜ao e utiliza¸c˜ao. Tudo o que pode ser visto como um tipo de dado, ou uma classe de objetos ou conceitos, pode ser representado como uma classe. O c´odigo pode ficar muito mais limpo, e muito mais intuitivo. Somado com alguns recursos auxiliares, podemos criar tipos de dados extremamente vers´ateis, sendo poss´ıvel programar seus operadores, e/ou tamb´em, criar classes ”Template” ( Classes que recebem um tipo de dados como parˆametro ). Lucas Lellis Classes em C++
  • 4. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Objetos Classes O que s˜ao Objetos e Classes? Antes de definir o que ´e uma ”classe” em C++, temos que definir o que s˜ao ”Objetos” e ”Classes” no mundo real. Sem os ”objetos” n˜ao ter´ıamos ”classes de objetos”... Vamos tomar emprestado da aula introdut´oria, a defini¸c˜ao que criamos para ”Classes” e para ”Objetos”. Lucas Lellis Classes em C++
  • 5. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Objetos Classes Objetos O Mundo Real ´e formado por objetos que interagem entre si (casa, carro, aluno, professor, etc) O que ´e um objeto? Qualquer coisa, real ou abstrata, com limites e significados bem definidos para a aplica¸c˜ao. Possuem um estado (valores de atributos) e oferecem opera¸c˜oes (comportamentos) para examinar ou alterar este estado. Lucas Lellis Classes em C++
  • 6. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Objetos Classes Podemos representar um objeto como uma entidade individual, que possui seus atributos e suas fun¸c˜oes. Em C++, os atributos seriam as vari´aveis que guardam suas informa¸c˜oes. E as fun¸c˜oes, ou ( m´etodos ), s˜ao fun¸c˜oes usadas para interagir com esse objeto, como uma fun¸c˜ao usada para mudar algum atributo, por exemplo. Pera a´ı! S´o um detalhe, n´os n˜ao programamos objetos diretamente!! Temos que criar uma CLASSE de objetos antes. Lucas Lellis Classes em C++
  • 7. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Objetos Classes Classes O que ´e uma classe? ´E uma forma de CLASSIFICAR um tipo de objetos.. Ou seja, quando dois objetos possuem o mesmo tipo de atributos e as mesmas fun¸c˜oes, eles pertencem a uma mesma classe. Assim que criamos uma classe, podemos INSTANCIAR um objeto, com seus respectivos atributos, que s˜ao individuais para cada objeto. Lucas Lellis Classes em C++
  • 8. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Objetos Classes Struct: O grande ancestral Ao cursar a mat´eria de ”Algoritmos e Estrutura de Dados”, usando a linguagem C, n´os costum´avamos criar tipos de dados a partir de STRUCTS. Aquilo que fizemos em AED ´e muito parecido com uma classe. Por´em, a orienta¸c˜ao a objetos, em especial o C++, trazem recursos que v˜ao muito al´em do que se pode fazer com um struct. E melhor! D´a pra fazer muita coisa sem usar aloca¸c˜ao dinˆamica e ponteiros. Al´em da seguran¸ca oferecida pela t´ecnica de Encapsulamento, e a reutiliza¸c˜ao de c´odigo que s´o ´e poss´ıvel por causa dos conceitos de orienta¸c˜ao a objetos, como heran¸ca, polimorfismo, e tamb´em pela programa¸c˜ao gen´erica (Templates). Lucas Lellis Classes em C++
  • 9. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Objetos Classes Classes em C++ Declarando uma classe. class nome_da_classe { public: //Atributos int X, Y; //Metodos int funcao ( int val ) { return ( X*val + Y ); } }; Podemos decidir ”o quˆe” e ”como” as outras classes interagem com a nossa classe. Por meio do ”encapsulamento”, que ser´a melhor trabalhado nas pr´oximas palestras. Lucas Lellis Classes em C++
  • 10. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Construtores Destrutores Construtores e Destrutores Como muitos sabem, as classes em C++, em situa¸c˜oes normais, n˜ao precisam da ajuda do programador para fazer a aloca¸c˜ao dinˆamica de mem´oria. Al´em disso ela tem um coletor de lixo. Ou seja, normalmente n˜ao precisamos alocar e liberar mem´oria manualmente, muita coisa j´a ´e implementada durante a compila¸c˜ao do programa. Lucas Lellis Classes em C++
  • 11. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Construtores Destrutores Construtores Construtores s˜ao as fun¸c˜oes respons´aveis por inicializar as vari´aveis dentro de um objeto. Vocˆe chama um construtor durante a instancia¸c˜ao de um objeto. Se vocˆe n˜ao criar um construtor, os construtores implementados automaticamente pelo compilador v˜ao criar objetos vazios, e ent˜ao, vocˆe precisaria inicializar cada vari´avel desse objeto separadamente. Com um construtor vocˆe poupa v´arias linhas de c´odigo ;). Lucas Lellis Classes em C++
  • 12. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Construtores Destrutores Implementando um construtor class Circulo { public: int pos_X, pos_Y; int raio; Circulo ( int X, int Y, int r ) { //Construtor pos_X = X; pos_Y = Y; raio = r; } }; int main () { //Instanciando um objeto usando o Construtor Circulo c1 ( 10, 10, 5 ); } Lucas Lellis Classes em C++
  • 13. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Construtores Destrutores Destrutores Sabe-se que o C++ j´a faz coleta autom´atica das vari´aveis e dos objetos que deixamos para tr´as. Os Destrutores servem para liberar os dados que foram alocados dinˆamicamente ( usando new ). Para liberar a mem´oria alocada pela fun¸c˜ao new, usamos a fun¸c˜ao delete. Lucas Lellis Classes em C++
  • 14. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Construtores Destrutores Construtor com aloca¸c˜ao dinˆamica de matriz class Matriz { public: unsigned int lin, col; int ** mat; //Ponteiro == Vai precisar de al. dinamica Matriz ( unsigned int l, unsigned int c ) { lin = l; col = c; mat = new int* [l]; for ( unsigned int i = 0; i < l; i++ ) mat[i] = new int[col]; } // ... }; Lucas Lellis Classes em C++
  • 15. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Construtores Destrutores Destrutor class Matriz { // ... /* So precisamos deletar as variaveis alocadas atraves da funcao new */ virtual ~Matriz() { for (int i=0; i<col; i++ ) delete mat[i]; delete mat; } // ... }; Lucas Lellis Classes em C++
  • 16. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Especificadores de acesso Implementa¸c˜ao das fun¸c˜oes ”get” Implementa¸c˜ao das fun¸c˜oes ”set” Encapsulamento Muitas vezes n˜ao queremos que as outras classes tenham acesso direto `a vari´aveis e fun¸c˜oes espec´ıficas dos objetos de uma classe espec´ıfica. A t´ecnica respons´avel pelo controle de acesso aos elementos de uma classe ´e o ”encapsulamento”. N´os podemos controlar esse acesso usando os chamados ”especificadores de acesso”. Os especificadores de acesso s˜ao conhecidos pelos identificadores ”public”, ”private” e ”protected”. Lucas Lellis Classes em C++
  • 17. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Especificadores de acesso Implementa¸c˜ao das fun¸c˜oes ”get” Implementa¸c˜ao das fun¸c˜oes ”set” Esses especificadores modificam os direitos de acesso que as classes e fun¸c˜oes externas tˆem sobre os elementos de uma classe. Os membros privados ( private ) s˜ao acess´ıveis apenas pelos membros da pr´opria classe, ou pelas classes ”amigas”. Os membros protegidos ( protected ), al´em dos direitos dados pelos membros privados, tamb´em estendem esse acesso `as classes derivadas ( Herdeiras ). Quando n˜ao colocamos nenhum especificador, os membros ser˜ao, obrigatoriamente, do tipo ”protected”. Quando n˜ao h´a heran¸ca, n˜ao h´a a necessidade de diferenciar ”private” de ”protected”. Os membros p´ublicos ( public ) s˜ao acess´ıveis atrav´es de qualquer classe ou fun¸c˜ao que interage com os objetos dessa classe. Lucas Lellis Classes em C++
  • 18. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Especificadores de acesso Implementa¸c˜ao das fun¸c˜oes ”get” Implementa¸c˜ao das fun¸c˜oes ”set” Exemplo de utiliza¸c˜ao do encapsulamento class ContaBancaria { /* Aqui, para proteger o acesso as variaveis agencia, conta e saldo. Podemos deixar sem especificador, ou colocar os especificadores ’’protected’’ ou ’’private’’. */ int agencia; int conta; float saldo; public: //O construtor eh uma funcao publica... ContaBancaria ( int ag, int cnt ) { agencia = ag; conta = cnt; saldo = 0.0; } } Lucas Lellis Classes em C++
  • 19. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Especificadores de acesso Implementa¸c˜ao das fun¸c˜oes ”get” Implementa¸c˜ao das fun¸c˜oes ”set” Se, a partir da main, tentarmos acessar alguma das vari´aveis protegidas da classe ”ContaBancaria”, o compilador ir´a exibir uma mensagem de erro; Tentativa de acesso das vari´aveis protegidas int main () { Contabancaria teste ( 1234, 99999 ); cout << teste.agencia; // Impossivel! } Mas podemos criar fun¸c˜oes de acesso limitado aos dados: int getX() : Retornam o valor da vari´avel X. void setX( int val ) : Modificam o valor da vari´avel X. Lucas Lellis Classes em C++
  • 20. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Especificadores de acesso Implementa¸c˜ao das fun¸c˜oes ”get” Implementa¸c˜ao das fun¸c˜oes ”set” Podemos exemplificar o uso dos gets estendendo o exerc´ıcio anterior. Usando ”gets” class ContaBancaria { int agencia, conta; float saldo; // ... */ Essas funcoes abaixo sao publicas e permitem apenas obter o valor das variaveis, mas sem possibilidade de edicao */ public: int getAgencia () { return agencia }; int getConta () { return conta } ; float getSaldo() { return saldo }; } Lucas Lellis Classes em C++
  • 21. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Especificadores de acesso Implementa¸c˜ao das fun¸c˜oes ”get” Implementa¸c˜ao das fun¸c˜oes ”set” Vamos exemplificar agora o uso dos sets. Usando ”sets” class ContaBancaria { int agencia, conta; float saldo; // ... */ Agora, somente o saldo pode ser alterado. */ public: void setSaldo ( float novo_saldo ) { saldo = novo_saldo; } } Lucas Lellis Classes em C++
  • 22. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Especificadores de acesso Implementa¸c˜ao das fun¸c˜oes ”get” Implementa¸c˜ao das fun¸c˜oes ”set” Agora est´a tudo certo, n´e? .. Bom, na verdade n˜ao, pois n˜ao podemos permitir que o saldo seja alterado diretamente, que tal implementar fun¸c˜oes de saque e dep´osito? Fun¸c˜oes de saque e dep´osito class ContaBancaria { void saque ( float valor ) { if ( saldo >= valor ) saldo -= valor; } void deposito ( float valor ){ saldo += valor; } } Lucas Lellis Classes em C++
  • 23. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao Especificadores de acesso Implementa¸c˜ao das fun¸c˜oes ”get” Implementa¸c˜ao das fun¸c˜oes ”set” Para finalizar, vamos mostrar como utilizar essas fun¸c˜oes no programa. Usando as fun¸c˜ao no nosso programa int main () { Contabancaria teste ( 1234, 99999 ); cout << "AG: " << teste.getAgencia() << " ,CNT: " << teste.getConta() << endl; teste.deposito( 100.0 ); teste.saque ( 50.0 ); cout << "SALDO: " << teste.getSaldo(); /* A saida sera: AG: 1234, CNT: 99999 SALDO: 50.0 */ } Lucas Lellis Classes em C++
  • 24. Introdu¸c˜ao O que s˜ao Objetos e Classes? Construtores e Destrutores Encapsulamento Conclus˜ao O que vem pela frente? O que vem pela frente? Teremos palestras todas as sextas-feiras, abordando cada vez novos conceitos sobre C++. A pr´oxima ser´a ”Classes - Parte 2”, onde aprofundaremos nossos conhecimentos sobre as classes em C++.Lembrando que todas as apresenta¸c˜oes desse ciclo de palestras ser˜ao colocadas no moodle do PESL! Nossos canais de comunica¸c˜ao 1 MOODLE do PESL - Curso de C++ : http://pinguim.pro.br/moodle/course/view.php?id=6 2 Portal do Programa de Educa¸c˜ao em Software Livre http://pinguim.pro.br/ 3 Facebook: https://www.facebook.com/PESL.PInguim 4 Youtube: http://www.youtube.com/user/pinguimvideos/ Lucas Lellis Classes em C++