Answer:
import java.time.LocalDate;
class TestWedding {
public static void main(String[] args) {
Person man1 = new Person("John", "Doe", LocalDate.parse("1990-05-23"));
Person woman1 = new Person("Jane", "Something", LocalDate.parse("1995-07-03"));
Person man2 = new Person("David", "Johnson", LocalDate.parse("1991-04-13"));
Person woman2 = new Person("Sue", "Mi", LocalDate.parse("1997-12-01"));
Couple cpl1 = new Couple(man1, woman1);
Couple cpl2 = new Couple(man2, woman2);
Wedding wed1 = new Wedding(cpl1, "Las Vegas", LocalDate.parse("2020-09-12"));
Wedding wed2 = new Wedding(cpl2, "Hawaii", LocalDate.parse("2021-01-02"));
displayDetails(wed1, wed2);
}
public static void displayDetails(Wedding w1, Wedding w2) {
System.out.println(w1.toString());
System.out.println(w2.toString());
}
}
---------------------------
class Couple {
private Person person1;
private Person person2;
public Couple(Person p1, Person p2) {
person1 = p1;
person2 = p2;
}
public String toString() {
return person1.toString() + " and " + person2.toString();
}
}
----------------------------
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
class Person {
private String firstName;
private String lastName;
private LocalDate birthDate;
public Person(String first, String last, LocalDate bdate) {
firstName = first;
lastName = last;
birthDate = bdate;
}
public String getFirstName() {
return firstName;
}
public String toString() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("LLLL dd, yyyy");
return String.format("%s %s born %s", this.firstName, this.lastName, birthDate.format(formatter));
}
}
------------------------------------
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
class Wedding {
private Couple couple;
private String location;
private LocalDate weddingDate;
public Wedding(Couple c, String loc, LocalDate wDate) {
couple = c;
location = loc;
weddingDate = wDate;
}
public String getLocation() {
return this.location;
}
public String toString() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("LLLL dd, yyyy");
return
couple.toString() +
" are getting married in " + location + " on "+
weddingDate.format(formatter);
}
}
Explanation:
I used overrides of toString to let each object print its own details. That's why this solution doesn't really require any getters. I implemented some to show how it's done, but you'll have to complete it. The solution shows how to think in an OO way; ie., let every class take care of its own stuff.