Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как организовать структуру классов? новичек 
V
    Опции темы
DenWPF
Дата 19.11.2010, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



Я запутался в простом построении классов.

У меня есть объекты МАШИН.
у машины есть Марка и есть модель, у модели есть ключ (ид) и название.

к примеру 

mazda -> id =  a6, title  = А шестая.


класс Marka - имеет одно поле с типом ключ \ значение ( я использую HashMap).

а где хранить все марки? я реально просто сейчас очень туплю, просто много языком изучаю( не по своей воле)
PM MAIL   Вверх
nc30
Дата 19.11.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Интересующийся :)
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 24.6.2010
Где: Санкт-Петербург

Репутация: 5
Всего: 8



Цитата

имеет одно поле с типом ключ \ значение ( я использую HashMap)

Не думаю, что HashMap нужен для одного поля. Достаточно пары полей типа String.
Цитата

а где хранить все марки?

В коллекции  smile 

Как вариант:
Код

package carstest;

import java.util.ArrayList;
import java.util.Collection;

public class Main {

    public static void main(String[] args) {
        Collection<Car> cars = new ArrayList<Car>();
        cars.add(new Car("Mazda", "6", "шестая"));
        cars.add(new Car("Mazda", "3", "третья"));
        cars.add(new Car("Заз", "968", "девятьсот шестьдесят восьмой"));
        for (Car c: cars) {
            System.out.println(c);
        }
    }
}

class Car {
    private String trademark;
    private CarModel model;

    public Car() {
    }

    public Car(String tm, String modelId, String modelTitle) {
        trademark = tm;
        model = new CarModel(modelId, modelTitle);
    }

    public CarModel getModel() {
        return model;
    }

    public String getTrademark() {
        return trademark;
    }

    @Override
    public String toString() {
        return "Car: trademark=" + trademark + ", " + model;
    }
}

class CarModel {
    private String id;
    private String title;

    public CarModel() {
    }

    public CarModel(String id, String title) {
        this.id = id;
        this.title = title;
    }

    public String getId() {
        return id;
    }

    public String getTitle() {
        return title;
    }

    @Override
    public String toString() {
        return "model: id=" + id + ", title=" + title;
    }
}


Это сообщение отредактировал(а) nc30 - 19.11.2010, 14:53
PM MAIL   Вверх
DenWPF
Дата 19.11.2010, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



Мне не нравиться такой пример

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

да обращаться к ним не удобно будет.

Это сообщение отредактировал(а) DenWPF - 19.11.2010, 11:20
PM MAIL   Вверх
nc30
Дата 19.11.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Интересующийся :)
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 24.6.2010
Где: Санкт-Петербург

Репутация: 5
Всего: 8



Цитата

У меня есть объекты МАШИН.
у машины есть Марка и есть модель, у модели есть ключ (ид) и название.

Одна машина - один объект. Я так понял из вашей постановки задачи.

Цитата

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

Вы попробуйте эту абстракцию перенести в реальность. Ваш объект будет описывать не машину, а, скорее, каталог моделей "Mazda"  smile 
PM MAIL   Вверх
DenWPF
Дата 19.11.2010, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



так совсем запутался.

вот накидал что нужно..


Код

for(int i=0;i<5;i++)
{
    string name = GetNameMarka(i);
    какойято_коллекция1 model = getModel(name);
    какойято_коллекция2.add(name, model);
}

какойято_коллекция1 getModel(String name)
{
    создаем какойто_контейнер;
    for(int i=0;i<100;i++)
    {
        string id = GetIDModel(i);
        string name = GetNameModel(i);
        добавляем в какойто_контейнер;
    }
    возращаем эту_коллекцию.
}


аахах наверное такого вы ещё не видели =)))


спасибо решил проблему так:

HashMap<String,HashMap> hashlist = new HashMap<String,HashMap>();

Это привязка к Марка\модели.

HashMap - модели где ключ id значение - название


Это сообщение отредактировал(а) DenWPF - 19.11.2010, 12:23
PM MAIL   Вверх
nc30
Дата 19.11.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Интересующийся :)
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 24.6.2010
Где: Санкт-Петербург

Репутация: 5
Всего: 8



Вот я попытался общую структуру наваять с учетом первоначальной постановки задачи...
Код

public class Main {

    public static void main(String[] args) {
        Collection<Marka> coll = new ArrayList<Marka>();

        Marka mazda = new Marka("Mazda");
        mazda.putModel("6", "шестая");
        mazda.putModel("3", "третья");
        coll.add(mazda);

        Marka audi = new Marka("Audi");
        audi.putModel("a6", "А шестая");
        audi.putModel("a3", "А третья");
        coll.add(audi);
        //...
    }
}

class Marka {
    private String trademark;
    private HashMap<String, String> models = new HashMap<String, String>();

    public Marka(String tm) {
        this.trademark = tm;
    }

    public void putModel(String id, String title) {
        models.put(id, title);
    }

    //...
}


Цитата

аахах наверное такого вы ещё не видели =))) 

 smile 
Непонятно откуда вызываются методы:
Код

    string name = GetNameMarka(i);
        string id = GetIDModel(i);
        string name = GetNameModel(i);



UPD:
Пока я дописывал пост, вы, как я понял, сами со всем разобрались, что не может не радовать  smile 

Это сообщение отредактировал(а) nc30 - 19.11.2010, 16:15
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.