SlideShare une entreprise Scribd logo
1  sur  11
Télécharger pour lire hors ligne
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++

Contenu connexe

Tendances

O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
Nécio de Lima Veras
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
Leonardo Melo Santos
 

Tendances (19)

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/
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
POO - Aula 1
POO - Aula 1POO - Aula 1
POO - Aula 1
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5
 
Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - Conceitos
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
 

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

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
 
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
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
Sérgio Souza Costa
 

Similaire à Aula 03 - Classes em C++ ( Parte 2 ) (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
 
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
 
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
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 

Plus de PeslPinguim

Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_
PeslPinguim
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
PeslPinguim
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5
PeslPinguim
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4
PeslPinguim
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
PeslPinguim
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
PeslPinguim
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
PeslPinguim
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
PeslPinguim
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9
PeslPinguim
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8
PeslPinguim
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoro
PeslPinguim
 

Plus de PeslPinguim (20)

Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Aula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalAula 4 redes Inclusão Digital
Aula 4 redes Inclusão Digital
 
Aula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalAula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão Digital
 
Aula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalAula 3 software Inclusão Digital
Aula 3 software Inclusão Digital
 
Aula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalAula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão Digital
 
Aula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalAula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão Digital
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Aula 1 apresentacao
Aula 1 apresentacaoAula 1 apresentacao
Aula 1 apresentacao
 
Aula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalAula 5 internet Inclusão Digital
Aula 5 internet Inclusão Digital
 
Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoro
 

Dernier

2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
LeloIurk1
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
LeloIurk1
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
LeloIurk1
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
FabianeMartins35
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
rosenilrucks
 

Dernier (20)

migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Antero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaAntero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escrita
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
 

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

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