Здрасьте. Вот вижу такой код:

package com.javarush.test.level06.lesson11.home02;

import java.util.ArrayList;

/ Статические коты 1. В классе Cat добавь public статическую переменную cats (ArrayList<cat>). 2. Пусть при каждом создании кота (нового объекта Cat) в переменную cats добавляется этот новый кот. Создать 10 объектов Cat. 3. Метод printCats должен выводить всех котов на экран. Нужно использовать переменную cats. /

public class Cat { public Cat() { } //add your code here - добавь свой код тут

public static void main(String[] args) {
    //Create 10 Cat-s here - создай 10 котов тут
    printCats();
}

public static void printCats() {
    //add your step 3 code here - добавь свой код для пункта 3 тут
}

}

Обратите внимание на выделенную строчку. Скажите, а это вообще уместно ? Использовать аррайлист(список ОБЪЕКТОВ) внутри самого ОБЪЕКТА ? Насколько мне известно, класс Cat(или по-другому его ещё сущностным классом кличут) хранит, в основном, описание объекта и кое-какие методы работы с СОБОЙ или СЕБЕ ПОДОБНЫМИ объектами), но никак не с группой объектов!

задан 27 Окт '14, 20:21

Som's gravatar image

Som
115359
одобрено: 3%

закрыто 01 Мар '15, 05:54

Tevl's gravatar image

Tevl
5.1k122876

Вопрос был закрыт по следующей причине: "Problem is not reproducible or outdated" Tevl 01 Мар '15, 05:54


Просто много лет назад один урод поржал надо мной по этому поводу и я это на всю жизнь запомнил его слова надо было ему *

ссылка

опубликован 27 Окт '14, 20:22

Som's gravatar image

Som
115359
одобрено: 3%

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

ссылка

опубликован 27 Окт '14, 20:24

Som's gravatar image

Som
115359
одобрено: 3%

Вы вряд-ли на каждом шагу будете использовать подобное) Но данном случае это уместно, так как есть поставленная задача. Что бы там ни было вам известно о классе Cat, здесь есть статический метод который работает с группой объектов public static void printCats(), а некий массив он будет использовать в своих целях. И когда мне надо будет вывести информацию по созданных котах, очень удобно обратится именно к классу Cat (это весьма логично, как и то что информация/объекты о этих котах будут хранится в массиве).

ссылка

опубликован 27 Окт '14, 21:23

BappekM's gravatar image

BappekM
5.3k72846
одобрено: 40%

Я просто хочу понять, как поступать лучше. Я встречал разные варианты, и один из них состоял в том, что создавался класс во множественном числе, в котором содержался уже этот аррайлист( не помню, какой он там был - статик или ещё какой. Только этот аррайлист там и был, кстати). Я понимаю, что это, скорее, учебный пример, но всё же хотелось бы вынести этот вопрос на обсуждение. Код-то вот такой примерно: public class Cat { public static ArrayList<cat> cats = new ArrayList<cat>();

    public Cat() {
        cats.add(this);
    }        
    public static void main(String[] args) {

        for (int i = 0; i < 10; i++)
        {
            Cat cat = new Cat();
        }

        printCats();
    }

    public static void printCats() {
        for(Cat cat : cats) {
            System.out.println(cat);
        }
    }
}
ссылка

опубликован 27 Окт '14, 21:54

Som's gravatar image

Som
115359
одобрено: 3%

изменено 27 Окт '14, 21:58

Просто концепция хранения списка объектов внутри объекта в моей голове не укладывается, хоть я и могу её использовать..). Например, может возникнуть необходимость разделить код, работающий с группой объектов и работающий только с одним объектом(куча геттеров/сеттеров, например, если полей много) или я не прав ?

Ладно, в общем, понятно, что всё зависит от задачи = ). Раньше я представлял список внутри класса как Котов внутри кота , а теперь что и думать не знаю ))))).

(28 Окт '14, 12:27) Som

Как поступать лучше решаете вы, исходя из контекста задачи. Чем плох приведенный выше код? Зачем для использования метода printCats создавать отдельный класс, который будет работать с массивом?

(27 Окт '14, 22:45) BappekM

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×217
×55
×27
×12
×2

Задан: 27 Окт '14, 20:21

Просмотров: 1,020 раз

Отредактирован: 01 Мар '15, 05:54