![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| ElKa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.2.2006 Репутация: 2 Всего: 4 |
есть выражение, состоящее из подвыражений
подвыражения - это объекты разных классов каждое подвыражение тоже состоит из подвыражений в общем они все вложены надо вывести выражение на печать, при этом преобразовывая названия переменных x в x' переменная -это один из объектов для этого надо этот же метод вызвать для каждого объекта и в нем тоже преобразовать переменные для этого мне надо узнать его класс как это лучше реализовать? |
|||
|
||||
| AxNe0 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 24.4.2006 Где: St. Petersburg Репутация: 4 Всего: 5 |
не совсем понятно, что именно требуется.... можно пример?
|
|||
|
||||
| ElKa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.2.2006 Репутация: 2 Всего: 4 |
object = object1 object2 ... objectN
object1 = object11 object12 ... object1M . . . objectIJ это может быть какое нибудь арифметическое выражение или логическое или с множествами например object = (x+y) - ((x+z) - 2*y) object1 = (x+y) object2 = "-" object3 = ((x+z) - 2*y) и т.д. теперь надо вызвать object.toEffString()
что делать? |
|||
|
||||
| Ortega |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 5.11.2005 Где: Харьков, Украина Репутация: 4 Всего: 6 |
И снова, интерфейсы тебе в помощь!
Скажи, пожалуйста, вот эти все объекты - это твоих рук дело и ли стороння библиотека? --------------------
Всему свое время (с) ЧайфНе парься, будь счастлив (с) Пеппи Длинный Чулок |
|||
|
||||
| AxNe0 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 24.4.2006 Где: St. Petersburg Репутация: 4 Всего: 5 |
если надо парсить арифметические выражения, то есть несколько готовых алгоритмов, например тут.
что должен делать метод object.toEffString() ? и должен быть класс у этих object'ов ? |
|||
|
||||
| ElKa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.2.2006 Репутация: 2 Всего: 4 |
моих.. я написала класс для каждого выражения Добавлено через 2 минуты и 32 секунды AxNe0, нет там не только арифметические.. там целый язык спецификаций надо парсить метод toEffString() выдает модифицированный стринг этого выражения классы у объектов есть.. для каждого выражения свой класс из них синтаксическое дерево строится |
|||
|
||||
| AxNe0 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 24.4.2006 Где: St. Petersburg Репутация: 4 Всего: 5 |
кажется, становится ясно
т.е. у тебя есть несколько классов, характеризующих разные выражения. В каждом классе есть метод toEffString(). Чтобы можно было вызвать метод, не зная точного класса, как уже сказал товарищ (или господин, как ему будет угоднее ;) ) Ortega, используй один из трех важнейших механизмов ООП - полиморфизм. Т.е. Создай либо интерфейс, либо абстрактный класс (если реализация этого метода везде одинаковая) и реализуй/наследуй его в своих классах. |
|||
|
||||
| AxNe0 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 24.4.2006 Где: St. Petersburg Репутация: 4 Всего: 5 |
Вот пример использования интерфейсов для подобной задачи:
тогда надо будет хранить не массив/коллекцию Object[] objects, а InterfaceClazz[] objects и твой код выше будет работать без всяких изменений Добавлено через 4 минуты и 13 секунд а вообще, еще лучше создать абстрактный класс, т.к. видимо, метод везде один и тот же:
вот, как-то так... |
||||
|
|||||
| ElKa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.2.2006 Репутация: 2 Всего: 4 |
AxNe0,
спасибо.. уже пишу.. но абстрактный класс не нужен, потому что метод везде разный |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |