• Nenhum resultado encontrado

Aula14 Herança

N/A
N/A
Protected

Academic year: 2021

Share "Aula14 Herança"

Copied!
32
0
0

Texto

(1)

Programação Orientada a Objetos

em Java

Carlos Andrés Ferrero

Herança

Material adaptado do curso de Desenvolvimento de Software em Java elaborado pelo Prof. Marcos André Pisching.

(2)

Problema

• O Banco, foco da implementação das últimas aulas, começa a oferecer, além de contas bancárias, serviços que podem ser contratados individualmente pelos

clientes;

• Quando um serviço é contratado, o sistema do banco deve registrar quem foi o cliente que contratou o

serviço, quem foi o funcionário responsável pelo atendimento ao cliente e a data de contratação.

(3)

Problema

3

• Princípio DRY – Don’t repeat yourself:

– Encontra motivação no aumento da produtividade e diminuição do custo de manutenção;

– A ideia consiste em reaproveitar o máximo de código já criado;

– Devemos procurar minimizar á utilização do “copiar e colar”.

(4)

Problema

4

• Assim poderíamos criar uma classe para todos os

Serviços prestados pelo Banco:

(5)

Problema

5

• Suponhamos:

– Serviço Empréstimo:

• Quando o cliente contrata o serviço são definidos o valor e a taxa de juros mensal do empréstimo;

• Assim devemos acrescentar dois novos atributos à classe Serviço: valor e taxa de juros.

(6)

Problema

6

• Suponhamos:

– Serviço do Veículo:

• Nesse serviço temos que definir informações do veículo segurado, valor do seguro e valor da franquia.

(7)

Problema

7

• Apesar de estarmos aparentemente dentro dos

conceitos da DRY, utilizar uma classe apenas

dificulta muito o desenvolvimento.

– No caso de haverem dois desenvolvedores trabalho nos serviços do Banco. Ambos iriam trabalhar encima do mesmo arquivo de código fonte? Obviamente, não.

• Além disso, quando chegarem novos

programadores na empresa ficariam um tanto

confusos em compreender todo o código da

classe Serviço.

(8)

Problema

8

• O fato da classe Serviço apresentar atributos para

todos os empréstimos:

– é um problema de semântica em relação à responsabilidade de classe serviço;

– e cada serviço específico, na prática, teria que ser instanciado como um objeto da classe Serviço,

causando desperdício de memória por deixar de

utilizar os atributos que não tem a ver com o serviço específico em questão.

(9)

Solução

9

• Criamos uma classe para cada serviço!

– Assim evitamos a ter uma grande quantidade de atributos e métodos desnecessários.

(10)

Solução

10

• Criamos uma classe para cada serviço!

(11)

Solução

11

• Importante:

– Criar uma classe para cada serviço torna o sistema mais flexível, pois qualquer alteração em um

determinado serviço não causará efeitos colaterais nos outros.

– Por outro lado, essas classes teriam bastante código repetido, contrariando a ideia do DRY.

– Além disso, qualquer alteração que deva ser realizada em todos os serviços, que seja comum a vários

serviços, precisa ser implementada em cada uma das classes.

(12)

Solução

12

• Neste problema podemos aplicar o conceito de

Herança:

– A ideia consiste em reutilizar o código implementado em uma classe, também em outras classes

relacionadas.

• Assim, podemos criar a classe Serviço com os

atributos e métodos que todos os serviços (seja

empréstimo ou seguro de veículo) e criar uma

classe para cada serviço Empréstimo e Seguro de

Veículo.

(13)

Solução

13

• Herança:

– As classes especializadas (específicas ) seriam “ligadas” de alguma forma à classe Serviço para reaproveitar o código nela definido.

– Esse relacionamento entre as classes é representado em UML pelo diagrama apresentado no próximo slide.

(14)

Solução

14

(15)

Solução

15

• Herança:

– A classe genérica deve conter atributos e métodos comuns as classes especializadas.

– As classes especializadas devem conter atributos e métodos que não dizem respeito a outras classes, apenas a ela.

(16)

Solução

16

(17)

Solução

17

• Implementação da classe especializada

SeguroVeiculo:

(18)

Solução

18

• Implementação da classe especializada

Emprestimo:

(19)

Solução

19

• Definições

