ign="justify"> */
private double getRests (Container c, Item i, SortedMap lt ; Container, List lt; Item gt; gt; map) {
double totalVolume=0;
double totalWeight=0;
for (Item item: map. get (c)) {+=item. volume; +=item. weight;
}
double volumeRests=c. getVolume () - totalVolume;
double cargoRests=c. getCargo () - totalWeight;
if (volumeRests lt; cargoRests) {
return volumeRests;
} else if (cargoRests lt; volumeRests) {
return cargoRests;
}
return 0;
}
}
Також в програмі присутні класи графічного інтерфейсу і окремий клас, що містить метод main ().
Повний вихідний код програми.
Вихідний код програми на Java.
Пакет core .. java
package core;
/**
* Бінарне відношення.
* @ author AtemB
*
* @ param lt; T gt; Тип елементів множини.
*/
public interface BinaryRelation lt; T gt; {
/**
* Порівняти два елементи множини. Цей метод інкапсулює логіку бінарного відношення.
* @ param t1 Перший елемент.
* @ param t2 Другий елемент.
* @ return Домінуючий елемент або null, якщо елементи непорівнянні.
*/
public T compare (T t1, T t2);
}. java
package core;
import java. util. ArrayList;
import java. util. LinkedList;
import java. util. List;
import java. util. Map;
/**
* ЛПР (особа, яка приймає рішення).
* @ author AtemB
*
*/
public class Boss {
class BossBinaryRelation implements BinaryRelation lt; Item gt; {
@ Override
public Item compare (Item i1, Item i2) {
//Звичайно, не сама пряморукая реалізація, зате відносно зрозуміла для сприйняття.
//У цей список заносяться різниці оцінок за критеріями. lt; Double gt; rates= new LinkedList lt; Double gt; () ;. add (( double ) (i1. rate1 - i2. rate1)) ;. add (( double ) (i1. rate2 - i2. rate2));
//Прапори в цьому списку означають, позитивний або негативний
//результат порівняння критеріїв.
//Однакові значення до списку не заносяться. lt; Boolean gt; flags= new LinkedList lt; Boolean gt; ();
for (Double d: rates) {
if (d. doubleValue () gt; 0) {. add ( true );
} else if (d. doubleValue () lt; 0) {. add ( false );
}
}
//Якщо спіок прапорів порожній, значить, об'єкти по перевіряється критеріям рівні.
if (flags. isEmpty ()) {
return null ;
} else {
boolean resultFlag= false ;
for ( int i=1; i lt; flags. size (); i ++) {= flags. get (i);
//Якщо в списку зустрічаються різні значення прапорів, значить,
//об'єкти незрівнянні за значущим критер...