9/17/2010
1
Por que a Orientação a Objetos? Domínio do Problema (Mundo Real)
Domínio da Solução (Software)
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
80
Orientação a Objetos - Conceitos OBJETO
MÉTODO
MENSAGEM
CLASSE
CLASSIFICAÇÃO
GENERALIZAÇÃO
ESPECIALIZAÇÃO
HERANÇA
POLIMORFISMO
SOBRECARGA
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
SOBRECARGA
ENCAPSULAMENTO
ABSTRAÇÃO
MODULARIZAÇÃO
81
9/17/2010
2
OBJETO Entidades que possuem dados e instruções sobre como
manipular estes dados
Os objetos estão ligado à solução do problema. Os objetos estão ligado à solução do problema. Software Gráfico – Objetos: Círculos; Linhas; etc.
Software BD – Objetos: Tabelas; Linhas; Campos; etc.
Software Comercial: Pedidos; Produtos; Clientes; etc.
Na OO a solução do problema consiste em um primeiro momento estabelecer quais os objetos serão necessários.
Um objeto representa uma entidade: física conceitual ou de
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
Um objeto representa uma entidade: física, conceitual ou de software
82
OBJETO Os dados mantidos pelo objeto são chamados de
atributos(propriedades)
Os atributos de um objeto representam seu ESTADO, ou Os atributos de um objeto representam seu ESTADO, ou seja, o valor de seus atributos em um determinado momento.
Objetos possuem IDENTIDADE, ou seja, cada objeto é diferente do outro e cada um tem seu próprio tempo de vida
Cada objeto tem uma identidade única, mesmo que o estado seja idêntico para ambos os objetos
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
83
9/17/2010
3
OBJETO Dados ligados ao objeto – Exemplos:
Círculo – ponto_centro, raio
linha – ponto_inicio; ponto_final
Cliente – Nome;Data Nascimento; Telefone
Telefone – Numero; Modelo; Cor
Exemplos://criação de objetos (sintaxe C++)
Ponto p(3,4);
Circle c(p,5.4);
Cliente pessoa;
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
Cliente pessoa;
84
MÉTODOS Métodos são procedimentos que determinam como o objeto
se comporta.
Através dos métodos é possível manipular os dados contidos Através dos métodos é possível manipular os dados contidos no objeto.
Os métodos estão ligados ao comportamento do objeto
Exemplos Um círculo poderia possuir os métodos:
draw; move; getArea; getPerimeter; setCenter
Um cliente poderia possuir os métodos:
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
Um cliente poderia possuir os métodos:
calculaIdade; getTelefone
Um Telefone poderia possui os métodos:
tocar; discar
85
9/17/2010
4
MÉTODOS Um método é a implementação de uma operação
Métodos só tem acesso aos dados da classe para a qual foram definidosforam definidos
Métodos normalmente possuem argumentos, variáveis locais, valor de retorno, etc.
Alguns métodos especiais: Construtores – Criam objetos
Destrutores – Destroem objetos
Acessores – Recuperam o estado de um atributo (getNomeAtributo)
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
Acessores – Recuperam o estado de um atributo (getNomeAtributo)
Modificadores – Alteram o estado de um atributo (setNomeAtributo)
86
OBJETOS - RESUMO
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
87
9/17/2010
5
MENSAGEM Objetos se comunicam entre si através de mensagens.
Uma mensagem é uma chamada de um método.
A mensagem possui os seguintes componentes: A mensagem possui os seguintes componentes: Receptor – nome do objeto que irá receber a mensagem
Método – Método do receptor que será utilizado
Argumentos – Informação adicional para a execução do método
Exemplos
Point p(0,0), pNewCenter(2,3);
Circle c(p,3);
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
C (p,3);
c.getArea(); //Exemplo Mensagem
c.setCenter(pNewCenter); //Exemplo Mensagem
88
CLASSE Classe é um agrupamento de objetos
A classe consiste nos métodos e nos dados que um determinado objeto irá possuir.
Objetos são criados quando uma mensagem solicitando a criação é recebida pela sua classe.
A programação orientada a objetos consiste em implementar as classes e na utilização das mesmas, através da sua intercomunicação.
Um objeto é uma instância da classe.
Os objetos de uma classe compartilham os mesmos atributos, operações, relacionamentos e semânticas
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
Objetos só reagem a mensagens que fazem parte das ações do protocolo de sua classe
89
9/17/2010
6
CLASSIFICAÇÃO Na POO classificação consiste em criar classes a partir dos
objetos envolvidos em um determinado problema
As classes podem ser criadas a partir do momento em que As classes podem ser criadas a partir do momento em que for possível isolar no domínio do problema objeto que possui atributos e métodos comuns
Ex: Diferentes tipos de pessoas interagem com uma empresa
COMPORTAMENTO CLASSE
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
90
Pessoas interessadas nos produtos ???
Pessoas que já compraram os produtos ???
Pessoas que são responsáveis por um grupo de trabalhadores ???
Pessoas responsáveis pela demonstração de produtos e sua venda ???
Pessoas que trabalham na linha de produção ???
Generalização e Especialização GENERALIZAÇÃO
A generalização consiste em obter similaridades entre as várias classes e partir destas similaridades, novas classes são definidas.
Estas classes são chamadas superclasses
ESPECIALIZAÇÃO A especialização por sua vez consiste em observar diferenças entre
os objetos de uma mesma classe e dessa forma novas classes são criadas.
Estas classes são chamadas subclasses.
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
91
9/17/2010
7
Generalização e EspecializaçãoExemplo Hierarquia de classes
sd Diagrama Classes RH
Funcionario
Pessoa
Espe
cial
izaç
ão
Gen
eral
izaç
ão
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
92
VendedorFornecedorGerentes
G
HERANÇA Herança é a capacidade de uma subclasse de ter acesso as
propriedades da superclasse a ela relacionada.
Dessa forma as propriedades de uma classe são Dessa forma as propriedades de uma classe são propagadas de cima para baixo em um diagrama de classes.
Neste caso dizemos que a subclasse herda as propriedades e métodos da superclasse
A relação de herança entre duas classes é uma relação da seguinte forma: A “e um tipo de” B, onde A e B são classes.
Caso esta relação entre as classes não puder ser construída
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
Caso esta relação entre as classes não puder ser construída, em geral, também não se tem uma relação de herança entre a classe A a partir da classe B.
93
9/17/2010
8
HERANÇA Exemplos:
Um Carro de Passeio “é um tipo de ” veículo; Um caminhão “é um tipo de” veículo;
Um círculo “é um tipo de” uma figura geométrica; Um quadrado “é um tipo de” figura geométrica;
Um vendedor “é um tipo de” Empregado; Um empregado “é um tipo de” pessoa.
Herança Múltipla Uma subclasse herda características de mais uma classe
Exemplos
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
Exemplos Um gerente de vendas “é um tipo” de vendedor e também “é um tipo de”
gerente;
94
HERANÇA x USO Além da relação de herança entre as classes existe a
relação de uso
HERANÇA HERANÇA classe A “é um tipo de” B
USO / AGREGAÇÃO (Relação de Conteúdo) classe D “contém” classe C”
classe D “usa” classe C”
classe C “é parte da” classe D
Exemplo: Uma equipe contém um gerente e um grupo de
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
p U q p g g pvendedores
95
9/17/2010
9
Herança x Uso Exemplo
sd Diagrama Classes RH
Pessoaclass Classes
Vendedor
Fornecedor
Gerentes
Funcionario
Cilindro
- c: Circle
Cilindro Circle
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
96
Equipe
POLIMORFISMO (Override) Os objetos respondem às mensagens que eles recebem
através dos métodos.
A mesma mensagem pode resultar em diferentes resultados. A mesma mensagem pode resultar em diferentes resultados. Esta propriedade é chamada de polimorfismo Exemplo: Método getSalario()
Para um empregado qualquer getsalario() = Salario;
Para o gerente getsalario() = salario + bonificacao;
Exemplo: Método draw() Para uma figura qualquer desenha uma forma não definida
P tâ l t iâ l í l ét d d d
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
Para o retângulo, triângulo e círculo o mesmo método responde de uma forma diferente
97
9/17/2010
10
POLIMORFISMO - Exemplo
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
98
SOBRECARGA(Overload) Nas linguagens orientadas a objetos é possível, em uma
classe, a existência de métodos que possuem o mesmo nome, porém com diferentes assinaturas.
Este conceito é chamado de Sobrecarga (Overload) Exemplo: Em uma classe Figura, temos os seguintes métodos
draw() desenha o objeto e utiliza uma cor padrão
draw(Color) desenha o objeto, porém recebe uma cor como parâmetro
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
99
9/17/2010
11
SobreCarga - Exemplo
class Classesclass Classes
FormaGeometricaFormaGeometrica
+ draw() : void+ setColor() : void+ draw(Color) : void
+ setColor() : void+ draw() : void+ draw(Color) : void
TrianguloOLI
MO
RFS
IMO
SOBRECARGA
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
100
Triangulo
+ draw() : voidPO
ENCAPSULAMENTO Conceito que indica que os dados contidos em um objeto
somente poderão ser acessados e/ou modificados através de seus métodos.
Dessa forma não é possível alterar os dados diretamente, somente através de métodos definidos no objeto
Exemplo O centro do círculo somente pode ser alterado/recuperado pelos
métodos setCenter/getCenter.
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
101
9/17/2010
12
ENCAPSULAMENTO O encapsulamento assegura que toda a comunicação com o
objeto seja realizada por um conjunto pré-definido de operações
O encapsulamento facilita as mudanças, visto que os objetos são isolados uns dos outros, reduzindo desta forma o acoplamento
Além disso o encapsulamento facilita a manutenção de classes, bem como, garante a integridade dos atributos de um objeto em um determinado instante.
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
j
102
ABSTRAÇÃO Abstração é o processo de identificar as qualidades ou
propriedades importantes do problema que está sendo modelado.
Através de um modelo abstrato,pode-se concentrar nas características relevantes e ignorar as irrelevantes.
Abstração é fruto do raciocínio.
Através da abstração é possível controlar a complexidade. Isto é feito através da ênfase em características essenciais, fazendo-se uma supressão daquilo que não está ligado ao
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
fazendo se uma supressão daquilo que não está ligado ao domínio do problema.
103
9/17/2010
13
MODULARIZAÇÃO Consiste em decompor o problema em partes menores.
Dessa forma o foco é mantido em itens(classes; pacotes; etc.) menores, coesos e fracamente acoplados.etc.) menores, coesos e fracamente acoplados.
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
104
Praticando os conceitos...Atividade Utilizando os conceitos
Herança
Polimorfismo
Sobrecarga
Classe
Atributo
Método
Propor uma modelagem relacionada ao seu ambiente de trabalho
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
105
9/17/2010
14
Análise Orientada a Objetos (OOA)Projeto Orientado a Objetos (OOD) As técnicas tradicionais (Análise e Projeto Estruturado) não
são adequadas para o desenvolvimento de software utilizando a orientação à objetos.
A utilização do orientação à Objetos solicita uma nova forma de abstrair e entender o problema.
A linguagem UML é um padrão de diagramação para visualizar os resultados da análise e projeto orientados à objetos
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
106
Análise Orientada a Objetos (OOA)Projeto Orientado a Objetos (OOD) Exemplo
O conceito “Livro” em um sistema de biblioteca
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
107
9/17/2010
15
Análise Orientada a Objetos(OOA) Objetivo básico
Identificar classes a partir das quais objetos serão representados como instâncias
Envolve as seguintes tarefas Identificação de Objetos
Especificação de Atributos
Definição de métodos
Comunicações entre objetos
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
108
Análise Orientada a Objetos(OOA) IDENTIFICAÇÃO DE OBJETOS
Entidades externas (Outros sistemas; dispositivos;Pessoas)
Coisas ligadas ao domínio do problema (Relatórios;Displays;…)
Ocorrências ou Eventos (Conclusão de um movimento;Alarme disparado; Clique do mouse; etc.)
Papéis ou funções (Engenheiro; Gerente; Vendedor) desempenhados por pessoas
Unidades organizacionais (Grupo; Equipe;…)
Lugares (Piso de fábrica; área de descarga)
Estruturas (Sensores; veículos de quatro rodas; )
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
Estruturas (Sensores; veículos de quatro rodas;…)
109
9/17/2010
16
Análise Orientada a Objetos(OOA) IDENTIFICAÇÃO DE OBJETOS – CRITÉRIOS
1. RETENÇÃO DE INFORMAÇÃO – Objeto deve guardar informação que será utilizada pelo sistema
2. SERVIÇOS NECESSÁRIOS – Conjunto de operações identificáveis que podem mudar o valor de seus atributos
3. MÚLTIPLOS ATRIBUTOS – Objeto deve conter mais de um atributo
4. ATRIBUTOS COMUNS – Conjunto de atributos deve ser aplicado a todos os objetos
5. OPERAÇÕES COMUNS – Conjunto de operações devem ser aplicáveis a todos os objetos.
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
p j
6. REQUISITOS ESSENCIAIS – Entidades externas que aparecem no espaço problema que consomem e/ou produzem informação
110
Análise Orientada a Objetos(OOA) Em uma especificação:
NOMES são potenciais objetos (e classes)
VERBOS são potenciais métodos
A regra acima deve ser utilizada apenas como referência.
O entendimento do contexto, das necessidades do usuário são fundamentais para classificar possíveis objetos e métodos
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
111
9/17/2010
17
Exemplo de ClasseEstrutura básica Generic.h
class Generic {
private:
Generic.cpp
#include Generic.h
Generic::Generic(){ p
int m1, m2;
public:
Generic();
Generic(int);
Generic(int,int);
~Generic();
(){
m1=0; m2=0;
}
~Generic::Generic(){ m1=-1; m2=-1;
}
Generic::Generic(int m){ m1=m2=m; }
Generic::Generic(int ma,mb){
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
int getM1(void);
int getM2(void);
void setM1(int);
void setM2(int);
};
m1=ma; m2=mb; }
int Generic::getM1(void){ return m1; }
int Generic::getM2(void){ return m2; }
void Generic::setM1(int m){ m1 = m; }
void Generic::setM2(int m){ m2 = m; }112
Exemplo de ClasseHerança Simples Specialized.h
class Specialized : public Generic {
private:
Specialized.cpp
#include Specialized.h
Specialized::Specialized (){ p
Atributos
public:
Métodos
};
p p (){
//corpo método
}
//....
class DominioSolucao
Generic
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
113
Specialized
9/17/2010
18
Utilizando o DevC++ Será utilizado o ambiente DevC+ + (Versão 4.9.9.2)
Ambiente gráfico; Em português; Gratuito
Utiliza compiladores da família gcc
C i d P j t ( Criando um novo Projeto (Arquivo Novo Projeto...)
Um projeto contém todas as informações necessárias para compilar e criar programas.
Em um projeto são armazenados todos os arquivos necessários (arquivos .cpp; .h e .rc)
O projeto (hello.dev) deve ser salvo de preferência em uma pasta específica para o mesmo.
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
114
DevC++ - Novo ProjetoSalvando Arquivos O DevC++ permite a criação de vários tipos de projetos
Um projeto “Console Application” consiste de um programa que será executado no terminal do S.O em modo texto.
Após criar o projeto automaticamente será criada a função main, necessária para a execução do mesmoint main(int argc, char *argv[])
Além disso um arquivo main.cpp será criado.
Neste arquivo existe o código básico de uma “Console Application”. Este arquivo deve ser salvo na pasta criada para o projeto.
Para salvar um arquivo:
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
q Utilize a opção do menu Arquivo Salvar (Ctrl + s) ou então a barra de
ferramentas
115
9/17/2010
19
DevC++ - Editando programas O editor de programas possui recursos como:
Navegador de classes
Diferentes cores para diferentes partes do código; complemento de código; entre outrasentre outras.
Cada parte do código possui uma cor específica : Palavras reservadas da linguagem – preto / negrito
Texto (Strings) – vermelho
Números – roxo
Pré-processador - verde
Comentário – azul
P d ã d D C
1 #include <cstdlib>2 #include <iostream>3 //Hello World!4 using namespace std;5 6 int main(int argc, char *argv[])
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
Padrão cores do DevC++
116
6 int main(int argc, char argv[])7 {8 int i = 1;9 system("PAUSE");10 return EXIT_SUCCESS;11 }
DevC++ - Compilando Programas Para compilar os programas
Menu Executar Compilar (Ctrl + F9)
Recompilar todas as unidades de código Executar Rebuild All
(Ctrl + F11)
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
117
9/17/2010
20
DevC++ - Configuração Um problema muito comum é o compilador e o linker não encontrar os
arquivos .h e as bibliotecas necessárias
Para Configurar o DevC+ + para utilização do código em C+ +I i i l t d tili d F t O õ d Inicialmente deve ser utilizado o menu: Ferramentas Opções do Compilador
Em seguida deve-se clicar na aba DIRETÓRIOS
Aba BINÁRIOS
C:\Dev-Cpp\Bin
Esta é a pasta que contém os executáveis (compilador; linker; etc.)
Aba BIBLIOTECAS
C \De Cpp\lib
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
C:\Dev-Cpp\lib
Esta é a pasta que contém as bibliotecas que serão utilizadas pelo linker
Aba C++ INCLUDES
Pastas que contém os arquivos .h de bibliotecas fornecidas com o DevC++
118
DevC++ - ConfiguraçãoC++ Includes
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
119
9/17/2010
21
DevC++ - Depuração de ProgramasConfiguração Um recurso importante do compilador é a possibilidade de
depurar (debug) o código.
Para isto inicialmente é necessário informar ao compilador Para isto inicialmente é necessário informar ao compilador que gere informações adicionais que serão utilizadas pelo debugger.
Para configurar deve-se realizar o seguinte procedimento: Projeto Opções do Projeto.
Aba “Geração de Código / Otimização” Selecionar “LINKER” e marcar “YES” em “Gerar informação de
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
çdepuração”, conforme mostrado a seguir
Aba “Compilador” Adicionar a opção “-g” para forçar a para produção de informação de
debug
120
DevC++ - Depuração de ProgramasConfiguração Opções do Compilador
Informações para depuração
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
121
9/17/2010
22
Classe – DefiniçãoUML A figura abaixo mostra um diagrama que representa uma
classeclass Domain Objects
Circle
- dRaio: double- dXCenter: double- dYCenter: double
+ Circle()+ Circle(double, double, double)+ ~Circle()+ Circle(double) : void+ getRaio() : double
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
122
g ()+ getYCenter() : double+ setRaio(double) : void+ setXCenter(double) : void+ setCenter(double, double) : void+ setYCenter(double) : void+ getArea() : double+ getPerimeter() : double
Classe ExemploDefinição – Circle.h#define PI 3.141592653589793
class Circle {private: // As variáveis membro são privadas (encapsulamento)
double dRaio, dXCenter, dYCenter;
// Os métodos sao públicos
public:
Circle(); //Construtores (sobrecarregado)
Circle(double);
Circle(double, double, double);
Destrutor
~Circle();
void setRaio(double); //Métodos Modificadores setXXX
void setXCenter(double);
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
void setYCenter(double);
void setCenter(double, double);
double getRaio(); //Métodos Acessores getXXX
double getXCenter();
double getYCenter();
double getArea();
double getPerimeter();
}; 123
9/17/2010
23
Classe ExemploImplementação – Circle.cpp//Includes necessários
#include <iostream>
#include "Circle.h“
using namespace std;
//C t t d ã ã b h â t//Construtor padrão não recebe nenhum parâmetro
//Este construtor sempre está presente mesmo que não tenha sido Declarado
Circle::Circle(){
dRaio = 0; dXCenter = 0; dYCenter = 0;
cout << "Construindo(1) um objeto da classe Circle!" << endl;
}
//Construtor Sobrecarregado - Recebe o raio do circulo
Circle::Circle(double dR){
dRaio = dR; dXCenter = 0; dYCenter = 0;
t "C t i d (2) bj t d l Ci l !" dl
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
cout << "Construindo(2) um objeto da classe Circle!" << endl;
}
//Construtor Sobrecarregado - Recebe o raio do circulo, assim como as
//coordenadas X e Y do Centro Respectivamente
Circle::Circle(double dR, double dX, double dY){
dRaio = dR; dXCenter = dX; dYCenter = dY;
cout << "Construindo(3) um objeto da classe Circle!" << endl;
}124
Classe ExemploImplementação – Circle.cpp//Destrutor
Circle::~Circle(){
dRaio = 0; dXCenter = 0; dYCenter = 0;
//Imprime o texto indicado que o objeto está sendo destruido
t << "D t i d bj t d l Ci l !" << dlcout << "Destruindo o objeto da classe Circle!" << endl;
}
//Métodos Modificadores
void Circle::setRaio(double dR){ //Ajusta o raio do círculo
dRaio = dR;
}
void Circle::setXCenter(double dX){//Ajusta a coordenada X do Centro
dXCenter = dX;
}
id Ci l tYC t (d bl dY){ ////Aj t d d Y d C t
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
void Circle::setYCenter(double dY){ ////Ajusta a coordenada Y do Centro
dYCenter = dY;
}
void Circle::setCenter(double dX, double dY){
dXCenter = dX;
dYCenter = dY;
}
125
9/17/2010
24
Classe ExemploImplementação – Circle.cpp//Métodos Acessores
double Circle::getRaio(){//Recupera o raio o Círculo
return dRaio;
}
d bl Ci l tXC t (){//R d d X d C tdouble Circle::getXCenter(){//Recupera a coordenada X do Centro
return dXCenter;
}
double Circle::getYCenter(){//recupera a coordenada Y do Centro
return dYCenter;
}
//Outros métodos
//Calcula área do círculo
double Circle::getArea(){
t PI * dR i * dR i
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
return PI * dRaio * dRaio;
}
double Circle::getPerimeter(){
return 2 * PI * dRaio;
}
126
Classe ExemploUso – main.cpp//Includes necessários
#include <iostream>
#include "Circle.h“
using namespace std;
i t i (i t h * []){int main (int argc, char *argv[]){
//cout imprime uma linha de texto na saida padrão
cout << "Hello C++ World!" << endl;
Circle c1;
Circle c2(4);
Circle c3(3,4.5,5.5);
c1.setCenter(5,5);
c1.setRaio(10);
cout << "A area de c1 e " << c1.getArea() << endl;
t "A d 2 " 2 tA () dl
Estrutura de DadosProf. Flávio de Oliveira Silva, M.Sc.
cout << "A area de c2 e " << c2.getArea() << endl;
cout << "A area de c3 e " << c3.getArea() << endl;
cout << "O perimetro c1 e " << c1.getPerimeter() << endl;
cout << "Digite 0 para finalizar..." << endl;
int iRet(0);
cin >> iRet;
return iRet;
}127