Переопределяющий метод для создания подкласса

#oop #processing

#ооп #обработка

Вопрос:

ПРИМЕЧАНИЕ: Кумулятивная гистограмма — это гистограмма, в которой каждое значение добавляется к сумме предыдущих значений, например, если есть 3 яблока, 2 банана и 6 апельсинов, тогда числа в обычной гистограмме будут [3,2,6], но в кумулятивной гистограмме они будут [3,5,11].

Вопрос: Создайте подкласс гистограммы под названием CumulativeHistogram. Мне нужно только переопределить метод toString(), чтобы решить проблему.

 class Histogram
{
public char symbol = '*';
protected String[] categories;
protected int[] frequencies;

public Histogram(int numCategories)
{
categories = new String [ numCategories ];
frequencies = new int [ numCategories ];
for (int index = 0; index < numCategories; index  ) {
categories[index] = "unlabeled";
frequencies[index] = 0;
 } 
}

public void setCategory(int index, String name, int frequency)
{
categories[ index ] = name;
frequencies[ index ] = frequency; 
}

public String toString()
{
String result = "";
 for (int index = 0; index<categories.length; index  ){
 result =categories[index]  ": ";
 result =repeatSymbol(frequencies[index]);
 result ="n";
}
return resu<
}

protected String repeatSymbol(int numTimes)
{
String result = "";
for (int index = 0; index <numTimes; index  )
result  = symbol;
return resu<
}
}
  

Вот шаблон для класса:

 class CumulativeHistogram extends Histogram {

 public CumulativeHistogram(int numCategories) {
     super(numCategories);
 }

 public String toString() {
     //*****fill in this method
   }
 }
  

Некоторый тестовый код

 Histogram hist = new Histogram(3);
hist.setCategory(0, " Apples", 4);
hist.setCategory(1, "Bananas", 2);
hist.setCategory(2, "Oranges", 5);

println( hist );

CumulativeHistogram hist2 = new CumulativeHistogram(3);
hist2.setCategory(0, " Apples", 4);
hist2.setCategory(1, "Bananas", 2);
hist2.setCategory(2, "Oranges", 5);

println( hist2 );
  

И его вывод

  Apples: ****
Bananas: **
Oranges: *****

 Apples: ****   
Bananas: ******
Oranges: ***********
  

Комментарии:

1. Здесь нет никаких вопросов, кроме подразумеваемого «Может ли кто-нибудь сделать мою домашнюю работу за меня?». Ответ на это — нет.

2. вопрос в том, как переопределить метод?? и это не домашнее задание, перестань быть таким высокомерным.

3. Тогда ответ будет в тексте. Бит, в котором говорится «Заполнить этот метод». Это переопределение в действии. Напишите код для выполнения любой необходимой вам функциональности.

Ответ №1:

Объявите другой счетчик вне цикла, увеличивающийся вместе с циклом, и используйте его с индексом как таковым:

 result =repeatSymbol(frequencies[index] counter);
counter =frequencies[index];