Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
LPOO-Lista7.pdf Universidade Federal da Bahia Departamento de Ciência da Computação MAT A55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel Lista 7 de Exercícios (Herança, sobreposição, polimorfismo) 1) Uma livraria precisa de um sistema para cadastrar seus títulos. A livraria trabalha com livros e revistas. Sabe-se que todo livro possui um nome, autor principal, editora, resumo e preço. Existem livros que são didáticos. Para estes também é registrada a sua área (ex. informática, história, geografia, etc). As revistas possuem um nome, editora, preço e periodicidade. Para o cenário acima, modelar a estrutura das classes e implementar em java. Construir os seguintes métodos: • Um método para criar uma revista. • Um método para criar um livro didático. • Um método para consultar o resumo de um livro. • Verificar se uma revista tem a mesma editora que outra. • Método toString para retornar uma string com os dados de um livro ou de uma revista. • Construir uma classe aplicaçãoLivraria, que possua o nome da Livraria acessível para todas as instâncias de livros e revistas. • Nesta Livraria deve-se implementar um método comprar utilizando o conceito de polimorfismo. Na nota fiscal deve aparecer o nome da livraria, o nome do livro, a quantidade, o preço total que deve ter um desconto de 3% de ISS para livro, 10% para Livro didático e 2% para revista. 2) Em uma faculdade os cursos são cadastrados a partir do seu código, nome e área. Os cursos de graduação possuem um número de disciplinas obrigatórias e um número de disciplinas optativas. Os cursos de pós-graduação possuem uma carga horária máxima a ser cursada pelos alunos. Para o cenário acima, modelar a estrutura das classes e implementar em java. Construir os seguintes métodos: • Um método para criar um curso de graduação • Um método para criar um curso de pós graduação • Um método para consultar o nome do curso e o número total de disciplinas que devem ser cursadas na graduação • Um método para consultar o nome do curso e a carga horária de um curso de pós-graduação. • Uma classe AplicaçãoFaculdade que use os conceitos de array e polimorfismo. Colocar comentários explicativos dos métodos e dos conceitos usados. LPOO-Lista8-2012.pdf Universidade Federal da Bahia Departamento de Ciência da Computação MAT A55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel Lista 8 de Exercícios (Classes Abstratas e Interfaces) 1) Refaça os exercícios de herança a) Pessoa, funcionário e chefe departamento -> Pessoa deve ser uma classe abstrata e o método calcula empréstimo um método abstrato. 2) Considere uma aplicação para gerenciar aparelhos Eletrodomésticos. Inicialmente estes podem ser apenas TV ou Radio. Um eletrodoméstico possui uma voltagem e pode estar ligado ou desligado. TV possuem tamanho em polegadas, canal e volume. Um Radio possui uma banda (AM ou FM), um volume e uma sintonia (90.1, 101, etc). Para todas instancias de rádio as bandas são AM=1 e FM=2. Todos os objetos devem ser instanciados desligados e com volume em zero, TV canal zero, Radio com banda FM e sintonia zero. Para TV, quando ligadas devem ser colocadas no canal 3 e volume 12. Os Radios, quando ligados devem ser colocados em sintonia 88.1f e volume 18. Ao serem desligados os atributos retornam iguais aos da instanciação. Criar uma aplicação que crie instancias e mude canal, volume, sintonia destes eletrodomésticos. 3) Considere o seguinte diagrama de classes UML: a) Crie uma interface de nome Motorizado onde são declarados os métodos void ligarMotor() e void abastecer(int numLitros). b) Implemente a interface Motorizado nas classes Aviao e Carro. c) Escreva um pequeno programa de teste capaz de verificar a implementação anterior. d) Crie uma interface de nome Conduzivel onde é declarado o método void curvar(float angulo). e) Implemente a interface Conduzivel nas classes Aviao, Carro e Bicicleta. f) Complete o programa de teste efectuado anteriormente por forma a testar estas últimas implementações. 3)Mostre através de um exemplo simples que, ao contrário do que acontece com as classes Java, que só suportam herança simples, as interfaces suportam tanto herança simples como herança múltipla. 4) Considere as classes PintorCasa, PintorQuadro e Escultor a) Crie uma interface, de nome Pintor, onde são declarados os métodos Object pintar(Object o) e Object limpar(Object o). b) Crie uma interface, de nome Artista, onde é declarado o método void expor(Vetor obrasArte). c) Implemente a interface Pintor na classe PintorCasa d) Implemente a interface Artista na classe Escultor e) Implemente as interfaces Pintor e Artista nas classe PintorQuadro e Escultor f) Crie um pequeno programa Java capaz de testar as implementações de interfaces efetuadas anteriormente. LPOO_Lista1.pdf Universidade Federal da Bahia Departamento de Ciência da Computação MAT A55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel Lista 1 de Exercícios 1. Criar uma classe em Java que represente um automóvel. É importante guardar o tipo de combustível que ele utiliza (podendo ser gasolina, álcool, ou flex), o fabricante, o ano e o modelo. Será necessário calcular a quantidade de combustível necessária para percorrer determinado percurso sabendo-se que: automóvel a álcool faz 15 km/l e automóvel a gasolina faz 12 km/l. Para aqueles com tipo de combustível flex considerar metade do caminho como gasolina e a outra metade como álcool. 2. Criar uma classe em Java que represente uma impressora. Deve-se guardar para esta, o fabricante, modelo, capacidade de impressão (em número de páginas), tecnologia (jato tinta ou laser, ou matricial) e velocidade (páginas por segundo). A classe deve atender aos seguintes itens: • informar o tempo necessário para imprimir um texto a partir do número de páginas; • receber um texto e imprimir (para este método considere a impressão na tela do texto recebido como se fosse na impressora); • informar a quantidade de páginas que ainda podem ser impressas com a carga atual. 3. Criar o modelo e implementar em Java uma classe Retângulo. A classe possui os atributos comprimento e largura. Esta classe deve possuir métodos que calculam o perímetro e a área do retângulo. A criação da classe deve garantir que comprimento e largura assumam valores maiores do que 0. 4. Criar o modelo e implementar em Java uma classe que represente animais. A classe possui os atributos tipo (mamífero, anfíbio, ave), nome, idade. Esta classe deve possuir o seguinte método: • métodos para calcular a quantidade de alimento consumido por dia e por tempo de vida, sabendo-se que a cada ano de vida um mamífero come 2 quilos/dia, uma ave come 100g/dia um anfíbio 20g/dia. A quantidade deve ser retornada em quilogramas. 5. Criar o modelo e implementar em Java uma classe Aluno. A classe possui os atributos nome, ano de ingresso, curso e qtd de disciplinas aprovadas. Esta classe deve possuir os seguintes métodos: • método para calcular o número de créditos do aluno, sabendo-se que cada disciplina aprovada representa 4 créditos • método para calcular o tempo (em anos) de permanência do aluno na faculdade. LPOO_Lista2.pdf Universidade Federal da Bahia Departamento de Ciência da Computação MAT A55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel Lista 2 de Exercícios (complementares) 1. Uma conta corrente possui um número, um saldo, um status que informa se ela é especial ou não e um limite. Crie uma classe conta que forneça métodos para que sejam feitos criações de conta, saques (uma conta corrente só pode fazer saques desde que o valor não exceda o limite de saque e o saldo), depósitos e emissão de saldo. 2. Em um sistema para o Detran, a carteira de motorista é representada por um número, CPF do proprietário, tipo (A, B ou AB), data de validade, data de expedição, pontos e situação (Valida, apreendida, vencida). Quando uma pessoa passa no exame do Detran, uma nova carteira é emitida com os dados do seu proprietário. Neste momento o proprietário não possui nenhum ponto na carteira. A medida que o tempo passa, se o proprietário fizer alguma infração, ele recebe pontos que são acumulados em sua carteira. Caso ele ultrapasse 20 pontos sua carteira é apreendida. Esporadicamente, os pontos são zerados. Construa uma classe que represente uma carteira. Forneça métodos para criar uma carteira, acrescentar pontos, consultar o saldo de pontos, zerar a carteira, apreender a carteira, verificar se esta está válida. 3. Criar uma classe que represente um contrato de aluguel de um imóvel. Um contrato possui um número, valor da prestação, quantidade de meses total, quantidade de prestações pagas, quantidade de prestações em atraso, percentual de juros por atraso e quantidade de meses para despejo. Fornecer os seguintes membros (métodos): • Criar um contrato. • Consultar o valor de uma prestação sem juros • Calcular valor dos juros para um mês de atraso • Pagar uma prestação sem juros. • Verificar se deve ser disparada a ordem de despejo de um imóvel dada a quantidade de meses já executados (quantos meses já se passaram desde a data de inicio do contrato). Imóveis cujo contrato falta apenas 6 meses para finalizar não podem ter ordem de despejo. LPOO_Lista4_composicaoSobrecarga.pdf Universidade Federal da Bahia Departamento de Ciência da Computação MAT A55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel Lista 4 (Sobrecarga, Composição, Estruturas de Controle e Repetição) 1. Considere que o Detran precisa de um sistema para controlar a carteira de motorista de um determinado condutor. Em nosso problema hipotético, cada possível condutor deverá ter informações relacionadas ao seu nome, identificação (RG ou CPF, por exemplo) e a carteira de motorista a qual lhe pertence. Toda carteira de motorista tem um número, status (se está ativa ou cancelada) e categoria (podendo ser A, B ou C). Uma carteira pode também acumular pontos. Dado um determinado condutor, precisamos oferecer para o usuário do sistema a possibilidade de: a. modificar a categoria da carteira; b. inclusão de pontos em sua carteira; c. consulta dos pontos atuais da carteira; e d. verificar se a carteira está cancelada (considere que uma carteira é cancelada quando tem mais de 30 pontos). Obs.: Utilize os conceitos de sobrecarga e composição Será possível instanciar um condutor que já tenha uma carteira, carteira e condutor ao mesmo tempo, condutor sem carteira. 2. Uma imobiliária hipotética necessita registrar contratos de aluguel de imóveis. Um contrato possui um número, valor do aluguel, quantidade de meses total, quantidade de prestações já pagas, quantidade de prestações em atraso, percentual de juros a ser cobrado por prestação atrasado, quantidade de meses atrasados suficientes para despejo e um status para indicar a situação atual do contrato (ativo ou inativo). Além disso, cada contrato deve possuir um fiador. As informações necessárias para um fiador são: nome, cpf e renda mensal. O sistema só deverá aceitar contratos ativos caso o fiador correspondente tenha renda mensal superior a 3 vezes o valor do aluguel. Precisamos ainda fornecer a possibilidade de: a. consultar o valor da prestação sem juros; b. calcular o valor da prestação para um mês de atraso; c. pagar uma prestação sem juros; d. verificar se deve ser disparada a ordem de despejo de um imóvel dada a quantidade de meses em atraso. Imóveis cujo contrato falta apenas 6 meses para finalizar não podem ter ordem de despejo. e. modificar a renda mensal do fiador cadastrado; e f. modificar o fiador do contrato; Obs.: Utilize os conceitos de sobrecarga e composição. 3. Construir uma classe que represente os clientes de um cinema. Todo cliente possui os atributos nome e idade. Construir um construtor para a classe e um método para calculo do valor do ingresso sabendo-se que: - Crianças (menos 14 anos) e idosos (mais de 65 anos) pagam meia entrada R$ 8,00 - Existe uma promoção onde todos pagam meia nas quartas e quintas feiras. - Receber como argumento o dia da semana. 4. Construir uma classe comparação que terá um atributo um valor e métodos para: Construtor Receber um número e verificar se ele é igual ao da classe Receber dois números e verificar se eles são iguais Receber um número e verificar se ele é menor que o da classe Receber dois números e verificar se o primeiro é maior que o segundo. LPOO_Lista5.pdf Universidade Federal da Bahia Departamento de Ciência da Computação MAT A55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel Lista 5 de Exercícios (todos os conceitos estudados) 1. Defina uma classe Data com os dados: dia, mês e ano. Esta classe conterá os métodos de modificar e recuperar atributos, e um método que imprime a data na tela. Além disso, esta classe deverá conter uma função que imprima, por extenso, o mês para a qual a data está instanciada. Ex: data: 01/05/09 Saída: MAIO. 2. Defina uma classe Professor com os dados: nome do professor, nome do departamento, data de admissão (utilizando o exercício anterior), número de registro. Inclua na classe um construtor para setar os dados e um método para imprimir o conteúdo, imprimindo a data por extenso. 3. Crie a classe Carro composto pelas classes Pneu e Motor, além de atributos como número de portas, ano do modelo e tipo do carro (hatch, sedan e minivan). Para cada atributo crie métodos para leitura e Modificação dos dados. As classes Pneu e Motor devem conter apenas uma breve descrição do tipo do item. Caso não seja informado, o número de portas de um carro é igual a 2. Um Carro possui um método que imprime todos os seus atributos na tela. 4. O valor de xy pode ser calculado como sendo x multiplicado por si mesmo y vezes (se y for inteiro). Escreva uma classe chamada “SeriesMatemáticas” que contenha um construtor para inicializar x e y, um método chamado “elevadoA” que calcule e retorne o resultado de xy , e um método chamado “imprimeResultado” que mostre o resultado obtido. Obs: Use uma estrutura de Repetição. LPOO_Lista6.pdf Universidade Federal da Bahia Departamento de Ciência da Computação MAT A55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel Exercícios – Lista 6 (Arrays em Java) 1. Construa uma classe em Java capaz de armazenar e gerenciar em um vetor os registros de temperatura de uma determinada localidade. Crie dois construtores: primeiro, um construtor para receber um vetor já criado com os valores das temperaturas já inseridos; segundo, um construtor para receber o tamanho de um vetor a ser criado. A classe deverá possuir métodos para: a. adicionar nova temperatura, caso haja espaço no vetor; b. remover temperatura, caso a temperatura a ser removida esteja no vetor; c. obter a temperatura máxima; d. obter a temperatura mínima; e. obter a amplitude térmica; f. obter a média das temperaturas; g. ordenar o vetor crescentemente; Obs.: Considere que seja possível ter mais de uma temperatura igual no vetor. No momento de remoção, escolha retirar a primeira ocorrência da temperatura a ser deletada, caso tenha mais de uma. 2. Construa uma classe em Java que seja capaz de sortear dezenas para o jogo da Mega-sena e divulgar o resultado na tela do computador. O sorteio das dezenas poderá ser solicitado quantas vezes for necessário. Além disso, construa um método capaz de retornar, quando solicitado, os últimos 10 jogos sorteados. Dica: Como gerar números aleatórios em Java. a) importar antes da declaração de classe o pacote java.util.Random; Exemplo: import java.util.Random; public classe NomeDaClasse { ... } Universidade Federal da Bahia Departamento de Ciência da Computação MAT A55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel b) Em seguida, veja como utilizar a classe Random dentro do código. Exemplo: import java.util.Random; public class NomeDaClasse { ... public void algumMetodo() { Random gerador = new Random(); int num = gerador.nextInt(500); System.out.print(num); } ... } Obs.: O sorteio da Mega-sena contém 6 dezenas de 0 a 99 não repetidas. Neste exemplo, o objeto gerador, que é uma instância da classe Random, gera um número inteiro qualquer de 0 a 499 e imprime na tela.Observe o parâmetro 500 do método nextInt. Este parâmetro define o limite do número inteiro a ser gerado (não incluindo ele mesmo), por isso vai de 0 a 499. Lista3.pdf Universidade Federal da Bahia Departamento de Ciência da Computação MAT A55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel Lista3 (Sobrecarga, this,Get e Set) 1 - Utilizando a classe Automóvel do exercício da lista anterior, suponha que o usuário poderá escolher se quer ou não informar o tipo de Combustível e o ano. Caso ele não informe os dois atributos o valor padrão para tipo de Combustível será “gasolina” e ano será “2009”. Utilize os conceitos aprendidos na última aula. 2 – Implemente a Classe Triângulo. Esta classe possuirá os atributos a, b e c (lados do triângulo) . Caso o objeto seja instanciado apenas com um parâmetro, o triângulo deverá ser eqüilátero (três lados iguais), caso o objeto seja instanciado com dois parâmetros, o triângulo deverá ser isósceles e o primeiro parâmetro indicará o tamanho de a e b, caso haja três parâmetros na iniciação do objeto, estes serão atribuídos a a, b e c. 3 – Utilizando o Exercício 2, crie os métodos calculaPerimetro(), que calculará o perímetro do triângulo atual e calculaPerimetro(a,b,c), que calculará o perímetro de um triângulo de lados a, b e c. 4 - Defina uma classe Professor com os dados: nome do professor, nome do departamento, data de admissão, número de registro. Inclua na classe os dados um método para imprimir o conteúdo. Suponha que, caso o usuário não informe a data de admissão do professor, a mesma será “01/01/2009”. 5 – Ainda utilizando a classe Professor, da questão acima, sabendo-se que os departamentos existentes são: 1 - Departamento de Ciência da Computação 2 – Departamento de Matemática 3 – Departamento de Física 4 – Departamento de Música Crie o método setDepartamento que poderá receber como parâmetro uma string ou um inteiro. Caso seja uma string, esta função atribuirá esta string ao nome do departamento, caso seja um inteiro, esta função atribuirá o departamento correspondente a este inteiro. Por exemplo, caso o passe como parâmetro da função o inteiro 3 então a função deverá atribuir “Departamento de Física” ao nome do departamento. 6. Conta pode ser comum, especial, poupança o investimento. Uma conta corrente possui um número, um saldo, um status que informa se ela é comum, especial, poupança ou investimento. Contas especiais possuem um limite. conta poupança e investimento possuem uma taxa rendimento mensal. Para a conta poupança informa-se o percentual de rendimento mensal que deve ser aplicado, para conta investimento além deste percentual é também informado a taxa de IOF (valor absoluto) que deve ser subtraído do valor após aplicado o rendimento. Crie uma classe conta que forneça métodos para que sejam feitos criações de conta, saques (uma conta corrente só pode fazer saques desde que o valor não exceda o limite de saque e o saldo), depósitos, emissão de saldo, rendimento mensal. Lista_-_Vetores_e_Matrizes.pdf Lista de Exercícios de Orientação a Objetos – Vetores e Matrizes 1. Escreva uma classe chamada “MatrizDeInteiros” que tenha como atributo uma matriz de inteiros e um construtor que receba como parâmetro a ordem da matriz, a instancie e inicialize com zeros. Acrescente a classe os seguintes métodos: a. um método que receba como parâmetro três números inteiros indicando respectivamente linha, coluna e o valor que deve ser armazenado na linha e coluna indicada. Obs: Caso a linha ou a coluna passadas como parâmetro estejam fora da ordem da matriz indique com uma mensagem o erro. b. um método “éQuadrada”, que retorna true se a matriz for quadrada (isto é, tem o mesmo número de linhas e colunas). c. um método total que some todos os valores da matriz retornando o resultado. d. um método que receba como parâmetro um determinado valor e retorne a linha onde o elemento foi encontrado na matriz ou –1 caso contrário. 2. Escreva uma classe chamada “VetorDeChar” que tenha como atributo um vetor de char e um construtor que receba como parâmetro uma frase. No construtor deve ser passada a frase para o vetor de char. Dica: Use o método “toCharArray” da classe String para colocar os elementos da frase no vetor. Exemplo: char vetor[] = frase.toCharArray(); Acrescente os seguintes métodos a classe: a. um método que retorne o número de vogais existentes na frase. b. um método que retorne o número palavras iguais na frase. 3. Escreva uma classe “Funcionário” com os atributos matricula (int), nome (String), departamento (int), salário (float) e função (String). Adicione na classe um construtor que receba todos os parâmetros para inicializar os dados de um funcionário. 4. Escreva uma classe “SetorPessoal” que tenha como atributo um vetor da classe “Funcionário” e uma variável inteira para ser usada como índice do vetor. Crie um construtor que receba como parâmetro o número de funcionários de uma empresa para instanciar o vetor e inicialize o índice do vetor com zero. Acrescente os seguintes métodos a classe: a. um método para adicionar funcionários no vetor definido na classe; b. um método que possa imprimir a folha de pagamento informando o nome dos funcionários e o seus respectivos salários. c. um método que possa retornar o valor total da folha de pagamento. d. um método que possa retornar o nome do funcionário que recebe o maior salário. e. um método que possa receber como parâmetro o número de um determinado departamento e mostrar o nome e o cargo de todos os funcionários daquele departamento. f. um método que possa receber como parâmetro o nome de uma determinada função e posteriormente imprimir o nome de todas as pessoas que exercem essa função. g. um método que possa imprimir a folha de pagamento informando o nome dos funcionários e o seus respectivos salários em ordem crescente de salário. Dica: É necessário criar outro vetor que conterá o vetor original e posteriormente ordená-lo. Lista_6.1_-_Static_e_Entrada.pdf Universidade Federal da Bahia Departamento de Ciência da Computação MATA55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel Monitor: Gustavo Damasceno de Araújo Carvalho Métodos Estáticos e Entrada Construa um classe que represente uma locadora. Cada locadora possui nome, CNPJ, uma lista de filme e uma lista de clientes. Cada filme possui titulo, ano e quantidade de cópias disponíveis. Cada cliente possui um nome, cpf/cnpj, um identificador se é pessoa física ou juridica, e quantidade de filmes que já locou. Os seguintes metódos devem ser implementados em locadora: ● Dado um filme, imprimir suas informações; ● Verificar se um dado filme é válido, ou seja, se o titulo não for vazio e se o ano for maior que 1900 e menor que 2013; ● Adicionar filme passando as informações através da entrada de dados e não por parâmetros; ● Pesquisar filmes por nome através da entrada de dados; ● Adicionar cliente por entrada de dados; ● Verificar se, dado um cliente, ele é especial. Cliente é especial se: for pessoa física e já tiver locado mais de 20 filmes ou for pessoa jurídica e tiver locado mais de 40 filmes; ● Mesma função anterior, mas usando entrada de dados para procurar pelo nome do cliente; Obs.: Utilize a classe Keyboard para entrada de dados. Lista_de_Herança.pdf Universidade Federal da Bahia Departamento de Ciência da Computação MATA55 – Programação Orientada a Objeto Professora: Rita Suzana Pitangueira Maciel Lista de Exercícios (Herança) 1. Um determinado supermercado necessita representar os seus funcionários distinguindo-os através de suas funções. Todo funcionário deve possuir: nome, CPF e um salário básico. Os funcionários do supermercado podem ser: empacotadores ou operadores de caixa (ou simplesmente caixa). Empacotadores são os únicos funcionários que podem ter deficiência auditiva. Portanto, é necessário informar, quando solicitado. Se o empacotador tem ou não deficiência. Se o operador possui deficiência ganha um auxilio de 10% do salário básico. Os operadores de caixa são os únicos funcionários que podem fazer hora extra. Portanto, para operadores de caixa. É preciso obter e alterar, quando solicitado informação da quantidade de horas extras realizadas no mês corrente. a. Crie os métodos construtores, gets e sets necessários nas classes Funcionario, Empacotador e Caixa; b. Crie um método “calculaSalario” na classe de funcionário. c. Utilize o conceito de redefinição de métodos para redefinir o método “calculaSalario” na classe Caixa para retornar o salário corrigido considerando um adicional de R$ 10,00 por hora extra trabalhada. d. Crie um método que permita alterar, quando solicitado informação da quantidade de horas extras realizadas no mês corrente. e. Utilize o conceito de redefinição de métodos para redefinir o método “calculaSalario” na classe Empacotador para retornar o salário corrigido considerando um adicional de 10% em cima da salário base para o caso do funcionário ser portador de alguma deficiência. 2. Uma biblioteca possui um nome, um endereço e armazena um conjunto de publicações. Atualmente, as publicações disponíveis são os artigos e os livros. Todas as publicações possuem data de publicação, um título, uma lista de outras publicações a que elas fazem referência e o conjunto de autores da publicação. São atributos relevantes para um autor: o seu nome e sua titulação. São atributos relevantes para artigos: o seu título, a sua data de publicação, o seus autores, as outras publicações que ele faz referência e o seu resumo. Para os livros é relevante armazenar seu título, sua data de publicação, as outras publicações que ele referencia seus autores, o número da edição, o nome da editora e o seu ISBN. As mas na biblioteca não existem objetos publicações; o que ela vai efetivamente armazenar são livros ou artigos. Livros podem ser locados por uma semana e artigo duas. a. Crie os métodos construtores, gets e sets necessários para as classes Publicacao, Artigo, Livro e Autor; b. Crie um método na classe Publicacao que informe se uma determinada publicação está ou não disponível. c. Crie um método “locar” na classe Biblioteca que recebe um livro como parâmetro e efetua a locação do livro; d. Usando os conceitos de sobreposição defina outro método “locar” que recebe um artigo como parâmetro; e. Defina o método “devolver” na classe Biblioteca que recebe um artigo ou um livro como parâmetro e efetua a devolução; f. Crie um método “inserirLivro” na classe Biblioteca que permite adicionar um ou mais livros no acervo da biblioteca. Use os conceitos de sobreposição. g. Crie um método “inserirArtigo” na classe Biblioteca que permite adicionar um ou mais artigos no acervo da biblioteca. Use os conceitos de sobreposição. h. Crie um método “inserirAutor” na classe Publicacao que permite adicionar um ou mais autores do livro. Use os conceitos de sobreposição; i. Crie um método “inserirReferencias” na classe Publicacao que permite adicionar uma ou mais publicações. Use os conceitos de sobreposição; j. Crie o método “listaAutores” que mostra dos os autores de uma determinada publicação; k. Crie um método “listaReferencias”, na classe Publicacao, que para cada referência imprime os o nome da referência, o tipo (se é um livro ou um artigo), os autores, a edição, a editora e o ISBN no formato ABNT.