SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
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++

Weitere ähnliche Inhalte

Was ist angesagt?

NR10_Medidas_Controle_de_Risco.pdf
NR10_Medidas_Controle_de_Risco.pdfNR10_Medidas_Controle_de_Risco.pdf
NR10_Medidas_Controle_de_Risco.pdfEduardoRobertodeCicc
 
Eletronica basica-1
Eletronica basica-1Eletronica basica-1
Eletronica basica-1elianeac
 
Laudo técnico elétrico modelo
Laudo técnico elétrico   modeloLaudo técnico elétrico   modelo
Laudo técnico elétrico modeloSIBELE ALVES
 
Eletricidade e mecânica aula 6
Eletricidade e mecânica aula 6Eletricidade e mecânica aula 6
Eletricidade e mecânica aula 6Aline Rodrigues
 
Exercícios Sinalização Automatismos I.pptx
Exercícios Sinalização Automatismos I.pptxExercícios Sinalização Automatismos I.pptx
Exercícios Sinalização Automatismos I.pptxOctavioSPereira
 
controlabilidade e observabilidade
controlabilidade e observabilidadecontrolabilidade e observabilidade
controlabilidade e observabilidadeJefferson Pedro
 
O que é interruptor
O que é interruptorO que é interruptor
O que é interruptorGaston Viti
 
Curso de eletrônica basíca
Curso de eletrônica basícaCurso de eletrônica basíca
Curso de eletrônica basícaantonio rodrigues
 
Daudzdzīvokļu dzīvojamo ēku īpašnieku tiesības un pienākumi siltumapgādes sis...
Daudzdzīvokļu dzīvojamo ēku īpašnieku tiesības un pienākumi siltumapgādes sis...Daudzdzīvokļu dzīvojamo ēku īpašnieku tiesības un pienākumi siltumapgādes sis...
Daudzdzīvokļu dzīvojamo ēku īpašnieku tiesības un pienākumi siltumapgādes sis...Ekonomikas ministrija/ Dzīvo siltāk
 
INSTALAÇÕES ELÉTRICAS EM MÉDIA TENSÃO.pdf
INSTALAÇÕES ELÉTRICAS EM MÉDIA TENSÃO.pdfINSTALAÇÕES ELÉTRICAS EM MÉDIA TENSÃO.pdf
INSTALAÇÕES ELÉTRICAS EM MÉDIA TENSÃO.pdfFernandoCruz586077
 
1 relatorio fonte de tensao tais
1 relatorio fonte de tensao tais1 relatorio fonte de tensao tais
1 relatorio fonte de tensao taisTaís Cananéa
 

Was ist angesagt? (20)

08a comutacao escada
08a comutacao escada08a comutacao escada
08a comutacao escada
 
NR10_Medidas_Controle_de_Risco.pdf
NR10_Medidas_Controle_de_Risco.pdfNR10_Medidas_Controle_de_Risco.pdf
NR10_Medidas_Controle_de_Risco.pdf
 
Aterramento elétrico __
Aterramento elétrico  __Aterramento elétrico  __
Aterramento elétrico __
 
Eletronica basica-1
Eletronica basica-1Eletronica basica-1
Eletronica basica-1
 
Inženiertīkliem piemērojamais būvniecības process
Inženiertīkliem piemērojamais būvniecības processInženiertīkliem piemērojamais būvniecības process
Inženiertīkliem piemērojamais būvniecības process
 
Aterramento
AterramentoAterramento
Aterramento
 
Fotoelektrisko sistēmu uzstādīšana (vadlīnijas)
Fotoelektrisko sistēmu uzstādīšana (vadlīnijas)Fotoelektrisko sistēmu uzstādīšana (vadlīnijas)
Fotoelektrisko sistēmu uzstādīšana (vadlīnijas)
 
Programando microcontroladores pic março
Programando microcontroladores pic marçoProgramando microcontroladores pic março
Programando microcontroladores pic março
 
01 cabines primárias parte 1
01 cabines primárias   parte 101 cabines primárias   parte 1
01 cabines primárias parte 1
 
Laudo técnico elétrico modelo
Laudo técnico elétrico   modeloLaudo técnico elétrico   modelo
Laudo técnico elétrico modelo
 
Eletricidade e mecânica aula 6
Eletricidade e mecânica aula 6Eletricidade e mecânica aula 6
Eletricidade e mecânica aula 6
 
Exercícios Sinalização Automatismos I.pptx
Exercícios Sinalização Automatismos I.pptxExercícios Sinalização Automatismos I.pptx
Exercícios Sinalização Automatismos I.pptx
 
controlabilidade e observabilidade
controlabilidade e observabilidadecontrolabilidade e observabilidade
controlabilidade e observabilidade
 
Eletrônica digital aula 01
Eletrônica digital   aula 01Eletrônica digital   aula 01
Eletrônica digital aula 01
 
Aula 07 - lista linear
Aula 07 - lista linearAula 07 - lista linear
Aula 07 - lista linear
 
O que é interruptor
O que é interruptorO que é interruptor
O que é interruptor
 
Curso de eletrônica basíca
Curso de eletrônica basícaCurso de eletrônica basíca
Curso de eletrônica basíca
 
Daudzdzīvokļu dzīvojamo ēku īpašnieku tiesības un pienākumi siltumapgādes sis...
Daudzdzīvokļu dzīvojamo ēku īpašnieku tiesības un pienākumi siltumapgādes sis...Daudzdzīvokļu dzīvojamo ēku īpašnieku tiesības un pienākumi siltumapgādes sis...
Daudzdzīvokļu dzīvojamo ēku īpašnieku tiesības un pienākumi siltumapgādes sis...
 
INSTALAÇÕES ELÉTRICAS EM MÉDIA TENSÃO.pdf
INSTALAÇÕES ELÉTRICAS EM MÉDIA TENSÃO.pdfINSTALAÇÕES ELÉTRICAS EM MÉDIA TENSÃO.pdf
INSTALAÇÕES ELÉTRICAS EM MÉDIA TENSÃO.pdf
 
1 relatorio fonte de tensao tais
1 relatorio fonte de tensao tais1 relatorio fonte de tensao tais
1 relatorio fonte de tensao tais
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#biandamakengo08
 
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
 

Ähnlich wie Aula 02 - Classes em C++ ( Parte 1 ) (20)

Aula03
Aula03Aula03
Aula03
 
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 )
 
Aula1
Aula1Aula1
Aula1
 
Java7
Java7Java7
Java7
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
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)
 

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

Mehr von 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++