aula05 poo orientacao a objetos implementacao - ifcfrozza/.../bsi12-pooi-aula006a-aula05_poo... ·...

73
Programação Orientada a Objetos Introdução a POO Implementação Técnico em Informática Prof. Marcos André Pisching, M.Sc.

Upload: dotruc

Post on 13-Dec-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Programação Orientada a ObjetosIntrodução a POO ImplementaçãoImplementação

Técnico em InformáticaProf. Marcos André Pisching, M.Sc.

Objetos

12/04/2012 20:17 Redes de Computadores 2

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

ClassesClassesClassesClasses

12/04/2012 20:17 Redes de Computadores 10

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

13Programaçã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.

Implementação em C#Implementação em C#

12/04/2012 20:17 Redes de Computadores 18

ClasseClasse

19Programação Orientada a ObjetosProf. Marcos André Pisching

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

Objeto Objeto -- ReferênciaReferência

24Programaçã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

RELACIONAMENTOS:ASSOCIAÇÃO, AGREGAÇÃO E COMPOSIÇÃO

12/04/2012 20:17 Redes de Computadores 32

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ÉTODOS

12/04/2012 20:17 Redes de Computadores 42

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

44Programaçã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

• Método Depositar

47Programação Orientada a ObjetosProf. Marcos André Pisching

MétodosMétodos

• Método público:

48Programaçã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 CONSTRUTORES

12/04/2012 20:17 Redes de Computadores 60

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

Referências BibliográficasReferências Bibliográficas

• www.k19.com.br (o conteúdo deste material é baseado na apostila C# e Orientação a Objetos, de propriedade da K19 Treinamentos)

73Programação Orientada a ObjetosProf. Marcos André Pisching