Aula 03 - Classes em C++ ( Parte 2 )

11
Introdu¸ ao Organiza¸ ao Novos recursos Conclus˜ ao Palestra: Classes em C++ Lucas Lellis Rodrigo Torres PESL - Programa de Educa¸ ao em Software livre Universidade Federal de S˜ ao Paulo 04 de Outubro de 2013 Lucas Lellis e Rodrigo Torres Classes em C++

description

Nesta aula aprendemos algumas técnicas um pouco mais avançadas de implementação de Classes em C++, além da sobrecarga de funções, métodos e construtores.

Transcript of Aula 03 - Classes em C++ ( Parte 2 )

Page 1: Aula 03 - Classes em C++ ( Parte 2 )

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

Page 2: Aula 03 - Classes em C++ ( Parte 2 )

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

Page 3: Aula 03 - Classes em C++ ( Parte 2 )

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

Page 4: Aula 03 - Classes em C++ ( Parte 2 )

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

Page 5: Aula 03 - Classes em C++ ( Parte 2 )

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

Page 6: Aula 03 - Classes em C++ ( Parte 2 )

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

Page 7: Aula 03 - Classes em C++ ( Parte 2 )

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

Page 8: Aula 03 - Classes em C++ ( Parte 2 )

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

Page 9: Aula 03 - Classes em C++ ( Parte 2 )

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

Page 10: Aula 03 - Classes em C++ ( Parte 2 )

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

Page 11: Aula 03 - Classes em C++ ( Parte 2 )

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