SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
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++

Contenu connexe

Tendances

Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Karoline Tavares
 
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
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Pacc UAB
 
Minicurso Shell Script
Minicurso Shell ScriptMinicurso Shell Script
Minicurso Shell ScriptLuís Eduardo
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
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
 
Normalização de dados - Primeira forma normal
Normalização de dados - Primeira forma normalNormalização de dados - Primeira forma normal
Normalização de dados - Primeira forma normalvitorleyva
 
Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Thyago Maia
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controleProfessor Samuel Ribeiro
 
09 programando em python - classes
 09   programando em python - classes 09   programando em python - classes
09 programando em python - classesVictor Marcelino
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Arquitetura Interna do Computador
Arquitetura Interna do ComputadorArquitetura Interna do Computador
Arquitetura Interna do ComputadorSara Gonçalves
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Logica Proposicional
Logica ProposicionalLogica Proposicional
Logica ProposicionalAdolfo Neto
 
Aula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfAula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfMarcelo Silva
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao SwingArthur Emanuel
 

Tendances (20)

Structs em C
Structs em CStructs em C
Structs em C
 
Algoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e MatrizesAlgoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e Matrizes
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1
 
Minicurso Shell Script
Minicurso Shell ScriptMinicurso Shell Script
Minicurso Shell Script
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
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,...
 
Normalização de dados - Primeira forma normal
Normalização de dados - Primeira forma normalNormalização de dados - Primeira forma normal
Normalização de dados - Primeira forma normal
 
Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
09 programando em python - classes
 09   programando em python - classes 09   programando em python - classes
09 programando em python - classes
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Arquitetura Interna do Computador
Arquitetura Interna do ComputadorArquitetura Interna do Computador
Arquitetura Interna do Computador
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Logica Proposicional
Logica ProposicionalLogica Proposicional
Logica Proposicional
 
Aula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfAula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdf
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
 

En vedette

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

En vedette (13)

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

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

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

Plus 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
 

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