Преобразование ассоциации классов UML "1 в n" в код Java - PullRequest
0 голосов
/ 18 января 2019

Я должен сделать обратный инжиниринг из диаграммы классов UML в код Java.Вот пример:

enter image description here

Как видите, SCSIController может иметь 1..4 DiskDrive.Могу ли я представить его в Java таким образом?

public class SCSIController extends Controller{
    private List disks;

    public SCSIController(){
        disks=new ArrayList();
    }

    public void addDisk(DiskDrive d){
        if(disks.size()<4 && !disks.contains(d)){
            disks.add(d);
            ………
            ………
        }else
             ……… //do something else
    }
}

Прежде чем добавить DiskDrive в SCSIController, я проверяю, что в его списке дисков SCSIController содержит менее 4 DiskDrive.Правильный ли это способ кодирования этой связи 1 к n?

1 Ответ

0 голосов
/ 18 января 2019

В основном вы правы. Однако ваша множественность не требует уникальности

enter image description here

хотя это будет иметь большой смысл :-) Если строго следовать спецификации UML, вы можете опустить && !disks.contains(d)) в своем коде. Или вы добавляете тип, как показано выше. (Или, возможно, просто предположите, что люди в состоянии понять, что это правильно.)

Примечание: Я думаю, что SCSIController также не может подключить диск. Ваш UML показывает 1..4, поэтому вам потребуется хотя бы один диск, который делает ваш код неправильным в этом отношении.

...