Este documento apresenta uma palestra sobre classes em C++. Aborda novos conceitos como organização de projetos em arquivos separados, sobrecarga de funções e construtores, parâmetros padrão e cópia de objetos. A próxima palestra aprofundará ainda mais os conhecimentos sobre classes.
2. Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
Conclus˜ao
1 Introdu¸c˜ao
2 Organiza¸c˜ao
3 Novos recursos
Sobrecarga de fun¸c˜oes
Parˆametros default
Sobrecarga de Construtores e fun¸c˜oes da classe
C´opia de objetos
Membros est´aticos (static)
4 Conclus˜ao
O que vem pela frente?
Lucas Lellis e Rodrigo Torres Classes em C++
3. Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
Conclus˜ao
Introdu¸c˜ao
Na aula anterior definimos melhor o conceito de classe e
objeto, e aprendemos como implement´a-las em C++.
Por´em, tudo estava sendo implementado no mesmo arquivo, e
deixamos alguns conceitos de lado.
Nesta aula vamos aprender novas t´ecnicas de organiza¸c˜ao dos
nossos projetos, falar sobre ponteiros em classes, a palavra
”this” e os membros ”static”.
Lucas Lellis e Rodrigo Torres Classes em C++
4. Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
Conclus˜ao
Informa¸c˜oes b´asicas sobre a organiza¸c˜ao
Podemos organizar os nossos projetos colocando as nossas classes
em arquivos separados, essa organiza¸c˜ao se d´a de duas formas:
Cabe¸calhos e defini¸c˜ao da classe em um arquivo
”Nome-da-classe.h”, implementa¸c˜ao das fun¸c˜oes ficam no
arquivo ”Nome-da-classe.cpp”.
Defini¸c˜ao, cabe¸calhos e implementa¸c˜ao em um mesmo arquivo
”Nome-da-classe.hpp”
Lucas Lellis e Rodrigo Torres Classes em C++
5. Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
Conclus˜ao
Guardas de inclus˜ao
Quando fazemos uma compila¸c˜ao de arquivos separados, ´e poss´ıvel
que haja redundˆancias, como a dupla inclus˜ao de um cabe¸calho de
uma classe. Ou cabe¸calhos que se incluem mutuamente. Esse tipo
de redundˆancia pode levar `a erros de compila¸c˜ao. A solu¸c˜ao ´e
inserir os Guardas de inclus˜ao:
Exemplo
#ifndef CLASSE_H
#define CLASSE_H
class nome_da_classe {
//Atributos
//Metodos
};
#endif //CLASSE_H
Lucas Lellis e Rodrigo Torres Classes em C++
6. Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
Conclus˜ao
Sobrecarga de fun¸c˜oes
Parˆametros default
Sobrecarga de Construtores e fun¸c˜oes da classe
C´opia de objetos
Sobrecarga de fun¸c˜oes
Na linguagem C n´os nunca poder´ıamos criar fun¸c˜oes diferentes
com o mesmo nome. Se eu precisasse de uma fun¸c˜ao idˆentica, mas
com parˆametros diferentes eu teria que criar uma nova fun¸c˜ao.
Exemplo ( C )
int soma ( int a, int b) {
return a + b;
}
int soma3 ( int a, int b, int c ) {
return a + b + c;
}
Lucas Lellis e Rodrigo Torres Classes em C++
7. Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
Conclus˜ao
Sobrecarga de fun¸c˜oes
Parˆametros default
Sobrecarga de Construtores e fun¸c˜oes da classe
C´opia de objetos
Em C++ podemos fazer sobrecarga de fun¸c˜oes, ou seja, podemos
criar duas fun¸c˜oes com o mesmo nome, desde que seus parˆametros
n˜ao sejam semelhantes.
Exemplo ( C++ )
int soma ( int a, int b) {
return a + b;
}
int soma ( int a, int b, int c ) {
return a + b + c;
}
Lucas Lellis e Rodrigo Torres Classes em C++
8. Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
Conclus˜ao
Sobrecarga de fun¸c˜oes
Parˆametros default
Sobrecarga de Construtores e fun¸c˜oes da classe
C´opia de objetos
Parˆametros ”default”
Muitas vezes n´os criamos duas fun¸c˜oes diferentes s´o por causa de
um parˆametro espec´ıfico. Podemos economizar algumas linhas
definindo valores-padr˜ao para um parˆametro.
Exemplo
int soma ( int a, int b, int c = 0 ) {
return a + b + c;
}
int soma ( int x, int y ) { /* .. */} ; //NAO PODE!!
Tome cuidado para n˜ao sobrecarregar outras fun¸c˜oes parecidas,
como no caso acima!
Lucas Lellis e Rodrigo Torres Classes em C++
9. Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
Conclus˜ao
Sobrecarga de fun¸c˜oes
Parˆametros default
Sobrecarga de Construtores e fun¸c˜oes da classe
C´opia de objetos
Sobrecarga de Construtores e fun¸c˜oes da classe
Da mesma forma que fizemos naquelas fun¸c˜oes simples, uma classe
pode ter mais de uma fun¸c˜ao com o mesmo nome, al´em disso,
podemos ter mais de um construtor.
Exemplo
class Circulo {
public:
Circulo ( int X, int Y, int r ); //Construtor 1
Circulo ( int X, int Y ); //Construtor 2
};
Mas cuidado, as vezes ´e mais f´acil definir um valor default.
Lucas Lellis e Rodrigo Torres Classes em C++
10. Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
Conclus˜ao
Sobrecarga de fun¸c˜oes
Parˆametros default
Sobrecarga de Construtores e fun¸c˜oes da classe
C´opia de objetos
C´opia de objetos
Existem construtores especiais, que podem receber um objeto da
pr´opria classe como parˆametro, oferecendo a possibilidade de vocˆe
criar uma c´opia de um objeto. Normalmente eles j´a est˜ao
implementados por padr˜ao.
Exemplo
class Circulo {
public:
Circulo ( int X, int Y, int r ); //Construtor 1
Circulo ( const Circulo& ori ) {
X = ori.X;
Y = ori.Y;
r = ori.r;
}
};
Lucas Lellis e Rodrigo Torres Classes em C++
11. Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
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 e Rodrigo Torres Classes em C++