Aula03

138 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
138
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aula03

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

×