capítulo 15 - rui rossi · tratar apenas duas destas operações: o recebimento relativo à venda...
TRANSCRIPT
![Page 1: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/1.jpg)
Capítulo 15Capítulo 15
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
InterfacesInterfaces
![Page 2: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/2.jpg)
Objetivos do Capítulo
� Introduzir o conceito de interface no contexto do processo de
desenvolvimento de software orientado a objetos.
� Analisar a anatomia das interfaces e a aplicabilidade dos
mecanismos de herança e polimorfismo na sua construção.
� Explorar o uso de interfaces para o estabelecimento de
contratos que devem ser assinados e cumpridos por classes.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
contratos que devem ser assinados e cumpridos por classes.
� Indicar como as interfaces podem ser empregadas para o
processamento polimórfico de objetos.
� Apresentar estudos de caso que ilustrem o uso de interfaces
em diferentes contextos.
![Page 3: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/3.jpg)
Introdução
� Mecanismo que substitui a herança múltipla
� Problemas gerados com a herança múltipla:
� Conflito de nomes de métodos
� Ineficiência dos compiladores
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
PessoaFisica
+ validarDados () : boolean
Cliente
PessoaJuridica
+ validarDados () : boolean
![Page 4: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/4.jpg)
Introdução
� A interface funciona como um contrato
� Termos: serviços a serem prestados (métodos)
� Assinantes: classes
� Representa um tipo
� Uma classe pode realizar múltiplas interfaces
� Pode assumir diferentes tipos
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Pode assumir diferentes tipos
� Pode ser manipulada de forma polimórfica
![Page 5: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/5.jpg)
Introdução
� Composição das interfaces
� Atributos
� Métodos
� Atributos de interfaces
� São públicos, constantes e estáticos (implicitamente)
� Não podem ser privados ou protegidos
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Métodos de interfaces
� São abstratos
![Page 6: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/6.jpg)
Estudo de Caso: Figuras Geométricas
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 7: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/7.jpg)
Estudo de Caso: Figuras Geométricas
� Código 15.5 – AreaCalculavel.java
� Código 15.6 – Quadrado.java
� calcularArea( ): lado * lado
� Código 15.7 – Retangulo.java
� calcularArea( ): base * altura
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Código 15.8 – Circulo.java
� calcularArea( ): π * raio2
![Page 8: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/8.jpg)
Estudo de Caso: Figuras Geométricas
� Código 15.9 – TesteArea.java
� Crie uma instância da classe Quadrado.
� Ela representará um quadrado com 4 metros de lado.
� Exiba o cálculo da área desta figura.
� Crie uma instância da classe Retangulo.
� Ela representará um retângulo de 3 metros de base e 2 de altura.
� Exiba o cálculo da área desta figura.
� Crie uma instância da classe Circulo.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
Crie uma instância da classe Circulo.
� Ela representará um círculo com 5 metros de diâmetro.
� Exiba o cálculo da área desta figura.
� Utilize referências do tipo AreaCalculavel para as instâncias.
![Page 9: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/9.jpg)
Estudo de Caso: Tributos
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 10: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/10.jpg)
Estudo de Caso: Tributos
� Código 15.10 – EDadoInvalido.java
� Código 15.11 – Tributavel.java
� Código 15.12 – Produto.java
� Validar dados nos métodos de escrita
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Código 15.13 – Cosmetico.java
� calcularIcms( ): 25% do preço
� Código 15.14 – Alimento.java
� calcularIcms( ): 12% do preço
![Page 11: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/11.jpg)
Estudo de Caso: Tributos
� Código 15.15 – CadastroProdutos.java
� Permitir o registro de até 100 produtos.
� Utilizar um vetor do tipo Tributavel.
� Produzir uma mensagem com os dados dos produtos registrados.
� Incluir o valor do ICMS a ser pago por cada unidade.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 12: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/12.jpg)
Estudo de Caso: Estado Civil
SelecaoEstadoCivil
+ main (String args[]) : void
EstadoCivil
+
+
+
+
SOLTEIRO
CASADO
DIVORCIADO
VIUVO
: byte
: byte
: byte
: byte
= 0
= 1
= 2
= 3
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 13: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/13.jpg)
Interfaces na API do Java
� Interfaces para tratamento de eventos
� Pacote java.awt.event
� Pacote javax.swing.event
� Interfaces com atributos úteis
� Interface javax.swing.SwingConstants
� Interfaces de marcação
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Interfaces de marcação
� java.io.Serializable
� Ordenação de objetos
� java.lang.Comparable
� Persistência em banco de dados
� Pacote java.sql
![Page 14: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/14.jpg)
Exercício 1
� Crie um novo aplicativo que realize o cálculo de dois
impostos federais incidentes sobre o faturamento das
empresas: a COFINS (Contribuição para o Financiamento da
Seguridade Social) e o PIS (Programa de Integração Social).
� Este aplicativo deverá ser composto pelos componentes
representados na figura abaixo.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 15: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/15.jpg)
Exercício 1
� Note que a interface chamada Aliquotas possui apenas dois
atributos e nenhum método. Além disso, observe que a
classe CalcularImpostos não realiza esta interface. A relação
existente entre elas é uma relação de dependência, uma vez
que a classe Calcular impostos consultará os atributos da
interface Aliquotas para realizar o cálculo da COFINS e do
PIS.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Este aplicativo deve captar o valor do faturamento da
empresa através de um diálogo gráfico de entrada, deve
calcular o valor da COFINS e do PIS que incidirão sobre este
faturamento e deve exibir o resultado do cálculo através de
outro diálogo gráfico. A figura do slide seguinte ilustra como
devem ser apresentados estes dois diálogos.
![Page 16: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/16.jpg)
Exercício 1
� Depois de exibir o resultado de um cálculo, o aplicativo deve
solicitar novamente o valor do faturamento da empresa para
a realização de uma nova simulação. Este procedimento deve
se repetir até que o primeiro diálogo seja cancelado.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 17: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/17.jpg)
Exercício 2
� Suponha que você deve desenvolver um sistema para
empresas que prestam serviços de manutenção de
computadores e que comercializam peças e equipamentos de
informática.
� O sistema que você deve construir precisa permitir que
sejam registrados todos os valores recebidos dos clientes,
tanto os relativos à prestação de serviços quanto os oriundos
de vendas de mercadorias.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Pede-se que você construa este sistema em conformidade
com a estrutura de componentes apresentada na figura do
slide seguinte.
![Page 18: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/18.jpg)
Exercício 2
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 19: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/19.jpg)
Exercício 2
� A interface Recebivel representa o contrato que deve ser
assinado por todas as classes que representam operações
que geram renda para a empresa. Neste exercício, você deve
tratar apenas duas destas operações: o recebimento relativo
à venda de um item (peça ou equipamento) e o recebimento
relativo à prestação de um serviço.
� A classe RegistroRecebimentos é a classe executável do
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� A classe RegistroRecebimentos é a classe executável do
sistema e deverá permitir o registro de até 100 recebimentos
e listar todos eles ao final de sua execução. A classe
RegistroRecebimentos deverá criar instâncias das classes
ItemVenda e Servico para representarem cada recebimento
realizado e deverá gravá-las em um atributo estático
chamado registros. A interface Recebivel deve ser utilizada
como tipo na declaração deste atributo.
![Page 20: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/20.jpg)
Exercício 2
� A classe EDadoInvalido pode ser a mesma que fora
empregada nesta unidade. Você deve utilizá-la nos métodos
de escrita das classes ItemVenda e Servico para realizar a
validação dos dados. Os métodos de escrita destas duas
classes não foram apresentados na figura apenas para
reduzir o espaço ocupado pela imagem, mas você deve
implementá-los. Estabeleça você mesmo algumas regras
para a validação dos dados a serem gravados em cada
atributo destas classes.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
atributo destas classes.
� O método totalizarReceita( ) que é declarado pela interface
Recebivel deve ser implementado pelas classes ItemVenda e
Servico. Na classe ItemVenda, este método deve retornar o
valor resultante da multiplicação da quantidade vendida pelo
preço unitário. Na classe Servico, este método deve retornar
o valor resultante da multiplicação do número de horas
trabalhadas pelo preço cobrado por cada hora de serviço.
![Page 21: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/21.jpg)
Exercício 2
� A figura do slide seguinte apresenta dois dos diálogos que
deverão ser produzidos durante a execução da classe
RegistroRecebimentos.
� O primeiro destes diálogos deverá ser apresentado para que
se escolha o tipo de recebimento que se deseja registrar: o
recebimento relativo a uma venda realizada ou o recebimento
relativo a um serviço prestado. Se a primeira opção for
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
relativo a um serviço prestado. Se a primeira opção for
selecionada, o aplicativo deve solicitar a descrição o produto
que fora vendido, a quantidade de unidades que foram
vendidas e o preço cobrado por cada uma delas. Se a
segunda opção for selecionada, o aplicativo deve solicitar a
descrição do serviço que fora prestado, a quantidade de
horas trabalhadas e o preço cobrado por cada hora de
trabalho. Se um dos dados informados for inválido, o
aplicativo deve exibir uma mensagem de erro e solicitá-lo
novamente.
![Page 22: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/22.jpg)
Exercício 2
� Ao final, o aplicativo deve exibir a lista de todos os
recebimentos registrados. Para isso, deve percorrer o vetor
que fora chamado de registros e recuperar a representação
textual de todos os objetos que nele foram gravados.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 23: Capítulo 15 - Rui Rossi · tratar apenas duas destas operações: o recebimento relativo à venda de um item (peça ou equipamento) e o recebimento ... Ao final, o aplicativo deve](https://reader031.vdocuments.site/reader031/viewer/2022012921/5c40b5b093f3c338c80b3397/html5/thumbnails/23.jpg)
Contato
Com o autor:
Rui Rossi dos Santos
E-mail: [email protected]
Web Site: http://www.ruirossi.pro.br
Com a editora:
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
Com a editora:
Editora NovaTerra
E-mail Geral: [email protected]
E-mail Comercial: [email protected]
Web Site: http://www.editoranovaterra.com.br