24
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 Dados Prof. 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 Dados Prof. Flávio de Oliveira Silva, M.Sc. SOBRECARGA ENCAPSULAMENTO ABSTRAÇÃO MODULARIZAÇÃO 81

Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 2: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 3: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 4: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 5: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 6: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 7: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 8: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 9: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 10: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 11: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 12: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 13: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 14: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 15: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 16: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 17: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 18: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 19: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 20: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 21: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 22: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 23: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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

Page 24: Por que a Orientação a Objetos? - FACOMflavio/ed1/files/2010-02/ED1 - Conceitos Progra… · Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais

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