295 / 468 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
1

Как реализовать поиск класса по его имени?

26.04.2018, 13:46. Показов 1193. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть базовый клас, описывающий химические елементы:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package cls;
 
public class Element {
    private String she;//символ химического елемента
    private String name;//название химического елемента
    private int aro;// целочисленая атомная масса химического елемента
    private int p;// количество протонов (номер в таблице Менделеева) химического елемента
    private double ar;//атомная масса химического елемента
    
    //методы set
    public void setSymbilChemElement(String s){
        she = s;
    }
    
    public void setNameChemElement(String s){
        name = s;
    }
    
    public void setAtomMas(double d){
        ar = d;
        aro = okr(d);
    }
    
    public void setNamber(int i){
        p = i;
    }
    
    //методи get
    public String getSymbilChemElement(){
        return she;
    }
    
    public String getNameChemElement(){
        return name;
    }
    
    public int getAtomMass(){
        return aro;
    }
    
    public double getTrueAtomMass(){
        return ar;
    }
    
    public int getNamber(){
        return p;
    }
    
    public int getProtones(){
        return p;
    }
    
    public int getElectrones(){
        return p;
    }
    
    public int getNeytrones(){
        return aro - p;
    }
    
    //Другие методы
    private int okr(double d) {
        int i = (int)d;
        int a = (int)((d - i) * 10);
        return a < 5 ? i : i + 1;
    }
}
есть 118 класов наследников, названых символами химических елементов. Например:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
package cls.el;
 
import cls.Element;
 
public class H extends Element{
    
    public H(){
        this.setSymbilChemElement("H");
        this.setNameChemElement("Гідроген");
        this.setNamber(1);
        this.setAtomMas(1.0079);
    }
}
и есть клас который описыват вещество Rech.
внутри класа находятся две колекции:
Java
1
2
    private ArrayList<Element> el = new ArrayList();
    private ArrayList<Integer> ind = new ArrayList();
Вопрос в том, как реализовать конструктор класа:
Java
1
public Rech(String formul){}
так, что бы при вводе формулы (СН3ОН) искались соответственные елементы:
С - клас С (Углерод)
Н - Клас Н (Водород)
О - Клас О (Кислород),
создавал их екземпляры и помещал в ArrayList<Element> el.
если после елемента стоит число, это число добавляем в ArrayList<Integer> ind, а если числа нет в ArrayList<Integer> ind вносим 1. если елемент уже существует в списке, увеличиваем соответсвующее количество в ArrayList<Integer> ind.
таким образом, конструктор должен собрать(Согласно примеру):
el : (0) - С; (1) - Н ; (2) - О
ind : (0) - 1; (1) - 4; (2) - 1

ПС. Пробовал реализовать через посимвольное чтение строки - получился полный бред, запутался аки ёжик в тумане, теперь сижу чеше репу шоДелать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2018, 13:46
Ответы с готовыми решениями:

Как реализовать сравнение по имени файла,а не по его содержимому?
Здравствуйте!Есть код,в котором реализуется поиск объекта в заданной области по маске.В роли маски...

Что означает ^ в имени класса и как его можно использовать?
Вопрос к знатокам С++. При работе в Visual Studio, имел дело с классом String пространства имен...

Поиск класса по имени
Всем доброго времени суток. Помогите, пожалуйста, решить одну проблему. У меня есть класс...

Вызов класса по его имени
Есть такая задача, из вне приходит строка которая равна имени класса, нужно как-то заставить...

15
Эксперт Java
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.04.2018, 14:01 2
Цитата Сообщение от InvalidCode Посмотреть сообщение
есть 118 класов наследников
чото сомнительный подход
0
2442 / 1898 / 475
Регистрация: 17.02.2014
Сообщений: 9,154
26.04.2018, 14:32 3
Цитата Сообщение от InvalidCode Посмотреть сообщение
Например
в чем ты получаешь выигрыш в таком примере? ты Н ничем не уточняешь...
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
16257 / 9013 / 2605
Регистрация: 21.10.2017
Сообщений: 20,716
26.04.2018, 15:35 4
InvalidCode, Ну, если тебя не смущают 118 классов, можно сделать свич со 118 кейсами
0
2442 / 1898 / 475
Регистрация: 17.02.2014
Сообщений: 9,154
26.04.2018, 18:37 5
iSmokeJC, а он не вручную будет свичи писать!
0
295 / 468 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
27.04.2018, 09:32  [ТС] 6
Цитата Сообщение от Aviz__ Посмотреть сообщение
в чем ты получаешь выигрыш в таком примере? ты Н ничем не уточняешь...
Уточнять и ничвего не нужно. все поля уже есть в базовом класе Element, но в эти поля нужно задать значения для конкретного елемента (а их сейчас известно 118), а в скоре будет еще больше. В этом и выгода что бы добавить в систему новый елемент, или откоректировать уже существующий елемент, не надо рыться по всех закоулках, а только создать/откоректировать клас-конструктор. здесь ввнесены лишь базовые свойства елементов, со временем я добавлю туда и другие:
валентность, радиус атома, валентный радиус, ступени окисления, изотопы время их жизни... соответсвенно проще изменить один базовый клас, дописав в нем несколько методов, и добавив еще одну строчку в клас-конструктор.


