Create the package named by,gsu,epamlab and define the class BusinessTrip, describing business trip expenses of an employee, страница 2

●  general-purpose constructor.

Methods:

●  getters/setters;

●  getMass( ) – calculating the subject mass (= density * volume);

●  toString( ) – converting of an object to a string in the csv–format: each field and mass, separated by the ";" symbol.

Example:

wire;steel;7850.0;0.03;235.5

Define the Runner class in the default package, where:

1. Create the object representing the steel wire having the volume 0.03 cubic meter.

2. Print the object content to the console, using toString( ) method.

3. Change the wire material on the copper (density = 8500.0) and print its mass.

Example:

The wire mass is 255.0 kg.

Замечания

– В этой задаче нет отношения наследования между сущностями (материал и предмет). Наследование возникает, когда одна сущность является частным случаем другой. Например, металл (или другое твердое вещество) и материал. Другими словами, металл является материалом. Предмет состоит из материала, а не является материалом. Поэтому предмет не может быть наследником от материала.

Такое отношение между сущностями называется композицией. Оно реализуется через ссылку на объект класса.

private Material material;

– Обратите внимание, что у конкретного материала плотность является константой, что нужно отразить при создании класса. Например, у стали плотность 7850.0 и никакая другая.

Еще являются константами объекты, соответствующие конкретным материалам (стали и меди).

– Не экономьте память под вещественные значения в java se. Вообще не используйте тип float, всюду только double.

Task 3

Create the package named by.gsu.epamlab for the class Purchase, describing a wholesale purchase of the same commodity in the same price throughout a week. The class Purchase must implement the interface Comparable parameterized by this class.

Class fields:

●  commodity name,

●  price (in belarusian rubles),

●  number of purchased units,

●  week day (use enumeration).

Constructors:

●  default constructor,

●  general-purpose constructor.

Methods:

●  getters/setters;

●  getCost( ) – calculating the purchase cost;

●  toString( ) – converting of an object to a string in the csv–format: each non constant field and the purchase cost, separated by the ";" symbol);

●  compareTo(Purchase purchase) – comparing purchases (returns an integer value <0, =0, >0 if this number of purchased units is less, equal, greater than purchase one accordingly).

Define the Runner class in the default package, where:

1. Create an array for 9 non empty objects.

2. Print the array content to the console (constants one time at first).

3. Calculate the mean cost of all purchases, the total cost of all purchases in Monday, the day with the maximum cost purchase.

4. Sort an array by the method sort( ) of the class Arrays.

5. Print the array content to the console (constants one time at first).

Замечания

– Класс Purchase должен реализовывать интерфейс Comparable, праметризованный объектами этого же класса. Следовательно, структура класса Purchase такая:

public class Purchase implements Comparable<Purchase> {

public int compareTo(Purchase purchase) {

if(number < purchase.number) {

return –1;

}

//и так далее.

//Можно возвращать ЛЮБОЕ отрицательное число.

               //Подумайте, как обойтись без операторов if.

}

}

 При реализации механизма сравнения объектов класса через метод compareTo( ) интерфейса Comparable массив объектов этого класса сортируется следующим образом:

//объявление и инициализация массива

Purchase[ ] purchases = new Purchase[] {

new Purchase(…),

};

//сортировка

Arrays.sort(purchases);

– Для дня недели создать перечисление. Причем не нужно его прятать внутрь класса покупки. Оно должно быть внешним, как следствие, в отдельном файле. Элементы перечисления – константы, что требует соответствующего именования.

– Иногда ошибочно интерпретируют фразу пункта 3 задачи 3: «Calculate …, the day with the maximum cost purchase». Т.е. речь идет о дне, когда была зарегистрирована покупка (в единственном числе) с максимальной стоимостью. А вот если бы покупки были во множественном числе (the day with the maximum cost purchases), тогда следовало бы найти суммарные стоимости за каждый день, а потом среди них максимум.

– Т.к. пункты 2 и 5 раннера одинаковые, то для этого пункта надо реализовать статический метод, а затем его дважды вызвать из раннера.