aula05 poo orientacao a objetos implementacao - ifcfrozza/.../bsi12-pooi-aula006a-aula05_poo... ·...
Post on 13-Dec-2018
216 Views
Preview:
TRANSCRIPT
Programação Orientada a ObjetosIntrodução a POO ImplementaçãoImplementação
Técnico em InformáticaProf. Marcos André Pisching, M.Sc.
Domínio e AplicaçãoDomínio e Aplicação
• Domínio
– Composto pelas entidades, informações e processos relacionados a um determinado contexto.
3
contexto.
• Aplicação
– Desenvolvido para automatizar as tarefas de um domínio
Programação Orientada a ObjetosProf. Marcos André Pisching
Exemplo Exemplo -- Domínio BancárioDomínio Bancário
• Entidades– Clientes
– Funcionários
– Agências
4
– Agências
– Contas
• Informações
• Processos
Programação Orientada a ObjetosProf. Marcos André Pisching
Objetos, Atributos e MétodosObjetos, Atributos e Métodos
• Objetos– Entidades
– Uma aplicação orientada a objetos é composta por objetos.
5
– Em geral, um objeto representa uma entidade do domínio.
Programação Orientada a ObjetosProf. Marcos André Pisching
Objetos, Atributos e MétodosObjetos, Atributos e Métodos
• Atributos– Um atributo é uma variável que pertence a um
objeto.
– Os dados de um objeto são armazenados nos seus atributos.
6
seus atributos.
– Exemplo:• Objeto João (Atributo: Dados)
– Nome: Carlos
– DataNascimento: 23/06/1995
– Sexo: Masculino
Programação Orientada a ObjetosProf. Marcos André Pisching
Objetos, Atributos e MétodosObjetos, Atributos e Métodos
• Métodos (1/2)
– Operações que permitem consultar ou alterar os valores dos atributos de um objeto.
– São também utilizados para possibilitar interações entre os objetos de uma aplicação.
7
interações entre os objetos de uma aplicação.
– Exemplo:• quando um cliente requisita um saque através de
um caixa eletrônico do banco, o objeto que representa o caixa eletrônico deve interagir com o objeto que representa a conta do cliente.
Programação Orientada a ObjetosProf. Marcos André Pisching
Objetos, Atributos e MétodosObjetos, Atributos e Métodos
• Métodos (2/2)
– As tarefas que um objeto pode realizar são definidas pelos seus métodos.
– Um objeto é composto por atributos e métodos.
8
métodos.
Programação Orientada a ObjetosProf. Marcos André Pisching
Representação: Representação: Domínio X AplicaçãoDomínio X Aplicação
Rep
rese
nta
ção
: Do
mín
io X
Ap
licaç
ão
9Programação Orientada a ObjetosProf. Marcos André Pisching
Rep
rese
nta
ção
: Do
mín
io X
Ap
licaç
ão
ClassesClasses
• Antes de criar um objeto é necessário definir quais serão seus atributos e métodos.
• A definição é realizada através de uma
11
• A definição é realizada através de uma classe.
• A partir de uma classe, é possível construirobjetos na memória (“espaço onde vivem
os objetos”).
Programação Orientada a ObjetosProf. Marcos André Pisching
Representação de classesRepresentação de classes
• Uma classe pode ser representada através de diagramas de UML.
• Composição da representação:– Nomes
– Atributos
12
– Atributos
– Métodos
Programação Orientada a ObjetosProf. Marcos André Pisching
AnologiaAnologia
Classe Objetos
14Programação Orientada a ObjetosProf. Marcos André Pisching
Classe -- PlantaObjetos -- Casas
Diversas classe construídas a partir de uma mesma planta
AnologiaAnologia
Classe Objetos
15Programação Orientada a ObjetosProf. Marcos André Pisching
Classe -- ReceitaObjetos -- Bolos
Diversos bolos preparados a partir de uma mesma receita
AnologiaAnologia
Classe Objetos
16Programação Orientada a ObjetosProf. Marcos André Pisching
Classe -- CarroObjetos -- Carros
Diversos carros construídos a partir do mesmo projeto
AnologiaAnologia
Classe Objetos
17Programação Orientada a ObjetosProf. Marcos André Pisching
As diferenças entre dois objetos de mesma classe estão nos valores de seus atributos.
Criando objetos Criando objetos Instanciação de ClasseInstanciação de Classe
A palavra reservada newé usada para instanciar um
20Programação Orientada a ObjetosProf. Marcos André Pisching
é usada para instanciar um Objeto de uma determinadaclasse.
Criando objetos Criando objetos Instanciação de ClasseInstanciação de Classe
Instanciação (criação) de três objetos do tipo
21Programação Orientada a ObjetosProf. Marcos André Pisching
de três objetos do tipoConta.
Criando objetos Criando objetos -- analogiaanalogia
22Programação Orientada a ObjetosProf. Marcos André Pisching
Objeto Objeto -- ReferênciaReferência
• Todo objeto possui uma referência
• A referência de um objeto é a única maneira de acessar os seus atributos e métodos.
23
métodos.
Programação Orientada a ObjetosProf. Marcos André Pisching
Criar uma Referência em C#Criar uma Referência em C#
• Usa-se a instrução new
– Com a instrução new um objeto é alocado em algum lugar na memória.
– Para acessar o objeto, é necessário sua referência.
– A instrução new devolve a referência do objeto
25
– A instrução new devolve a referência do objeto que foi criado.
– A referência (endereço de memória) devolvida por new deve ser armazenada em uma variável.
• Esta variável não pode ser primitiva.
• Deve ser do tipo da classe, a qual foi utilizada para instanciar o objeto.
Programação Orientada a ObjetosProf. Marcos André Pisching
Criar uma Referência em C#Criar uma Referência em C#
• A instrução new instancia o objeto Conta e retorna uma referência (endereço de memória) que será atribuída a variável
26
memória) que será atribuída a variável referencia do tipo Conta.
• A partir da variável referencia é possível acessar os atributos e invocar os métodos do objeto.
Programação Orientada a ObjetosProf. Marcos André Pisching
Manipulando AtributosManipulando Atributos
• Usando a variável de referência referencia
27Programação Orientada a ObjetosProf. Marcos André Pisching
Atributos: Valores padrãoAtributos: Valores padrão
• Atributos de um objeto não precisam ser inicializados explicitamente.– Os atributos são inicializados com valores
padrão:• Tipos numéricos: são inicializados com 0 (zero)
28
• Tipos numéricos: são inicializados com 0 (zero)
• Tipo boolean: são inicializados com false
• Demais atributos: são inicializados com null(referência vazia)
Programação Orientada a ObjetosProf. Marcos André Pisching
Atributos: Valores padrãoAtributos: Valores padrão
• Exemplos
29Programação Orientada a ObjetosProf. Marcos André Pisching
Atributos: Valores padrãoAtributos: Valores padrão
• Exemplos – definindo um valor padrão
30Programação Orientada a ObjetosProf. Marcos André Pisching
Atributos: Valores padrãoAtributos: Valores padrão
• Exercícios:• Implemente as seguintes classes
31
• Faça uma classe de testes (com o método Main) para instanciar objetos das classes acima. Mude o estado dos atributos dos objetos e apresente os valores no vídeo
Programação Orientada a ObjetosProf. Marcos André Pisching
Associação, Agregação e Associação, Agregação e ComposiçãoComposição
• Todo cliente de banco pode adquirir um cartão de crédito.
• Se o cliente adquirir um cartão de crédito, dentro do sistema do banco, deve existir um objeto que represente o cliente e outro
33
um objeto que represente o cliente e outroque represente o cartão de crédito.
• Para expressar a relação entre o cliente e o cartão de crédito, algum vínculo entre esses dois objetos deve ser estabelecido.
Programação Orientada a ObjetosProf. Marcos André Pisching
Associação, Agregação e Associação, Agregação e ComposiçãoComposição
• Exemplo: cliente x cartões
34Programação Orientada a ObjetosProf. Marcos André Pisching
Associação, Agregação e Associação, Agregação e ComposiçãoComposição
• Exemplo: cliente x cartões
• Duas classes devem ser criadas:
– uma para definir os atributos e métodos dos clientes e outra para os atributos e métodos dos cartões de crédito.
35
dos cartões de crédito.
– Para expressar o relacionamento entre cliente e cartão de crédito, podemos adicionar um atributo do tipo Cliente na classe CartaoDeCredito.
Programação Orientada a ObjetosProf. Marcos André Pisching
Associação, Agregação e Associação, Agregação e ComposiçãoComposição
• Exemplo: cliente x cartões
36
• Implementação:
Programação Orientada a ObjetosProf. Marcos André Pisching
Associação, Agregação e Associação, Agregação e ComposiçãoComposição
• Exemplo: cliente x cartões• Tipo de relacionamento: agregação
– Notação gráfica na linguagem UML
37
• No relacionamento entre cartão de crédito e cliente, um cartão de crédito só pode se relacionar com um único cliente. Por isso, no diagrama acima, o número 1 é colocado ao lado da classe Cliente. Por outro lado, um cliente pode se relacionar com muitos cartões de crédito. Por isso, no diagrama acima, o caractere “*” é colocado ao lado da classe CartaoDeCredito.
Programação Orientada a ObjetosProf. Marcos André Pisching
Associação, Agregação e Associação, Agregação e ComposiçãoComposição
• Exemplo: cliente x cartões– O relacionamento entre um objeto da classe
Cliente e um objeto da classe CartaoDeCreditosó é concretizado quando a referência do objeto da classe Cliente é armazenada no atributo cliente do objeto da classe
38
objeto da classe Cliente é armazenada no atributo cliente do objeto da classe CartaoDeCredito.
– Depois de relacionados, podemos acessar, indiretamente, os atributos do cliente através da referência do objeto da classe CartaoDeCredito.
Programação Orientada a ObjetosProf. Marcos André Pisching
Associação, Agregação e Associação, Agregação e ComposiçãoComposição
• Exemplo: cliente x cartões
39Programação Orientada a ObjetosProf. Marcos André Pisching
Associação, Agregação e Associação, Agregação e ComposiçãoComposição
• Exemplo: Conectando um cliente a um cartão:
40Programação Orientada a ObjetosProf. Marcos André Pisching
Associação, Agregação e Associação, Agregação e ComposiçãoComposição
• Exercício: relação Conta x Agencia• Implemente as classes e a relação existente
entre elas de acordo com o diagrama abaixo
41
• Implemente uma classe de teste, crie objetos Conta e Agencia. Associe um objeto a outro e atribua valores aos atributos de cada objeto. Mostre os valores no vídeo.
Programação Orientada a ObjetosProf. Marcos André Pisching
MétodosMétodos
• São operações que podem modificar ou apenas acessar os valores dos atributos dos objetos.
• Exemplo: Classe Conta de um Banco– No banco, é possível realizar diversas
operações em uma conta:
43
– No banco, é possível realizar diversas operações em uma conta:
• Depósito,• Saque,• Transferência,• Consultas,• Etc.
Programação Orientada a ObjetosProf. Marcos André Pisching
MétodosMétodos
• As operações são realizadas em métodos definidos na própria classe.– No caso das operações citadas no slide anterior, estas
são implementadas na classe Conta.
– Exemplo da operação depositar:
45Programação Orientada a ObjetosProf. Marcos André Pisching
MétodosMétodos
• Um método pode ser dividido em quatro partes:– Nome:
• É utilizado para chamar o método. • Na linguagem C#, é uma boa prática definir os nomes dos
métodos utilizando a convenção “Camel Case” com a primeira letra maiúscula.
– Lista de Parâmetros:• Define os valores que o método deve receber.
46
• Define os valores que o método deve receber. • Métodos que não devem receber nenhum valor possuem a lista
de parâmetros vazia.– Corpo
• Define o que acontecerá quando o método for chamado (invocado).
– Retorno• resposta que será devolvida ao final do processamento do
método. • Quando um método não devolve nenhuma resposta, ele deve ser
marcado com a palavra reservada void.
Programação Orientada a ObjetosProf. Marcos André Pisching
MétodosMétodos
• Executando a operação Depositar a partir de um objeto do tipo Conta.
49Programação Orientada a ObjetosProf. Marcos André Pisching
MétodosMétodos
• O que acontece com o valor do atributo na memória?
numero = 0saldo = 0
Memória
c
50Programação Orientada a ObjetosProf. Marcos André Pisching
saldo = 0limite = 0
MétodosMétodos
• O que acontece com o valor do atributo na memória?
numero = 0saldo = 500.0
Memória
c
51Programação Orientada a ObjetosProf. Marcos André Pisching
saldo = 500.0limite = 0
MétodosMétodos
• O que acontece com o valor do atributo na memória?
numero = 0saldo = 800.0
Memória
c
52Programação Orientada a ObjetosProf. Marcos André Pisching
saldo = 800.0limite = 0
Para realizar um depósito, devemos chamar o método Depositar(x) através da referência do objetoque representa a conta que terá o dinheiro creditado.
MétodosMétodos
• O método Depositar() não possui nenhum retorno lógico. Por isso, foi marcado com void.
• Mas, para outros métodos, pode ser
53
• Mas, para outros métodos, pode ser necessário definir um tipo de retorno específico.
• Exemplo:
Programação Orientada a ObjetosProf. Marcos André Pisching
MétodosMétodos
• Exemplo da classe Conta
54Programação Orientada a ObjetosProf. Marcos André Pisching
MétodosMétodos
• Chamando um método que
retorna valor a partir de um objeto: numero = 0saldo = 800.0
limite = 1000.0
Memória
c
55Programação Orientada a ObjetosProf. Marcos André Pisching
MétodosMétodos
• Atividade
– Na classe Conta, implemente os métodos:
• Sacar: este método tem como parâmetro de entrada um valor double. Este valor será descontado do atributo saldo da classe conta. O
56
descontado do atributo saldo da classe conta. O método não irá retornar valor algum.
• ConsultarSaldo: Este método não tem parâmetro de entrada e irá retornar um valor double,
correspondente ao atributo saldo.
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos Métodos Sobrecarga Sobrecarga -- OverloadingOverloading
• Overloading– Sobrecarga de método
• Quando dois ou mais métodos são definidos na mesma classe com o mesmo nome – sobrecarga de método.
• Uma sobrecarga de método só é válida se as listas
57
• Uma sobrecarga de método só é válida se as listas de parâmetros dos métodos são diferentes entre si.
• Exemplo:– Na classe Conta do sistema bancário poderíamos ter um
método para gerar um extrato padrão dos últimos 30 dias e outro para gerar um extrato referente a quantidade de dias desejada pelo cliente.
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos Métodos Sobrecarga Sobrecarga -- OverloadingOverloading
• Overloading – Exemplo
58Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos Métodos Sobrecarga Sobrecarga -- OverloadingOverloading
• Overloading – Exemplo
59Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• É um método que é executado toda vez que um objeto é criado – instanciado.
– Assim, toda vez que o comando new é chamado, devemos informar um método construtor.
61
construtor.
– Exemplo:
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Característica de métodos construtores– Tem o mesmo nome da
classe
– Podem ser livres de parâmetros – construtor
62
parâmetros – construtor padrão (default).
– Podem ter parâmetros
– Podem ser sobrecarregados
– Não podem retornar valores
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Construtores podem ser utilizados de modo a garantir o estado inicial de um objeto.
– Por exemplo: Digamos todo o cartão de crédito
deva possuir um número.
• O valor poderia ser atribuído logo depois da
63
• O valor poderia ser atribuído logo depois da instanciação do objeto.
• Qual é a garantia que este cartão vai ter seu número?
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Para resolver esse risco, podemos utilizar construtores.
• Um construtor permite que um determinado trecho de código seja
64
determinado trecho de código seja executado toda vez que um objeto é criado, ou seja, toda vez que o operador new é chamado.
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Implementação
65
• Instanciação
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Construtor padrão
– Toda vez que um objeto é criado, um construtor da classe correspondente deve ser chamado.
– Mesmo quando nenhum construtor for definido explicitamente, há um construtor padrão que será
66
explicitamente, há um construtor padrão que será inserido pelo próprio compilador.
– O construtor padrão não recebe parâmetros e será inserido sempre que o desenvolvedor não definirpelo menos um construtor explicitamente.
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Construtor padrão
– Exemplo
67
– Instanciação de Objeto a partir do construtor padrão:
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Sobrecarga
de construtores
68Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Construtor chamando construtor
69Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Variável de referência como parâmetro de um construtor:
– Da mesma forma que podemos passar valores primitivos como parâmetro para um método ou construtor, também podemos passar
70
ou construtor, também podemos passar valores não primitivos (referências).
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Variável de referência como parâmetro de um construtor
71
• Instanciação
Programação Orientada a ObjetosProf. Marcos André Pisching
Métodos ConstrutoresMétodos Construtores
• Variável de referência como parâmetro de um método:
72
– Chamando o método Transferir
Programação Orientada a ObjetosProf. Marcos André Pisching
top related