Добавлено через 3 минуты
к тому же, изменение базовых свойст елементов (таже маса) не опишешь никакими математичискими функциями и циклами. их нужно вбивать только вручную. если не веришь, посмотри в таблицу Менделева.
0
2442 / 1898 / 475
Регистрация: 17.02.2014
Сообщений: 9,154
27.04.2018, 09:33 7
InvalidCode, дружище, жаль, что ты не понял главной фишки наследования((.
0
295 / 468 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
27.04.2018, 09:39  [ТС] 8
Цитата Сообщение от Aviz__ Посмотреть сообщение
жаль, что ты не понял главной фишки наследования
возможно и не понял. я ведь не програмист, а химик, а жабу начал изучать наспор. поспорил как-то со знакомим програмистом, что за пол года освою хотя бы один язык програмирования на сносный уровень. освоил, начал писать програмки - понравилось, с тех пор увлекаюсь быдлокодингом . а учить через гуглю было сложно, там иногда такую бредятину вылаживаю, шо хочиться пристрелить тех "учителей", шо сей бред вылажувают.
0
2442 / 1898 / 475
Регистрация: 17.02.2014
Сообщений: 9,154
27.04.2018, 09:45 9
Цитата Сообщение от InvalidCode Посмотреть сообщение
искались соответственные елементы
Вот, скажем, ты нашел, 2 водорода и один кислород. Дальше то что? Как ты поймешь, что это вода?

Добавлено через 3 минуты
Цитата Сообщение от InvalidCode Посмотреть сообщение
бредятину вылаживаю
на то и волки... Лан, на коньяк то хоть спорил? И кто определял сносность твоего уровня?
0
295 / 468 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
27.04.2018, 09:50  [ТС] 10
Цитата Сообщение от Aviz__ Посмотреть сообщение
Вот, скажем, ты нашел, 2 водорода и один кислород. Дальше то что? Как ты поймешь, что это вода?
а есть еще варианти? в неорганике с этим проще, там формулы однозначные, это в органике имеет значение порядок расположения. хотя, для данного класа и это не важно. Он сбивает все елементы в общую формулу, и далнейшие исчисления проводит исходи из нее, например:
С2Н5 ОС3Н7 = С5Н12 О - со своторой формулой и работаем, а на вход можно подать любой из вариантов формулы. вот именно эту реализацию спивки елементов по групам, и нужно реализовать
0
2442 / 1898 / 475
Регистрация: 17.02.2014
Сообщений: 9,154
27.04.2018, 09:56 11
Цитата Сообщение от InvalidCode Посмотреть сообщение
С5Н12 О - со своторой формулой
как работаешь?
0
295 / 468 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
27.04.2018, 10:04  [ТС] 12
Цитата Сообщение от Aviz__ Посмотреть сообщение
на коньяк то хоть спорил? И кто определял сносность твоего уровня?
Спорили на ящик водки (потом его вместе и выжрали), а в качестве проверки нежно было написать програму, которая бы создавала НТML листинг с подсветкой синтаксиси (вроде того, что здесь на форуме) для изучаемого мной языка. условия просты - прога работает - ящик берет он, не работает беру я. вот и все.

Добавлено через 5 минут
Цитата Сообщение от Aviz__ Посмотреть сообщение
как работаешь?
ето еще в планах, но должно быть:
- исчисление масы молекулы
- исчисление возможных вариантов структуры (после прикрутки валентности)
- ислисление длин и енергий связи (После прикрутки других характеристик атома (радиус, валентный радиус, енергия ионизации 1, 2... 7 уровня))
...
0
2442 / 1898 / 475
Регистрация: 17.02.2014
Сообщений: 9,154
27.04.2018, 10:14 13
InvalidCode, замах большой))
0
295 / 468 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
27.04.2018, 10:21  [ТС] 14
Цитата Сообщение от Aviz__ Посмотреть сообщение
замах большой
Не то слово, планы шо у Наполена, главное не повторить его судьбу
0
2442 / 1898 / 475
Регистрация: 17.02.2014
Сообщений: 9,154
27.04.2018, 10:27 15
InvalidCode, думаю, что все это уже давно реализовано в ПО для спектрографов...
0
Эксперт Java
4442 / 2676 / 481
Регистрация: 28.04.2012
Сообщений: 8,529
27.04.2018, 14:12 16
Цитата Сообщение от InvalidCode Посмотреть сообщение
соответсвенно проще изменить один базовый клас, дописав в нем несколько методов, и добавив еще одну строчку в клас-конструктор.
А можно не забивать гвозди микроскопом, а использовать только один класс, тогда всё то же самое и "искать классы по имени" не придётся.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2018, 14:12
Помогаю со студенческими работами здесь

Как реализовать поиск минимального и максимального элемента в двух объектах класса сразу??
Т.е. один минимальный на два объекта, объекты - одномерные массивы

Автоматический поиск сборок по имени класса
Прочитал вот эту и там сказано автоматический поиск сборок по имени класса и приведён пример....

Как реализовать поиск в текстовом файле слова, и вывод его перевода?
Проблема в том, что не знаю, как реализовать поиск в текстовом файле слова и вывод его перевода....

Получение значения атрибута класса по его имени
Здравствуйте. Допустим у меня есть объект: Object MyObj; И допустим я точно знаю что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru