Buscar

[Prof. Emiliana] aula teórica 4

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Orientada a Objetos em C++:
Classes
BCC702-Programação de Computadores II
Emiliana Mara Lopes Simões
simoes.eml@gmail.com
Universidade Federal de Ouro Preto
março 2010
Relembrando a aula passada...
Vimos a definição da classe Circulo para representação de um
círculo conforme definido na matemática
Relembrando a aula passada...
Definição da classe Circulo
class Circulo{
private:
float raio;
float x, y;
public:
Circulo();
void mover(float deltaX, float deltaY);
void aumentar(float deltaR);
};
Arquivo: Circulo.h
Relembrando a aula passada...
Definição das funções da classe Circulo
#include “Circulo.h”
Circulo::Circulo(){
x = 0;
y = 0;
raio = 1;
}
void Circulo::mover(float deltaX, float deltaY){
x = x + deltaX;
y = y + deltaY;
}
void Circulo::aumentar(float deltaR){
raio = raio + deltaR;
}
Arquivo: Circulo.cpp
Relembrando a aula passada...
Vimos os Modificadores de Acesso
Membros de uma classe podem ser:
public: Podem ser acessados em qualquer lugar
private: Só podem ser acessados pelos membros da própria
classe
protected: Podem ser acessados apenas por membros da
própria classe ou das suas sub-classes (será estudado mais
adiante...)
Relembrando a aula passada...
Vimos os Modificadores de Acesso
Membros de uma classe podem ser:
public: Podem ser acessados em qualquer lugar
private: Só podem ser acessados pelos membros da própria
classe
protected: Podem ser acessados apenas por membros da
própria classe ou das suas sub-classes (será estudado mais
adiante...)
Relembrando a aula passada...
Vimos os Modificadores de Acesso
Membros de uma classe podem ser:
public: Podem ser acessados em qualquer lugar
private: Só podem ser acessados pelos membros da própria
classe
protected: Podem ser acessados apenas por membros da
própria classe ou das suas sub-classes (será estudado mais
adiante...)
Relembrando a aula passada...
Vimos os Modificadores de Acesso
Membros de uma classe podem ser:
public: Podem ser acessados em qualquer lugar
private: Só podem ser acessados pelos membros da própria
classe
protected: Podem ser acessados apenas por membros da
própria classe ou das suas sub-classes (será estudado mais
adiante...)
Modificadores de Acesso
Exemplo: Tentativa de acesso a membros public e private
fora da classe
#include “Circulo.h”
main(){
Circulo c1;
//CORRETO: Chamada a um método público da classe Circulo
c1.aumentar(10);
//ERRADO! Tentativa de acessar um atributo privado de Circulo
c1.raio = 3;
}
Modificadores de Acesso
Modificadores de acesso podem ser usados tanto em atributos
como em métodos
O objetivo é:
Proteger a integridade e a consistência dos dados e
operações que uma determinada classe manipula
Ocultar informações dos usuários da classe
Modificadores de Acesso
Modificadores de acesso podem ser usados tanto em atributos
como em métodos
O objetivo é:
Proteger a integridade e a consistência dos dados e
operações que uma determinada classe manipula
Ocultar informações dos usuários da classe
Modificadores de Acesso
Modificadores de acesso podem ser usados tanto em atributos
como em métodos
O objetivo é:
Proteger a integridade e a consistência dos dados e
operações que uma determinada classe manipula
Ocultar informações dos usuários da classe
Modificadores de Acesso
Modificadores de acesso podem ser usados tanto em atributos
como em métodos
O objetivo é:
Proteger a integridade e a consistência dos dados e
operações que uma determinada classe manipula
Ocultar informações dos usuários da classe
Métodos get e set
São métodos usadas para acessar e modificar dados
encapsulados da classe indiretamente
get (obter o valor de)
Serve para se ter acesso aos atributos encapsulados de uma
classe
set (atribuir valor a)
Útil para permitir a modificação dos atributos da classe
encapsulados
Garante a integridade dos dados
Métodos get e set
São métodos usadas para acessar e modificar dados
encapsulados da classe indiretamente
get (obter o valor de)
Serve para se ter acesso aos atributos encapsulados de uma
classe
set (atribuir valor a)
Útil para permitir a modificação dos atributos da classe
encapsulados
Garante a integridade dos dados
Métodos get e set
São métodos usadas para acessar e modificar dados
encapsulados da classe indiretamente
get (obter o valor de)
Serve para se ter acesso aos atributos encapsulados de uma
classe
set (atribuir valor a)
Útil para permitir a modificação dos atributos da classe
encapsulados
Garante a integridade dos dados
Exemplo: Métodos get e set para o atributo raio
class Circulo{
private:
float raio;
float x, y;
public:
Circulo();
Circulo(float r);
void setRaio(float r);
float getRaio();
void mover(float deltaX, float deltaY);
void aumentar(float deltaR);
};
Arquivo: Circulo.h
Exemplo: Definição dos métodos get e set para o atributo
raio
#include “Circulo.h”
void Circulo::setRaio(float r){
if(r >= 0)
raio = r;
}
float Circulo::getRaio(){
return raio;
}
...
Arquivo: Circulo.cpp
Métodos get e set
Exemplo: Alterando membro private utilizando o método set
#include “Circulo.h”
main(){
Circulo c1;
//CORRETO: Chamada a um método público da classe Circulo
//para alterar um atributo privado indiretamente
c1.setRaio(3);
}
Arquivo: Main.cpp
Métodos get e set
Exemplo: Alterando membro private utilizando o método set
#include “Circulo.h”
main(){
Circulo c1;
//Chamada correta de método, porém com valor não
//permitido para o raio
c1.setRaio(-5);
}
Arquivo: Main.cpp
Métodos get e set
Exemplo: Obtendo o valor de um membro private utilizando o
método get
#include “Circulo.h”
main(){
Circulo c1;
float x;
//CORRETO: O valor do raio é retornado por um método get
x = c1.getRaio();
}
Arquivo: Main.cpp
Exemplo
IMPLEMENTAÇÃO DE CLASSES EM C++
Implementação da classe Data
Exemplo: Criar uma classe para representar uma data qualquer no
formato: dia/mês/ano
As operações possíveis são:
1 Criar uma data;
2 Alterar uma data;
3 Imprimir uma data.
Implementação da classe Data
Exemplo: Criar uma classe para representar uma data qualquer no
formato: dia/mês/ano
As operações possíveis são:
1 Criar uma data;
2 Alterar uma data;
3 Imprimir uma data.
Implementação da classe Data
class Data{
public:
Data();
Data(int d, int m, int a);
void print();
void setData(int d, int m, int a);
private:
int dia;
int mes;
int ano;
};
Arquivo: Data.h
Implementação da classe Data
#include “Data.h”
#include <iostream>
#include <iomanip>
using namespace std;
void Data::setData(int d, int m, int a){
//insere dia
if(d > 0 && d <= 31)
dia = d;
else{
cout<<“Dia invalido. Transformado em 1”<<endl;
dia = 1;
}
...
Arquivo: Data.cpp
Implementação da classe Data
...
//insere mês
if(m > 0 && m <= 12)
mes = m;
else{
cout<<“Mes invalido. Transformado em 1”<<endl;
mes = 1;
}
//insere ano
if(a >= 0)
ano = a;
else{
cout<<“Ano invalido. Transformado em 0”<<endl;
ano = 0;
}
}
Arquivo: Data.cpp
Implementação da classe Data
Data::Data(){
setData(1, 1, 0);
}
Data::Data(int d, int m, int a){
setData(d, m, a);
}
void Data::print(){
cout<<setw(2)<<setfill(’0’)<<dia
<<“/”<<setw(2)<<mes<<“/”<<ano<<endl;
}
Arquivo: Data.cpp
Utilizando a classe Data no programa
#include <iostream>
#include “Data.h”
using namespace std;
main(){
//instanciando objetos sem e com argumentos
Data d1;
Data d2(22, 3, 2010);
//imprimindo datas
cout<<“Data d1: ”<<endl;
d1.print();
cout<<“Data d2: ”<<endl;
d2.print();
...
Arquivo: Main.cpp
Utilizando a classe Data no programa
...
//alterando data
d2.setData(22, 7, 2010);
cout<<“Data d2: ”<<endl;
d2.print();
//alterando data com valor inválido para dia
d2.setData(0, 7, 2010);
cout<<“Data d2: ”<<endl;
d2.print();
system(“PAUSE”);
}
Arquivo: Main.cpp
Utilizando a classe Data no programa
Saída:
Data d1:
01/01/0
Data d2:
22/03/2010
Data d2:
22/07/2010
Dia inválido. Transformado em 1
Data d2:
01/07/2010
Press any key to continue...
Composição: Objetos como membros de classe
Uma classe pode ter objetos deoutras classes como
membros. Essa capacidade é chamada de composição
Exemplo: Definir a classe Empregado. Um empregado tem
nome, sobrenome, data de nascimento e uma data de
contratação
A classe Data definida anteriormente pode ser usada!!!
Composição: Objetos como membros de classe
Uma classe pode ter objetos de outras classes como
membros. Essa capacidade é chamada de composição
Exemplo: Definir a classe Empregado. Um empregado tem
nome, sobrenome, data de nascimento e uma data de
contratação
A classe Data definida anteriormente pode ser usada!!!
Composição: Objetos como membros de classe
#include “Data.h”
#include <string>
using namespace std;
class Empregado{
public:
Empregado(string n, string sn, int dn, int mn, int an,
int dc, int mc, int ac);
void print();
private:
string nome;
string sobrenome;
Data dataNasc;
Data dataContrat;
};
Arquivo: Empregado.h
Composição: Objetos como membros de classe
#include “Empregado.h”
#include <iostream>
Empregado::Empregado(string n, string sn, int dn, int mn, int an,
int dc, int mc, int ac){
dataNasc.setData(dn, mn, an);
dataContrat.setData(dc, mc, ac);
nome = n;
sobrenome = sn;
}
Arquivo: Empregado.cpp
Composição: Objetos como membros de classe
void Empregado::print(){
cout<<“Nome: ”<<nome<<endl
<<“Sobrenome: ”<<sobrenome<<endl
<<“Data nascimento: ”;
dataNasc.print();
cout<<“Data contratacao: ”;
dataContrat.print();
}
Arquivo: Empregado.cpp
Composição: Objetos como membros de classe
#include <iostream>
#include “Empregado.h”
using namespace std;
main(){
Empregado e(“Fulano”, “de Tal”,
11, 9, 1979, 15, 10, 2000);
e.print();
system(“PAUSE”);
}
Arquivo: Main.cpp
Composição: Objetos como membros de classe
Saída:
Nome: Fulano
Sobrenome: de Tal
Data nascimento: 11/09/1979
Data contratacao: 15/10/2000
Press any key to continue...
Composição: Objetos como membros de classe
Modificando o construtor da classe Empregado adicionando uma
lista de inicializadores de membros, para inicializar os atributos
dataNasc e dataContract
#include “Empregado.h”
#include <iostream>
Empregado::Empregado(string n, string sn, int dn, int mn, int an,
int dc, int mc, int ac):
dataNasc(dn, mn, an), dataContrat(dc, mc, ac)
{
nome = n;
sobrenome = sn;
}
Dúvidas?
Próxima Aula
Apontadores

Outros materiais