SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
Introdu¸c˜ao
Organiza¸c˜ao
Novos recursos
Conclus˜ao
Palestra: Classes em C++
Lucas Lellis
Rodrigo Torres
PESL - Programa de Educa¸c˜ao em Software livre
Universidade Federal de S˜ao Paulo
04 de Outubro de 2013
Lucas Lellis e Rodrigo Torres Classes em C++
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++
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++
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++
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++
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++
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++
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++
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++
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++
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++

Más contenido relacionado

Destacado

Infor Aero Space and Defence
Infor Aero Space and DefenceInfor Aero Space and Defence
Infor Aero Space and DefenceKevin Green
 
итоговый педсовет
итоговый педсоветитоговый педсовет
итоговый педсоветvirtualtaganrog
 
Striving for Contact - Summery in Italian
Striving for Contact - Summery in ItalianStriving for Contact - Summery in Italian
Striving for Contact - Summery in ItalianRoei Bachar
 
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
 
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
 
Oximity presentation republica, berlin
Oximity presentation  republica, berlinOximity presentation  republica, berlin
Oximity presentation republica, berlinSanjay Goel
 
Recruitment ad multimedia design intern
Recruitment ad multimedia design internRecruitment ad multimedia design intern
Recruitment ad multimedia design internkylelawkc
 

Destacado (13)

Unga 2
Unga 2Unga 2
Unga 2
 
Infor Aero Space and Defence
Infor Aero Space and DefenceInfor Aero Space and Defence
Infor Aero Space and Defence
 
итоговый педсовет
итоговый педсоветитоговый педсовет
итоговый педсовет
 
Striving for Contact - Summery in Italian
Striving for Contact - Summery in ItalianStriving for Contact - Summery in Italian
Striving for Contact - Summery in Italian
 
Tuinfluiter powerpoint
Tuinfluiter powerpointTuinfluiter powerpoint
Tuinfluiter powerpoint
 
Zoutelande gids 2015
Zoutelande gids 2015Zoutelande gids 2015
Zoutelande gids 2015
 
XIX Seven Rugby Playa 'Tiburón'
XIX Seven Rugby Playa 'Tiburón'XIX Seven Rugby Playa 'Tiburón'
XIX Seven Rugby Playa 'Tiburón'
 
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
 
Oximity presentation republica, berlin
Oximity presentation  republica, berlinOximity presentation  republica, berlin
Oximity presentation republica, berlin
 
Proyecto
ProyectoProyecto
Proyecto
 
Recruitment ad multimedia design intern
Recruitment ad multimedia design internRecruitment ad multimedia design intern
Recruitment ad multimedia design intern
 
Veldleeuwerik powerpoint
Veldleeuwerik powerpointVeldleeuwerik powerpoint
Veldleeuwerik powerpoint
 
Google Apps
Google AppsGoogle Apps
Google Apps
 

Similar a C++ Classes Palestra

Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )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
 
Aula 04 - Templates e Operators
Aula 04 - Templates e OperatorsAula 04 - Templates e Operators
Aula 04 - Templates e OperatorsPeslPinguim
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/Rodrigo Vieira
 
07 construtores e finalize
07   construtores e finalize07   construtores e finalize
07 construtores e finalizeArtur Todeschini
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Ilton Barbosa
 
Apostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a ParteApostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a ParteIlton Barbosa
 
Por que você deveria aprender python?
Por que você deveria aprender python?Por que você deveria aprender python?
Por que você deveria aprender python?Felipe Volpone
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Thyago Maia
 
Aula 3 introducao a orientação a objetos
Aula 3   introducao a orientação a objetosAula 3   introducao a orientação a objetos
Aula 3 introducao a orientação a objetosRafael Pinheiro
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonGuilherme Garcia
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 

Similar a C++ Classes Palestra (20)

Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao 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#
ebook-completo c# o melhor para começar no c#
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Java7
Java7Java7
Java7
 
Aula 04 - Templates e Operators
Aula 04 - Templates e OperatorsAula 04 - Templates e Operators
Aula 04 - Templates e Operators
 
Aula04
Aula04Aula04
Aula04
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
07 construtores e finalize
07   construtores e finalize07   construtores e finalize
07 construtores e finalize
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5
 
Apostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a ParteApostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a Parte
 
POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
Virada Tecnológica 2017
Virada Tecnológica 2017Virada Tecnológica 2017
Virada Tecnológica 2017
 
Por que você deveria aprender python?
Por que você deveria aprender python?Por que você deveria aprender python?
Por que você deveria aprender python?
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3
 
Aula 3 introducao a orientação a objetos
Aula 3   introducao a orientação a objetosAula 3   introducao a orientação a objetos
Aula 3 introducao a orientação a objetos
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e Python
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 

C++ Classes Palestra

  • 1. Introdu¸c˜ao Organiza¸c˜ao Novos recursos Conclus˜ao Palestra: Classes em C++ Lucas Lellis Rodrigo Torres PESL - Programa de Educa¸c˜ao em Software livre Universidade Federal de S˜ao Paulo 04 de Outubro de 2013 Lucas Lellis e Rodrigo Torres Classes em C++
  • 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++