cryteck Posted October 4, 2012 at 08:57 PM Report #477801 Posted October 4, 2012 at 08:57 PM Boas pessoal. Gostava de vos pedir uma ajuda para um exercício. Exercício Escrever uma classe que haja como um livraria para os seguintes tipos de media: livros, vídeos e cds de musica. Atenção, deverá fazer uso de Generics. Adicione APIs adicionais para armazenar e obter media. Gostava que me ajudassem a pensar no problema e como o resolver. Eu tenho bastante dificuldade em java, mas não quero que me façam código pois as minhas dificuldade mesmo é pensar em organizar o exercício, obter a lógica na minha cabeça. Gostavam que me dessem umas dicas, como resolveriam o problema assim por "alto". Obrigado pois tenho muito que pedalar este semestre para fazer Estruturas de Dados. Cumps 🙂
Guest skinie18 Posted October 4, 2012 at 09:13 PM Report #477803 Posted October 4, 2012 at 09:13 PM (edited) Segundo o que isso me parece tu queres fazer um exemplo de Polimorfismo. Para isso tens de criar uma class Media, e 3 sub-classes da class Media (Vídeo, Livros e Musica). Na super class crias um metodo tipo: getMedia(); que devolve o conteúdo, no caso de Media nao há conteúdo por isso defines a class Media como abstracta tal como o metodo getMedia(); Dentro das sub-classes utilizas o método getMedia() para devolver o conteúdo das diferentes Media's. Para testar fazes um array de Media(ex:. ArrayList<Media> teste;) e adicionas la dentro vários livros, vídeos e musicas. Depois corres o array todo com um for e fazer getMedia. Ex:. for(Media m:teste) System.out.println(m.getMedia()); Edited October 4, 2012 at 09:14 PM by skinie18
cryteck Posted October 4, 2012 at 09:26 PM Author Report #477805 Posted October 4, 2012 at 09:26 PM Skinie18 obrigado desde já. Mas o professor disse me tambem que temos de fazer uso obrigatoriamente de Generics, logo como poderei fazer isso assim por "alto". Cumps 🙂
AJBM Posted October 4, 2012 at 09:53 PM Report #477809 Posted October 4, 2012 at 09:53 PM (edited) Boas! Vai ter que crias as classes normais livro, videos... Depois crias uma classe genérica Media<T> e crias aqui os métodos adicionar, remover..., esta classe vai ser tipo o arraylist Edited October 4, 2012 at 09:54 PM by AJBM
Guest skinie18 Posted October 4, 2012 at 09:56 PM Report #477810 Posted October 4, 2012 at 09:56 PM Desculpa, nao respondi a tua pergunta. Aconselho-te a passar por este link: http://docs.oracle.com/javase/tutorial/java/generics/types.html
HappyHippyHippo Posted October 4, 2012 at 10:07 PM Report #477811 Posted October 4, 2012 at 10:07 PM olha para o primeiro post do skinie18 eu vejo o uso dos generics não na criação das estruturas de dados, por na realidade não faz sentido, mas o uso deste tipo de funcionalidade está lá IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
cryteck Posted October 4, 2012 at 10:11 PM Author Report #477812 Posted October 4, 2012 at 10:11 PM (edited) Mas depois como faço para associar media a uma biblioteca. Da para fazer media.add(new Book("ddgfdgfg")); media.add(new Musica("asdswfdsf")); Ou tenho de fazer media.add("new Media("nomelivro","nomemusica","nomevideo"); Cumps 🙂 . Edited October 4, 2012 at 10:14 PM by cryteck
AJBM Posted October 4, 2012 at 10:17 PM Report #477813 Posted October 4, 2012 at 10:17 PM Da se tiveres o método add implementado na classe media, para criares o metodo podes ser tu, a fazer, ou podes usar o arraylist
cryteck Posted October 4, 2012 at 10:22 PM Author Report #477814 Posted October 4, 2012 at 10:22 PM SIm o professor quer que utilize o arrayList mas só posso fazer assim media.add("new Media("nomelivro","nomemusica","nomevideo"); Não posso inserir um livro ou um cd ou uma musica, tem de ser os três ao mesmo tempo? Desculpa mas tou mesmo com dificuldades... Obrigado 🙂
AJBM Posted October 4, 2012 at 10:29 PM Report #477815 Posted October 4, 2012 at 10:29 PM (edited) Por exemplo queres adicionar um livro media.add(new LIvro("nome_livro","autor")), queres adicionar uma musica fazer a mesma coisa media.add(new Musica("nome","cantor")) , adicionas um de cada vez, Edited October 4, 2012 at 10:37 PM by AJBM
HappyHippyHippo Posted October 4, 2012 at 10:47 PM Report #477816 Posted October 4, 2012 at 10:47 PM ainda não apresentaste o que é a classe "media" para ti. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
cryteck Posted October 5, 2012 at 02:27 PM Author Report #477865 Posted October 5, 2012 at 02:27 PM (edited) Boas pessoal. Para já tenho este código abstract public class Media<T> { abstract public String getMedia(); } class Book extends Media { private String name; private String author; public Book(String name, String author) { this.name = name; this.author = author; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String getMedia() { return "Book{" + "name=" + name + ", author=" + author + '}'; } } public class Music extends Media { private String name; private String singer; public Music(String name, String singer) { this.name = name; this.singer = singer; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSinger() { return singer; } public void setSinger(String singer) { this.singer = singer; } @Override public String getMedia() { return "Music{" + "name=" + name + ", singer=" + singer + '}'; } } public class Video extends Media { public enum Type { comedy, drama }; private String name; private Type typeVideo; private String author; public Video(String name, Type typeVideo, String author) { this.name = name; this.typeVideo = typeVideo; this.author = author; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Type getTypeVideo() { return typeVideo; } public void setTypeVideo(Type typeVideo) { this.typeVideo = typeVideo; } @Override public String getMedia() { return "Video{" + "name=" + name + ", typeVideo=" + typeVideo + ", author=" + author + '}'; } } public class Parte2Exe5Demo { /** * @param args the command line arguments */ public static void main(String[] args) { List<Media> media = new ArrayList<Media>(); media.add(new Book("Database Systems: A Practical Approach to Design, Implementation and Management, 4th Edition", "Connolly, T")); media.add(new Book("Database systems design implementation and management", "Connolly, T")); media.add(new Music("Musica1", "Desconhecido")); media.add(new Music("Musica2", "Desconhecido")); media.add(new Video("Batman", Video.Type.drama, "124")); media.add(new Video("Batman Dark Knight", Video.Type.comedy, "Luis Sousa")); for (Media m : media) { System.out.println(m.getMedia()); } } Isto tá a funcionar mas penso que não deve estar feito da melhor maneira. Digam alguma coisa, pois tenho de utilizar genéricos. Cumps, 🙂 Edited October 5, 2012 at 02:36 PM by cryteck
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now