Inicializar признак ассоциации состава

Я реализую задание, которое они послали мне, и которое уже считает сделанным 'скелет' того, что является программой, и только должен включать некие методы. Я не могу предотвратить ошибку, что я думаю, что в глаза кого-то, которого он контролировал бы, он будет совсем не трудным.

Однако у меня есть два класса: Player () и PlayerAttributes ().

Asociación de composición

Позже я присоединяю вас код, который я считаю необходимым, чтобы понимать мою ошибку.

С одной стороны класс PlayerAttributes ():

import java.io.Serializable;

public class PlayerAttributes implements Serializable{ private static final long serialVersionUID = 1L;

private int height, speed, defense, jump, energy, ft, fg2p, fg3p, rebounds, assists;

private double weight;

public PlayerAttributes(int height, double weight, int speed, int defense, int jump, int energy,
        int ft, int fg2p, int fg3p, int rebounds, int assists) throws Exception{

    setHeight(height);
    setWeight(weight);
    setSpeed(speed);
    setDefense(defense);
    setJump(jump);
    setEnergy(energy);
    setFt(ft);
    setFg2p(fg2p);
    setFg3p(fg3p);
    setRebounds(rebounds);
    setAssists(assists);
}

//getters y setters
}

И из-за другого класс Player ():

import java.io.Serializable;

public class Player extends Person implements Serializable{
private static final long serialVersionUID = 1L;

private int number, numInternational, injuredWeeks;
private Position position;

private String imageSrc;
private PlayerAttributes attributes;

public Player(String name, String surname, String nick, LocalDate birthdate, Country country, int salary, int cancellationClause, int contractYears, Team team, int number, int numInternational, int speed, int defense, int jump, int energy, int ft, int fg2p, int fg3p, int rebounds, int assists, Position position, String imageSrc) throws Exception{

    super(name, surname, nick, birthdate, country, salary, cancellationClause, contractYears, team);        
    setNumber(number);  
    setNumInternational(numInternational);
    setPosition(position);
    setInjuriedWeeks(0);
    setImageSrc(imageSrc);

}

Поскольку уже я считаю очевидным признак attributes типа Плайераттрибутес, сейчас у меня есть, что inicializarlo внутри строителя Плайер ():

attributes= new PlayerAttributes(height, weight, speed, defense, jump, energy, ft, fg2p, fg3p, rebounds, assists);

В создании нового объекта PlayerAttributes () он, где он дает мне ошибку, конкретно в признаках height и weight, оставшаяся часть не выходит у меня никакая ошибка. Возможно наблюдаться, что вышеупомянутые признаки также не включены в строителя класса Player () в то время как оставшаяся часть признаков если. Взамен в строителе PlayerAttributes (), если, что включены.

Существует какой-то способ предотвращать эту ошибку, не включая признаков в строителя Player () с оставшейся частью?

Я не понимаю много, но думаю, что я требуюсь этой формы, из-за которой а уже он пришел бы включенный в строителя как оставшаяся часть.

0
задан 21.12.2019, 21:54
1 ответ

способ предотвращать эту ошибку был бы делая другой строитель класса PlayerAttributes, в которого он не включает эти 2 признака.

Что-либо подобное:

public PlayerAttributes (int speed, int defense, int jump, int energy, int ft, int fg2p,
                         int fg3p, int rebounds, int assists) throws Exception {

    setSpeed(speed);
    setDefense(defense);
    setJump(jump);
    setEnergy(energy);
    setFt(ft);
    setFg2p(fg2p);
    setFg3p(fg3p);
    setRebounds(rebounds);
    setAssists(assists);
}

, Но если ты должен продолжать 100 % схема UML, обрати внимание, что у класса Player есть признаки height и weight.

ты Надеялся помочь приветствию.

1
ответ дан 22.12.2019, 22:45