Você está na página 1de 12

Introdução a C++

Bernardo Henz
Bruno Gallina Apel
Frederico Artur Limberger
Gustavo Rissetti
Prof. César Tadeu Pozzer
Por que usar C++ ?

• Unir os dados e a funções em um único elemento,


o objeto (Orientado a Objetos).
• Vantagens:
- Reusabilidade
- Encapsulamento
- Produtividade
Classes

• Struct que tem suas próprias funções


typedef struct Ponto class Ponto
{ {
int x; private:
int y; int m_x;
}Ponto; int m_y;
public:
void set(Ponto *p, int nx, int ny) void set(int x, int y)
{ {
p->x = nx; m_x = x;
p->y = ny; m_y = y;
} }
};
Objetos

• Instância de classe
Ponto p; Ponto p;
Ponto * pa = (Ponto*) malloc Ponto * pa = new Ponto(10,20);
(sizeof(Ponto));

inicia(&p,0,0);
inicia(pa,10,20);
Métodos / Construtores
typedef struct Ponto class Ponto
{ {
int x; private:
int y; int m_x;
}Ponto; int m_y;
public:
void inicia(Ponto *p, int nx, Ponto()
int ny) {
{ m_x = m_y = 0;
p->x = nx; }
p->y = ny; Ponto( int x, int y)
} {
m_x = x;
m_y = y;
}
};
Sobrecarga de Funções
class Ponto Ponto(int x, int y)
{ {
private: m_x = x;
int m_x; m_y = y;
int m_y; }
public: void set(int x,int y)
Ponto() {
{ m_x = x;
m_x = 0; m_y = y;
m_y = 0; }
} void set(float x, float y)
Ponto(Ponto p) {
{ m_x = (int) x;
m_x = p.getX(); m_y = (int) y;
m_y = p.getY(); }
} void getX(){
return m_x;
}
};
Proteção de Dados e Funções

• public
• private
• protected
Heranças

• class filho: public mae{}


• class filho: private mae{}
• class filho: protected mae{}
Funções Virtuais
class mae { int main()
virtual void desenha(){ {
cout << “mamae desenhou” << endl; mae * m = new mae();
} m->desenha();
void imprime(){ filho * f = new filho();
cout << “mamae imprimiu” << endl; m = new filho();
} m->desenha();
}; f->desenha();
class filho: public mae { m->imprime();
void desenha(){ f->imprime();
cout << “filho desenhou” << endl; return 0;
} };
void imprime(){
cout << “filho imprimiu” << endl;
}

};
Árvores
[.h] [.cpp]
class Directory Directory::Directory(string the_name)
{ {
private: m_pFirstSon = NULL;
Folder * m_pFirstSon; }
public:
Directory(); Directory::addFolder(string the_name)
void addFolder(string the_name); {
void addFolder(string the_folder, ...
string the_name); }
Folder * remove(string the_name);
void changeName(string the_name); Directory::addFolder(string the_folder,
}; string the_name)
class Folder {
{ ...
private: }
int m_id;
string m_name; Folder::Folder(string the_name)
bool m_active; {
Folder * m_pNext; m_name = the_name;
Folder * m_pFirstSon; m_pNext = NULL;
public: m_pFirstSon = NULL;
Folder(string the_name); m_active = FALSE;
}; }
Árvores
int main()
{
Directory * the_dic = new Directory();
the_dic->addFolder(“Folder 1”);
the_dic->addFolder(“Folder 2”);
the_dic->addFolder(“Folder 3”);
the_dic->addSubFolder(“Folder 2”,”Folder 2 1”);
the_dic->addSubFolder(“Folder 2”,”Folder 2 2”);
return 0;
}
C++ Avançado [Características]

• Templates
• Sobrecarga de Operadores
• Bibliotecas mais completas (STL, boost, SDL)
• Design Patterns