Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Наследование и массивы. Вывод названия класса по значению в массиве / 7 сообщений из 7, страница 1 из 1
12.12.2012, 23:02:25
    #38076762
Zion007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наследование и массивы. Вывод названия класса по значению в массиве
Всем доброе время суток!
В общем, у меня имеется несколько классов: собаки (Dogs) -родительский и дочерние - породы(Такса, доберман, пудель и пр.). В дочерних классах имеются массивы, содержащие различные строковые значения (Цвет, размер, пр. и для кого (т.е. для детей, для охоты и пр.)). Надо следующее: Вводим определенную цифру (Скажем, 1) и в консоли выведутся названия всех классов, в массивах которых содержатся эти значения. Т.е. Нажимая один, нам выдадут все названия, у которых в массиве есть строка ForChild - собак для детей, нажимая 2 - для охраны и пр. Собственно не понимаю, как это сделать, т.е. как сделать так, что бы он просматривал массивы в дочерних классах и выводил их(классов) название.
Вот, что у меня пока что сделано:

Class Dogs - родительский
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
import java.io.InputStreamReader;
import java.io.BufferedReader;
 
 
public class Dogs {
    public static void main(String a[]) throws Exception{
        System.out.println("Выберите для чего вам нужна собака. Напишите цифру в зависимости от того, какая вам нужна собака.");
        System.out.println("1 - для детей, 2 - для охраны, 3 - для стариков, 4 - для устрашения.");
        
        BufferedReader d = new BufferedReader(new InputStreamReader(System.in));
        String aa = d.readLine();
        
                int ForWhomDog = Integer.parseInt(aa);
                String DogString;
                
                switch (ForWhomDog) {
                    case 1:  DogString = "Ваш выбор - собаки для детей:"  ; // здесь должен искать по значению ForChild в массивах в дочерних классах.
                             break;
                    case 2:  DogString = "Ваш выбор - собаки для охоты:"; // здесь должен искать по значению ForHunt в массивах в дочерних классах.
                             break;
                    case 3:  DogString = "Ваш выбор - собаки для стариков:";
                             break;
                    case 4:  DogString = "Ваш выбор - собаки для устрашения:";
                             break;
                    
                    default: DogString = "неверный выбор";
                             break;
                }
                System.out.println(DogString);
            }
            
     String color, wool, size, character, ForWhom;
         
      public Dogs(String color, String wool, String size, String character, String ForWhom )
        { this.color = color;  this.wool = wool; this.size = size; this.character = character; this.ForWhom = ForWhom; }
      
      
}



Class Doberman и poodle - дочерние

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public class poodle extends Dogs{
     String breed;
 
      public String getBreed() { return this.breed; }
      public void setBreed(String breed)
        { this.breed = breed; }
 
      public poodle( String breed, String color, String wool, String size, String character, String ForWhom )
      { 
        super(color,wool,size,character,ForWhom);
        this.breed = breed; 
      }
 
      public Void bark() { System.out.println("I'm poodle!");
        return bark; }
          
         public String getColor(){ System.out.println("I'm brown");
        return breed;}
          
         poodle spot = new poodle("curly","white","curly","medium","funniest","ForChild"); // Смотреть по этому массиву
          Void bark = spot.bark();  
          String color = spot.getColor(); "
      
          
}


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class Doberman extends Dogs{
    String breed;
 
      public String getBreed() { return this.breed; }
      public void setBreed(String breed)
        { this.breed = breed; }
 
      public Doberman( String breed, String color, String wool, String size, String character, String ForWhom )
      { 
        super(color,wool,size,character,ForWhom);
        this.breed = breed; 
      }
 
      public Void bark() { System.out.println("I'm Doberman!");
        return bark; }
          
         public String getColor(){ System.out.println("I'm brown");
        return breed;}
          
         Doberman spot = new Doberman("","black","smooth","big","angry","ForHunt"); // Смотреть по этому массиву
          Void bark = spot.bark();  
          String color = spot.getColor();  
}



Заранее спасибо!
...
Рейтинг: 0 / 0
12.12.2012, 23:09:54
    #38076771
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наследование и массивы. Вывод названия класса по значению в массиве
Zion007,
а де массив?
...
Рейтинг: 0 / 0
12.12.2012, 23:13:28
    #38076779
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наследование и массивы. Вывод названия класса по значению в массиве
Не вижу никаких массивов. Это такая постановка задачи, или модель с наследованием вы сами придумали?
Создаёте по одному экземпляру каждой породы, и помещаете в ArrayList. Перебором проверяете значение ForWhom для каждой породы. Постановка более чем странная. С одной стороны есть зачем-то наследование, с другой стороны задача и без него решается.
Почему breed в каждой породе своё поле, а остальные поля в Dogs?
Почему poodle и Dogs, а не, например, Poodles и Dog?
То что вы обозвали массивом не массив а аргументы.
Почему аргументы передаются извне, а не из конструктора конкретного наследника?
...
Рейтинг: 0 / 0
12.12.2012, 23:37:23
    #38076813
Zion007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наследование и массивы. Вывод названия класса по значению в массиве
Blazkowicz,
Задача звучит как "Построить структуру наследования и создать необходимые классы для реализации описания
развода породистых собак." Как сказал преподаватель, типа мы приходим в магазин и там выбираем для чего нужна собака и он нам выдает подходящие под категорию. Лично я так понял задачу и попытался сделать так.
Ну, breed (порода) для каждого свой. Хотя, пожалуй, можно было занести и в Dogs его.
Извне, что бы меньше писать. Мне показалось, так проще.
Насчет того, что аргументы назвал массивом. Я в Java чуть побольше чем ноль, и мне друг сказал, что это массив. Я ему поверил, хотя и закралось сомнение.

Насчет вашей подсказки, не совсем понял. Т.е. это будет массив массивов? Если мои агрументы передалать в массив. Так?
...
Рейтинг: 0 / 0
12.12.2012, 23:56:26
    #38076829
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наследование и массивы. Вывод названия класса по значению в массиве
Zion007,
о, так преподаватель предложил вам очень удобное задание. Просто представьте что вы продавец в этом магазине, что у вас есть разные собаки . Пофантазируйте, как вы будете выбирать собаку с характеристиками, которые просит покупатель. А потом из того что придумали, сформируйте объектную модель. И уже потом джава.
...
Рейтинг: 0 / 0
13.12.2012, 00:03:29
    #38076843
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наследование и массивы. Вывод названия класса по значению в массиве
...
Рейтинг: 0 / 0
13.12.2012, 00:28:18
    #38076867
Zion007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наследование и массивы. Вывод названия класса по значению в массиве
javapecker,
Ну, я примерно представляю саму суть, но не знаю, как написать программу. Скажем, я вижу выбор покупателя через switch c case. Т.е. как у меня в Dogs, перед покупателем выбор собак. Для этого он вводит 1 и ему выдаются только те классы, которые содержат атрибут - "для детей", а все остальные отсеивает. Собственно, я и не знаю, как этот момент сделать.

Blazkowicz,
Спасибо. Заодно и про наследование прочту еще раз.
Но вряд ли я пойму, как мне сделать то, что я описал тут.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Наследование и массивы. Вывод названия класса по значению в массиве / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]