(JAVA) Получить доступ ко всем объектам через ссылку другого объекта
Есть следующий код:
// Класс для создания сущностей Track.
final class Track {
String Name; // название трека
String Author; // имя автора
String CoAuthor; // имя соавтора
Album A; // альбом
// Конструктор класса для создания сущности с указанием названия трека и альбома.
Track(String n, Album a) {
Name = n;
Author = a.Author;
A = a;
}
// Конструктор класса для создания сущности с указанием названия трека, его автора и альбома.
Track(String name, String coAuthor, Album a) {
Name = name;
Author = a.Author;
CoAuthor = coAuthor;
A = a;
}
public String toString() {
if (CoAuthor != null) {
return Name + ", " + "авторы: " + Author + ", "+ CoAuthor;
}
return Name + ", " + "автор: " + Author;
}
}
// Класс для создания сущностей Album.
class Album {
String Name; // название альбома
String Author; // автор альбома
Album (String n, String a) {
Name = n;
Author = a;
}
}
public class Program {
public static void main(String[] args) {
Album a1 = new Album ("Кукловод", "Металлов");
Album a2 = new Album ("Шоссе к ООП", "Асид");
Track t1 = new Track ("Состояние объектов", "Янг", a2);
Track t2 = new Track ("Шоссе к ООП", a2);
Track t3 = new Track ("Одноразовый программист", "Бертон", a1);
System.out.println(t1);
System.out.println(t2);
System.out.println(t3);
System.out.println(t1.A);
}
}
Требуется вывести все треки альбома “Шоссе к ООП” (сущность a2), имея ссылку на трек “Состояние объектов” (сущность t1).
Я правильно понимаю, что нужно получить доступ ко всем объектам класса Track, которые связаны с объектом класса Album? Если да, то прошу просто скинуть пример правильного кода. Если же неправильно понял, то дополнительно прошу объяснить, как сделать правильно.
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Примерно так:
public class Program {
public static void main(String[] args) {
Album album1 = new Album ("Кукловод", "Металлов");
Track track = new Track ("Одноразовый программист", "Бертон");
album1.addTrack(track);
Album album2 = new Album ("Шоссе к ООП", "Асид");
Track track1 = new Track ("Состояние объектов", "Янг");
Track track2 = new Track ("Шоссе к ООП");
album2.addTrack(track1);
album2.addTrack(track2);
System.out.println(track1.getAlbum().getTracks());
}
}
import java.util.ArrayList;
import java.util.List;
public class Album {
private String name;
private String author;
private List<Track> tracks = new ArrayList<>();
public Album (String name, String author) {
this.name = name;
this.author = author;
}
public Album addTrack(Track track) {
tracks.add(track);
track.setAlbum(this);
return this;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public List<Track> getTracks() {
return tracks;
}
public void setTracks(List<Track> tracks) {
this.tracks = tracks;
}
@Override
public String toString() {
return "Album{" + "name=" + name + ", author=" + author + '}';
}
}
public class Track {
private String name;
private String author;
private String coAuthor;
private Album album;
public Track(String name) {
this.name = name;
}
public Track(String name, String author) {
this.name = name;
this.author = author;
}
public Track(String name, String author, String coAuthor) {
this.name = name;
this.author = author;
this.coAuthor = coAuthor;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getCoAuthor() {
return coAuthor;
}
public void setCoAuthor(String coAuthor) {
this.coAuthor = coAuthor;
}
public Album getAlbum() {
return album;
}
public void setAlbum(Album album) {
this.album = album;
}
@Override
public String toString() {
return "Track{" + "name=" + name + ", author=" + author + ", coAuthor=" + coAuthor + '}';
}
}