SlideShare uma empresa Scribd logo
1 de 15
Aula 8 – Introdução de C++
Orientada à Objetos –
Classes e Atributos
Linguagem de
Programação
Classes
O primeiro tópico a ser trabalhado se trata de como definir uma classe, especificando seus atributos, métodos e
especificadores de acesso.
Sintaxe para a definição de uma classe:
class NomeDaClasse
{
tipoDoPrimeiroAtributo nomeDoPrimeiroAtributo;
...
tipoDeRetorno nomeDoMetodo (listaDeParametros)
{
//corpo do método
}
...
};
Classes
Para uma melhor compreensão vamos analisar o exemplo da definição de uma classe denominada Ponto2D, a qual
possui dois membros de dados (atributos) representando as coordenadas e uma função membro (método) para
alterar o valor dos atributos.
class Ponto2D
{
float x;
float y;
void mover (float novoX, float novoY)
{
x = novoX;
y = novoY;
}
};
Classes
Agora veremos como é feita a instanciação de um objeto da classe Ponto2D. O processo se dá da mesma forma que é
feita a declaração de uma variável de um tipo definido pelo usuário. Por exemplo:
...
class Ponto2D
{
float x;
float y;
void mover (float novoX, float novoY)
{
x = novoX;
y = novoY;
}
};
...
int main()
{
Ponto2D ponto;
...
}
Classes
Contudo, a classe Ponto2D que foi definida apresenta um grande problema, gerado pelos especificadores de
acesso (visibilidade). Em outras palavras, todos os membros de dados e a função membro foram especificados
como privados. Fato que inviabiliza a manipulação de objetos instanciados da classe Ponto2D.
Este problema ocorre devido ao especificador de acesso padrão, assumido por omissão, ser o private, sendo
assim, todos os membros depois do cabeçalho de classe e antes do primeiro especificador de acesso são private,
ou seja, inacessíveis fora do contexto do objeto.
Como na definição da classe Ponto2D não consta nenhum especificador de acesso, todos os membros são
privados.
Classes
Este problema é solucionado com a utilização adequada dos especificadores de acesso private e public.
No caso do nosso exemplo:
class Ponto2D
{
private:
float x;
float y;
public:
void mover (float novoX, float novoY)
{
x = novoX;
y = novoY;
}
};
Classes
Como foi mencionado o especificador de acesso private pode ser suprimido, já que é assumido por omissão. No
caso, a definição da classe Ponto2D ficaria:
class Ponto2D
{
float x;
float y;
public:
void mover (float novoX, float novoY)
{
x = novoX;
y = novoY;
}
};
Contudo, esta não é uma prática saudável.
Classes
Agora vamos tratar da manipulação de um objeto instanciado. Como solicitar a um objeto que execute um
determinado comportamento? Enviando uma mensagem ao mesmo. Em nosso exemplo, para solicitarmos que o
objeto ponto execute seu comportamento implementado pela função membro mover enviamos a seguinte
mensagem:
ponto.mover(0.1, 3.9);
Identificador do objeto alvo da mensagem
Operador ponto
Mensagem
Classes
Vamos agora tornar a classe Ponto2D mais robusta, ou seja, possibilitar que o valor dos membros de dados
possam ser visualizados através do envio de uma mensagem aos objetos instanciados da referida classe. Logo,
teremos a definição de mais funções membros para retornarem os valores dos membros de dados.
class Ponto2D
{
private:
float x;
float y;
public:
void mover (float novoX, float novoY)
{
x = novoX;
y = novoY;
}
float getX ()
{
return x;
}
float getY ()
{
return y;
}
};
Classes
Uma outra adaptação que pode ser feita é a inserção de duas novas funções membros, excluindo ou não a função
membro mover.
Classes
Desta forma, a classe Ponto2D ficaria assim, sem a função mover:
class Ponto2D
{
private:
float x;
float y;
public:
void setX (float novoX)
{
x = novoX;
}
void setY (float novoY)
{
y = novoY;
}
float getX ()
{
return x;
}
float getY ()
{
return y;
}
};
Classes
Com a função mover:
class Ponto2D
{
private:
float x;
float y;
void setX (float novoX)
{
x = novoX;
}
void setY (float novoY)
{
y = novoY;
}
public:
void mover (float novoX, float novoY)
{
setX (novoX);
setY (novoY);
}
float getX ()
{
return x;
}
float getY ()
{
return y;
}
};
Classes
A nomenclatura get e set é uma convenção, relevante é salientar que a existência de funções membros desta
natureza torna a classe mais robusta. Pois, as manipulações dos atributos podem ser concentradas nestas funções
favorecendo a manutenibilidade.
Observação: não é necessário fornecer as funções get e set para cada item de dado (atributo) privado; estas
capacidades devem ser fornecidas somente quando apropriado.
OBRIGADO
Referência:
https://www.fcav.unesp.br/Home/departamentos/cienciasexatas/alanrodrigopanosso/apostilacpp_2019.pdf

Mais conteúdo relacionado

Semelhante a Aula 9 - Introdução de C++ Orientada à Objeto - Classes e Atributos.pptx

introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
elliando dias
 
Programando em python classes
Programando em python   classesProgramando em python   classes
Programando em python classes
samuelthiago
 
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
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Adriano Teixeira de Souza
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
jose-junior89
 

Semelhante a Aula 9 - Introdução de C++ Orientada à Objeto - Classes e Atributos.pptx (20)

