Понимание объектно-ориентированного присваивания при работе с методами

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

Укажите, а затем реализуйте метод (некоторого класса X), которому передается NumberList и который возвращает массив, содержащий значения из NumberList.

(NumberList не изменяется вашим методом. Ваш метод НЕ является членом NumberList. Вы не сможете протестировать свой метод, запустив его, поскольку я не предоставляю вам класс NumberList.)

Если вам это нужно, вот публичные методы. Единственный метод, который я использую:

public int size() //returns number of items in this NumberList

Итак, как я понимаю, все, что я делаю, это беру NumberList и создаю массив значений. Достаточно просто. Это обрабатывает работу, о которой спрашивают?

public double [] arrayNL(NumberList list){
    //pre: NL is not empty
    //post: array with NL values is returned
    double [] arrayNL = new double [list.size()];
    for(int x=0;x<list.size();x++){
        arrayNL[x]=list.nextDouble;
    }
    return arrayNL;
}

Просто не уверен насчет list.size() и list.nextDouble... и это если я правильно понял проблему. На самом деле я не сделал достаточно объектного кодирования, чтобы быть знакомым / уверенным в этом, и я сильно полагаюсь на тестирование, поэтому я все ставлю под сомнение. Любая помощь была бы великолепна, у меня просто проблемы с выполнением инструкций этого профессора по какой-то причине.

3 ответа

Решение

Ваш код в основном весь там, хотя следующий класс не определен в классе NumberList, так что это может вызвать проблемы. Вот что делает каждая часть:

public double [] arrayNL(NumberList list){

    // Initialize an array of doubles containing the same # of elements 
    // as the NumberList
    double [] arrayNL = new double [list.size()];

    // Iterate through the NumberList
    for(int x=0;x<list.size();x+) { 

        // Copy the double from the NumberList object to the double array 
        // at the current index.  Note "nextDouble" is undefined, but
        // NumberList does have a method you can use instead.
        arrayNL[x]=list.nextDouble; 
    } 

    // After iterating through the whole list, return the double array
    return arrayNL; 
}

Извините за любые вопросы форматирования. Напечатал это на моем телефоне

Я считаю, что одна из целей этого упражнения - научить читать API (интерфейс прикладных программ) и реализовывать его метод, просто читая документацию, не читая фактический код, стоящий за ним.

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

Что касается вашего кода, я не уверен, где вы видели nextDouble метод, как я не вижу в документации. Если это не было дано вам, я предлагаю вам придерживаться документации NumberList() и другие основные функции кодирования.

Вместо того, чтобы использовать nextDouble ты можешь использовать: public double get(int index) Так что ваши for цикл будет выглядеть примерно так:

 for(int i = 0; i < list.size() ;i++){
    arrayNL[i]= list.get(i);
}

Остальная часть вашего кода в основном в порядке.

Не уверен, что понимаю вопрос. Является ли целью написать код, который копирует список в массив, или реализовать методы класса NumberList на основе предварительных и постусловий?

Другие вопросы по тегам