Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com Generics e Library


enemy100

Pergunta

alguém poderia me ajudar nessas questoes?

já fiz e refiz 3 vezes mas ta fogo!!!

1)

fazer Uma classe Library que funcione como uma biblioteca para o seguinte tipo de mídia: livros, vídeos e músicas. A sua implementação deve obrigatoriamente fazer uso de generics. Sinta-se à vontade para usar qualquer API de java em sua implementação, caso julgue necessário. Basicamente a biblioteca deverá possuir os métodos:

public insertElement (E element, K key) // inserir um novo ítem na biblioteca com uma chave dada que poderá ser usada para, posteriormente, recuperar o ítem da biblioteca.

E recoverElement (K key) // recuperar um ítem da biblioteca

void orderLibraryByKey ( ) // classifica os itens da Library em ordem alfabética, segundo a chave

A classe Library deverá ser desenvolvida de modo a ser thread safe, isto é, deve ser possível a sua utilização concomitante a partir de vários threads.

Obs.:Não se esqueça do construtor.

2)

Forneça o código em Java para a classe Midia e suas subclasses: Livro, Vídeo e Música e desenvolva uma pequena aplicação que use a classe Library para armazenar dados sobre os seus livros, vídeos e músicas (ex.: título, autor, editora, data, ISBN, gravadora, diretor, atores, gênero, etc.). Você poderá ter uma instância da classe Library para cada tipo de produção, uma para os livros, outra, para os vídeos e outra, para as músicas.

3)

Desenvolva um programa em Java com pelo menos dois diferentes threads que operem sobre a classe Library, armazenando e recuperando informações sobre os seus livros, vídeos e músicas. Entre uma operação e outra nestes threads espere um intervalo variando aleatoriamente entre 0 e 8 segundos.

4)

Desenvolva um método showProperties() para cada uma das classes mencionadas na segunda questão e que simplesmente imprima as variáveis de instância que definam as características (título, autor, etc.) da mídia em questão. A seguir forneça um exemplo do uso desses métodos envolvendo Polimorfismo.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Acho que é algo +- assim:

cria um enumerador para o tipo de mídia

public enum TipoMidia {
    LIVRO, MUSICA, VIDEO;
}
Library.java
import java.util.*;

public class Library{
    
    private Map<Integer, Midia> biblioteca = new HashMap<Integer, Midia>();
    
    public synchronized void insertElement(Midia novaMidia, int key){
        biblioteca.put(key, novaMidia);
    }
    
    public synchronized Midia recoverElement(int key){
        return biblioteca.get(key);
    }
    
    public synchronized void orderLibraryByKey(){
        Map<Integer,Midia> bibliotecaOrdenada = new TreeMap<Integer,Midia>();
        bibliotecaOrdenada.putAll(biblioteca);
        biblioteca = null;
        biblioteca.putAll(bibliotecaOrdenada);
        bibliotecaOrdenada = null;
    }
    
}
Midia.java
public abstract class Midia {

    private TipoMidia tipo; 
    /*
     * demais atributos de uma mídia em geral
     * */
    
    public TipoMidia getTipo(){
        return this.tipo;
    }
    
    public void setTipo(TipoMidia tipo){
        this.tipo = tipo;
    }
    /*
     * demais getters e setter dos atributos
     * */
    
    public final void salvar(){
        Library biblioteca = new Library();
        biblioteca.insertElement(this, 1);
    }
    
    public final void recuperar(int key){
        Library biblioteca = new Library();
        carregarMidia(biblioteca.recoverElement(key));
    }
    
    private final void carregarMidia(Midia midiaRecuperada) {
        this.tipo = midiaRecuperada.tipo;
        /*
         * continua carregando
         */
        carregarEspecifico(midiaRecuperada);
    }

    public final void ordenar(){
        Library biblioteca = new Library();
        biblioteca.orderLibraryByKey();
    }
    
    public abstract void carregarEspecifico(Midia midiaRecuperada);
}
Daí você cria os três tipos de mídia herdando Midia, e neles você coloca só os atributos específicos e implementa o carregaEspecifico em cada um deles, que é onde você carrega os itens específicos de cada tipo de mídia, os comuns são carregados pelo carregaMidia Livro.java
public class Livro extends Midia{

    /*atriutos específicos de um livro*/
    
    /*getters e setters*/
    
    @Override
    public void carregarEspecifico(Midia midiaRecuperada) {
        /*
         * Carrega os dados específicos recuperados nos atributos
         * ex: this.paginas = midiaRecuperada.paginas;
         */        
    }
}

O resto ali é de boa, a Thread e o ShowProperties()

ShowProperties() tu pode reescrever o ToString dos objetos

Editado por Iceguy
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...