IntroducaoOrganizacao
Novos recursosConclusao
Palestra: Classes em C++
Lucas LellisRodrigo Torres
PESL - Programa de Educacao em Software livreUniversidade Federal de Sao Paulo
04 de Outubro de 2013
Lucas Lellis e Rodrigo Torres Classes em C++
IntroducaoOrganizacao
Novos recursosConclusao
1 Introducao
2 Organizacao
3 Novos recursosSobrecarga de funcoesParametros default
Sobrecarga de Construtores e funcoes da classeCopia de objetosMembros estaticos (static)
4 ConclusaoO que vem pela frente?
Lucas Lellis e Rodrigo Torres Classes em C++
IntroducaoOrganizacao
Novos recursosConclusao
Introducao
Na aula anterior definimos melhor o conceito de classe eobjeto, e aprendemos como implementa-las em C++.
Porem, tudo estava sendo implementado no mesmo arquivo, edeixamos alguns conceitos de lado.
Nesta aula vamos aprender novas tecnicas de organizacao dosnossos projetos, falar sobre ponteiros em classes, a palavra”this” e os membros ”static”.
Lucas Lellis e Rodrigo Torres Classes em C++
IntroducaoOrganizacao
Novos recursosConclusao
Informacoes basicas sobre a organizacao
Podemos organizar os nossos projetos colocando as nossas classesem arquivos separados, essa organizacao se da de duas formas:
Cabecalhos e definicao da classe em um arquivo”Nome-da-classe.h”, implementacao das funcoes ficam noarquivo ”Nome-da-classe.cpp”.
Definicao, cabecalhos e implementacao em um mesmo arquivo”Nome-da-classe.hpp”
Lucas Lellis e Rodrigo Torres Classes em C++
IntroducaoOrganizacao
Novos recursosConclusao
Guardas de inclusao
Quando fazemos uma compilacao de arquivos separados, e possıvelque haja redundancias, como a dupla inclusao de um cabecalho deuma classe. Ou cabecalhos que se incluem mutuamente. Esse tipode redundancia pode levar a erros de compilacao. A solucao einserir os Guardas de inclusao:
Exemplo
#ifndef CLASSE_H
#define CLASSE_H
class nome_da_classe {
//Atributos
//Metodos
};
#endif //CLASSE_H
Lucas Lellis e Rodrigo Torres Classes em C++
IntroducaoOrganizacao
Novos recursosConclusao
Sobrecarga de funcoesParametros default
Sobrecarga de Construtores e funcoes da classeCopia de objetos
Sobrecarga de funcoes
Na linguagem C nos nunca poderıamos criar funcoes diferentescom o mesmo nome. Se eu precisasse de uma funcao identica, mascom parametros diferentes eu teria que criar uma nova funcao.
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++
IntroducaoOrganizacao
Novos recursosConclusao
Sobrecarga de funcoesParametros default
Sobrecarga de Construtores e funcoes da classeCopia de objetos
Em C++ podemos fazer sobrecarga de funcoes, ou seja, podemoscriar duas funcoes com o mesmo nome, desde que seus parametrosnao 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++
IntroducaoOrganizacao
Novos recursosConclusao
Sobrecarga de funcoesParametros default
Sobrecarga de Construtores e funcoes da classeCopia de objetos
Parametros ”default”
Muitas vezes nos criamos duas funcoes diferentes so por causa deum parametro especıfico. Podemos economizar algumas linhasdefinindo valores-padrao para um parametro.
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 nao sobrecarregar outras funcoes parecidas,como no caso acima!
Lucas Lellis e Rodrigo Torres Classes em C++
IntroducaoOrganizacao
Novos recursosConclusao
Sobrecarga de funcoesParametros default
Sobrecarga de Construtores e funcoes da classeCopia de objetos
Sobrecarga de Construtores e funcoes da classe
Da mesma forma que fizemos naquelas funcoes simples, uma classepode ter mais de uma funcao com o mesmo nome, alem 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 facil definir um valor default.
Lucas Lellis e Rodrigo Torres Classes em C++
IntroducaoOrganizacao
Novos recursosConclusao
Sobrecarga de funcoesParametros default
Sobrecarga de Construtores e funcoes da classeCopia de objetos
Copia de objetos
Existem construtores especiais, que podem receber um objeto dapropria classe como parametro, oferecendo a possibilidade de vocecriar uma copia de um objeto. Normalmente eles ja estaoimplementados por padrao.
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++
IntroducaoOrganizacao
Novos recursosConclusao
O que vem pela frente?
O que vem pela frente?
Teremos palestras todas as sextas-feiras, abordando cada veznovos conceitos sobre C++. A proxima sera ”Classes - Parte 2”,onde aprofundaremos nossos conhecimentos sobre as classes emC++.Lembrando que todas as apresentacoes desse ciclo depalestras serao colocadas no moodle do PESL!
Nossos canais de comunicacao
1 MOODLE do PESL - Curso de C++ :http://pinguim.pro.br/moodle/course/view.php?id=6
2 Portal do Programa de Educacao em Software Livrehttp://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++