– A classe genérica é denominada super classe, classe base ou classe mãe.

– As classes específicas são denominadas sub classes, classes derivadas ou classes filhas.

– Quando o operador new é aplicado em uma sub classe, o objeto construído possuirá os atributos e métodos definidos na sub classe e na super classe.

(20)

Solução

20

• Criação do objeto da subclasse:

– Ao executarmos new Emprestimo(), criamos

juntamente um objeto da classe Servico que estará integrado com o objeto Empréstimo de forma

(21)

Solução

21

• Podemos determinar um valor para a taxa de

serviço por meio de um método:

(22)

Solução

22

(23)

Solução

23

• Especificando um método criado implementado

em uma classe superior: seguro veicular + 10%.

(24)

Complemento

24

• Para não errarmos na hora de reimplementar métodos em subclasses, podemos utilizar a anotação @Override, com a qual é exigido que a reimplementação do método possua uma implementação do mesmo em alguma

(25)

Mágica

25

• Se quisermos criar uma série de serviços (indpenden-temente de natureza deles) o sistema saberá distinguir as respectivas taxas de serviço a serem cobradas? é fácil?

(26)

Mágica

26

(27)

Mágica

27

(28)

Conceito

28

• A capacidade dos objetos executarem seus

próprios métodos quando invocados como

métodos de objetos de classes superiores é

denominado de POLIMORFISMO.

• Por exemplo, criar um ArrayList de serviços e

colocar no lugar de serviços, empréstimos ou

seguro veiculo, e após referir-se ao método de

calcular taxa, sem saber especificamente a qual

método exatamente nos referimos.

(29)

Tarefa de Aula/Casa

29

1. No menu principal de banco devemos adicionar

a opção de contratar serviços;

• No menu serviços devemos disponibilizar a

opção de contratar serviço de empréstimo e de

seguro de veículo.

• Escolhendo a opção desejada deverá se

proceder as informações do de cada serviço.

OBS: para a classe veículo colocar os atributos

(30)

Tarefa de Aula/Casa

30

2. Pensar no contexto de contas bancárias, em que

temos contas corrente e poupança.

• Faça a sua interpretação de classes, herança e

polimorfismo no contexto das contas bancárias;

• Implemente as classes correspondentes e

integre na classe Banco a possibilidade de

criação de contas bancárias.

(31)

• E-mail

– andres.ferrero@ifsc.edu.br

• Website

– http://sites.google.com/site/anfer86/

Contato

31

(32)

• Treinamentos K19. Orientação a Objetos em Java.

2012. Disponível em:

http://www.k19.com.br/downloads/apostilas/jav

a/k19-k11-orientacao-a-objetos-em-java2012

• ASCENCIO, A. F.; CAMPOS, E. A. V. Fundamentos

da Programação de Computadores, 3. ed., São

Paulo: Pearson Education do Brasil, 2012.

Referências

Referências

Documentos relacionados

Tendo como parâmetros para análise dos dados, a comparação entre monta natural (MN) e inseminação artificial (IA) em relação ao número de concepções e

Resumo - Teoriza-se sobre a importância da restauração como uma ferramenta para a conservação ambiental através do uso de técnicas nucleadoras capazes de facilitar o

Corporate Control and Policies Page 12 UNIVERSIDAD DE PIURA UNIVERSIDAD DEL PACÍFICO UNIVERSIDAD ESAN UNIVERSIDAD NACIONAL AGRARIA LA MOLINA UNIVERSIDAD NACIONAL

explica quando Dom Quixote escreve a Sancho: “Quando esperava ouvir novas de teus descuidos e impertinências; Sancho amigo, ouvi-as das tuas discrições, e por isso dei

Esse trabalho tem como objetivo problematizar a relação da Marcha das Vadias com as pautas do movimento de mulheres negras do Brasil, tendo em vista que

Isto serve para que, diante de um inadimplemento antecipado, a parte que não aparenta estar prestes a cometer nenhuma violação possa ajustar o roteiro de

c) O adiamento da apresentação de relatórios e trabalhos escritos e da realização de provas incluídas no regime de avaliação contínua ou periódica, a que não tenha

Própria, 2019). Apesar de todos os riscos encontrados na atividade, medidas preventivas podem garantir a segurança do colaborador em todas as situações encontradas