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

Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
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
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoMarconi Rodrigues
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetosdanielrpgj30
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)Marcello Thiry
 
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...Marcello Thiry
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
Programação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e ImplementaçãoProgramação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e ImplementaçãoEvandro Júnior
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaCristiano Almeida
 
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
 

Tendances (20)

JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
POO - Aula 1
POO - Aula 1POO - Aula 1
POO - Aula 1
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
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)
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 
SCJA
SCJASCJA
SCJA
 
Java - Boas práticas
Java - Boas práticasJava - Boas práticas
Java - Boas práticas
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
 
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Programação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e ImplementaçãoProgramação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e Implementação
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
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
 

En vedette

Recruitment ad multimedia design intern
Recruitment ad multimedia design internRecruitment ad multimedia design intern
Recruitment ad multimedia design internkylelawkc
 
итоговый педсовет
итоговый педсоветитоговый педсовет
итоговый педсоветvirtualtaganrog
 
CC for the Association of Women in Communications, Santa Barbara Chapter
CC for the Association of Women in Communications, Santa Barbara ChapterCC for the Association of Women in Communications, Santa Barbara Chapter
CC for the Association of Women in Communications, Santa Barbara ChapterJane Park
 
Infor Aero Space and Defence
Infor Aero Space and DefenceInfor Aero Space and Defence
Infor Aero Space and DefenceKevin Green
 
XIX Seven Rugby Playa 'Tiburón'
XIX Seven Rugby Playa 'Tiburón'XIX Seven Rugby Playa 'Tiburón'
XIX Seven Rugby Playa 'Tiburón'SCREAM of Rugby
 
SJ_Datasheet_SponsoredJobs
SJ_Datasheet_SponsoredJobsSJ_Datasheet_SponsoredJobs
SJ_Datasheet_SponsoredJobsJitendra Malviya
 
день открытых двере 2014 год
день открытых двере 2014 годдень открытых двере 2014 год
день открытых двере 2014 годvirtualtaganrog
 

En vedette (17)

Vink powerpoint
Vink powerpointVink powerpoint
Vink powerpoint
 
фгос до
фгос дофгос до
фгос до
 
RAISECOM LETTERHEAD 2
RAISECOM LETTERHEAD 2RAISECOM LETTERHEAD 2
RAISECOM LETTERHEAD 2
 
Proyecto
ProyectoProyecto
Proyecto
 
Recruitment ad multimedia design intern
Recruitment ad multimedia design internRecruitment ad multimedia design intern
Recruitment ad multimedia design intern
 
Infor High Tech
Infor High TechInfor High Tech
Infor High Tech
 
Google Apps
Google AppsGoogle Apps
Google Apps
 
итоговый педсовет
итоговый педсоветитоговый педсовет
итоговый педсовет
 
CC for the Association of Women in Communications, Santa Barbara Chapter
CC for the Association of Women in Communications, Santa Barbara ChapterCC for the Association of Women in Communications, Santa Barbara Chapter
CC for the Association of Women in Communications, Santa Barbara Chapter
 
Infor Aero Space and Defence
Infor Aero Space and DefenceInfor Aero Space and Defence
Infor Aero Space and Defence
 
XIX Seven Rugby Playa 'Tiburón'
XIX Seven Rugby Playa 'Tiburón'XIX Seven Rugby Playa 'Tiburón'
XIX Seven Rugby Playa 'Tiburón'
 
SJ_Datasheet_SponsoredJobs
SJ_Datasheet_SponsoredJobsSJ_Datasheet_SponsoredJobs
SJ_Datasheet_SponsoredJobs
 
день открытых двере 2014 год
день открытых двере 2014 годдень открытых двере 2014 год
день открытых двере 2014 год
 
Lon 2
Lon 2Lon 2
Lon 2
 
Zoutelande gids 2015
Zoutelande gids 2015Zoutelande gids 2015
Zoutelande gids 2015
 
Veldleeuwerik powerpoint
Veldleeuwerik powerpointVeldleeuwerik powerpoint
Veldleeuwerik powerpoint
 
Unga 2
Unga 2Unga 2
Unga 2
 

Similaire à Aula02

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
 
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
 
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
 
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
 
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetosguest9b4c7f
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Ilton Barbosa
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 

Similaire à Aula02 (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 )
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++
 
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
 
Virada Tecnológica 2017
Virada Tecnológica 2017Virada Tecnológica 2017
Virada Tecnológica 2017
 
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
 
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 

Aula02

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