Jump to content

Recommended Posts

Posted

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 🙂

Posted (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 by skinie18
Posted (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 by AJBM
Posted (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 by cryteck
Posted

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 🙂

Posted (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 by AJBM
Posted (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 by cryteck

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.