#java #class #oop
#java #класс #ооп
Вопрос:
Класс адресов:
public class Address {
private String country;
private String county;
private String city;
private String postcode;
private String HouseNumber;
public Address(String country, String county, String city, String postcode, String HouseNumber) {
this.country = country;
this.county = county;
this.city = city;
this.postcode = postcode;
this.HouseNumber = HouseNumber;
}
public void view_adress() {
String[] address = {country, county, city, postcode, HouseNumber};
for (int i = 0; i<address.length; i ) {
System.out.println(address[i]);
}
}
public void viewHouseNumber() {
System.out.print(HouseNumber);
}
}
Класс Person:
public class Person {
private String firstName;
private String lastName;
private String Date_of_birth;
private String PhoneNumber;
private String[] address;
public Person (String firstName, String lastName, String Date_of_birth, String PhoneNumber, String[] address) {
this.firstName = firstName;
this.lastName = lastName;
this.Date_of_birth = Date_of_birth;
this.PhoneNumber = PhoneNumber;
this.address = address;
}
public void view_PhoneNumber() {
System.out.print(PhoneNumber);
}
}
Комментарии:
1. Пожалуйста, избавьте читателей и отформатируйте / очистите свой код.
2. На самом деле между людьми и адресами существует связь «многие ко многим» в реальном мире.
3. Обратите внимание, что обычно вам следует избегать использования массивов;
List
лучше, потому что он автоматически управляет размером и имеет другие функции. Кроме того, ваш код будет легче читать, если вы будете следовать стандартам кода: члены должны бытьcamelCase
, неTitleCase
(PhoneNumber
) илиsnake_case
.4. @NomadMaker спасибо за правильное понимание. Я также добавил эту информацию.
Ответ №1:
Используйте композицию ООП.
public class Person {
//...
List<Address> addresses;
//...
}
Один экземпляр a Person
будет иметь 0 или более экземпляров Address
.
Обратите внимание, что в реальном сценарии вам лучше сохранить список userId
s и в вашем Address
классе, потому что у более чем одного пользователя может быть один или несколько адресов, а это значит, что ваше отношение должно быть Many-To-Many
.
Не менее (вообще) важно придерживаться соглашений об именовании Java и именования:
- классы с
PascalCase
; - имена полей и методов с
camelCase
; - константы с
ALL_CAPS_SEPARATED_WITH_UNDERSCORES
помощью .
Комментарии:
1. Это бы устранило необходимость в атрибуте private String[] address
2. У вас есть
Address
тип. Почему вы хотите иметь aString[] address;
вместо этого? вы хотите хранить адреса в виде строковых литералов? в этом случае использование дискретного / отдельного типа (Address
) — лучшая идея, а не сохранение ваших адресов в виде строковых литералов. Итак, да,String[] address
кажется ненужным.3. Я совсем новичок в Java!
4. Просто измените свой
private String[] address;
сprivate List<Address> addresses;
помощью . Примечание. Пожалуйста, следуйте соглашениям об именовании Java: не начинайте свои идентификаторы переменных с первого заглавного символа (который у вас есть в нескольких случаях). Кроме того, сделайте имена ваших полей описательными. Например. когда вы храните список объектов, вероятно, лучше назвать поле как адреса .5. Я перепостирую вопрос, который я изменил в классе person на другой формат, будет ли это по-прежнему работать.