Curso de PHP - Objetos
Curso de PHP - ObjetosCurso de PHP - Objetos
Curso de PHP - Objetos
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
 
Guia Rápido Java
Guia Rápido JavaGuia Rápido Java
Guia Rápido Java
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
03 poo
03 poo03 poo
03 poo
 
Aula 3 - Java Prof.ª Cristiane Fidelix
Aula 3 -  Java Prof.ª Cristiane FidelixAula 3 -  Java Prof.ª Cristiane Fidelix
Aula 3 - Java Prof.ª Cristiane Fidelix
 
Aula5
Aula5Aula5
Aula5
 
Programando em python classes
Programando em python   classesProgramando em python   classes
Programando em python classes
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Java11
Java11Java11
Java11
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
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#
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Refactoring
RefactoringRefactoring
Refactoring
 
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 )
 
Aula02
Aula02Aula02
Aula02
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
 

Aula 9 - Introdução de C++ Orientada à Objeto - Classes e Atributos.pptx

  • 1.
  • 2. Aula 8 – Introdução de C++ Orientada à Objetos – Classes e Atributos Linguagem de Programação
  • 3. Classes O primeiro tópico a ser trabalhado se trata de como definir uma classe, especificando seus atributos, métodos e especificadores de acesso. Sintaxe para a definição de uma classe: class NomeDaClasse { tipoDoPrimeiroAtributo nomeDoPrimeiroAtributo; ... tipoDeRetorno nomeDoMetodo (listaDeParametros) { //corpo do método } ... };
  • 4. Classes Para uma melhor compreensão vamos analisar o exemplo da definição de uma classe denominada Ponto2D, a qual possui dois membros de dados (atributos) representando as coordenadas e uma função membro (método) para alterar o valor dos atributos. class Ponto2D { float x; float y; void mover (float novoX, float novoY) { x = novoX; y = novoY; } };
  • 5. Classes Agora veremos como é feita a instanciação de um objeto da classe Ponto2D. O processo se dá da mesma forma que é feita a declaração de uma variável de um tipo definido pelo usuário. Por exemplo: ... class Ponto2D { float x; float y; void mover (float novoX, float novoY) { x = novoX; y = novoY; } }; ... int main() { Ponto2D ponto; ... }
  • 6. Classes Contudo, a classe Ponto2D que foi definida apresenta um grande problema, gerado pelos especificadores de acesso (visibilidade). Em outras palavras, todos os membros de dados e a função membro foram especificados como privados. Fato que inviabiliza a manipulação de objetos instanciados da classe Ponto2D. Este problema ocorre devido ao especificador de acesso padrão, assumido por omissão, ser o private, sendo assim, todos os membros depois do cabeçalho de classe e antes do primeiro especificador de acesso são private, ou seja, inacessíveis fora do contexto do objeto. Como na definição da classe Ponto2D não consta nenhum especificador de acesso, todos os membros são privados.
  • 7. Classes Este problema é solucionado com a utilização adequada dos especificadores de acesso private e public. No caso do nosso exemplo: class Ponto2D { private: float x; float y; public: void mover (float novoX, float novoY) { x = novoX; y = novoY; } };
  • 8. Classes Como foi mencionado o especificador de acesso private pode ser suprimido, já que é assumido por omissão. No caso, a definição da classe Ponto2D ficaria: class Ponto2D { float x; float y; public: void mover (float novoX, float novoY) { x = novoX; y = novoY; } }; Contudo, esta não é uma prática saudável.
  • 9. Classes Agora vamos tratar da manipulação de um objeto instanciado. Como solicitar a um objeto que execute um determinado comportamento? Enviando uma mensagem ao mesmo. Em nosso exemplo, para solicitarmos que o objeto ponto execute seu comportamento implementado pela função membro mover enviamos a seguinte mensagem: ponto.mover(0.1, 3.9); Identificador do objeto alvo da mensagem Operador ponto Mensagem
  • 10. Classes Vamos agora tornar a classe Ponto2D mais robusta, ou seja, possibilitar que o valor dos membros de dados possam ser visualizados através do envio de uma mensagem aos objetos instanciados da referida classe. Logo, teremos a definição de mais funções membros para retornarem os valores dos membros de dados. class Ponto2D { private: float x; float y; public: void mover (float novoX, float novoY) { x = novoX; y = novoY; } float getX () { return x; } float getY () { return y; } };
  • 11. Classes Uma outra adaptação que pode ser feita é a inserção de duas novas funções membros, excluindo ou não a função membro mover.
  • 12. Classes Desta forma, a classe Ponto2D ficaria assim, sem a função mover: class Ponto2D { private: float x; float y; public: void setX (float novoX) { x = novoX; } void setY (float novoY) { y = novoY; } float getX () { return x; } float getY () { return y; } };
  • 13. Classes Com a função mover: class Ponto2D { private: float x; float y; void setX (float novoX) { x = novoX; } void setY (float novoY) { y = novoY; } public: void mover (float novoX, float novoY) { setX (novoX); setY (novoY); } float getX () { return x; } float getY () { return y; } };
  • 14. Classes A nomenclatura get e set é uma convenção, relevante é salientar que a existência de funções membros desta natureza torna a classe mais robusta. Pois, as manipulações dos atributos podem ser concentradas nestas funções favorecendo a manutenibilidade. Observação: não é necessário fornecer as funções get e set para cada item de dado (atributo) privado; estas capacidades devem ser fornecidas somente quando apropriado.