powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как создать множество подклассов с внутренними параметрами ?
6 сообщений из 6, страница 1 из 1
Как создать множество подклассов с внутренними параметрами ?
    #38775746
Gramdler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу простенький игровую механику, например есть класс Игрока, игрок может устраиватся там на Предприятия, а на Предприятиях. есть разные Должности (разные на разных) у них есть Инструменты (со своими параметрами).
Разбил на 3 класса, Игрок, Предприятия (Должность внутренная) , Инструменты.

На процедурном Delphi, я спокойненько это все смогу реализовать через булеан типы, и элементы формы, правда это будет громоздко, очень громоздко.

а вот в Java, с ее чистым ООП я немного моск сломал, даже Flash с его AS 3.0, мелочь :)

Как создать множество подклассов с внутренними параметрами ? Work.Roles.Param ? (Work.Position.Param) ?


Код: 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.
import java.util.ArrayList;
public class Work {
	
	
	public String Name;
	 ArrayList<Object> Roles = new ArrayList<>();
	public int index;
		
	
	public class Position{
	public String Name;
	public String Id_instrumenta;

	public void getName(String a){
				this.Name = a;
			}
			public void getInst(String a){
				this.Id_instrumenta = a;
			}
		
	}
		
		public Work(int a){
		for (int i=0; i < a; i++){
			Position i = new Position; //подчерк кода, перенос на тест.класс - смысла нет там также подчерк кода.
			Roles.add(i);
                    }

}



Ну или хотябы пните в нужном направлении... (идея - оставить к конструкторе индекс, а в тест.классе уже реализовать добавление в список должностей - не катит - там код подчеркивает, я в недоумении :) ).
...
Рейтинг: 0 / 0
Как создать множество подклассов с внутренними параметрами ?
    #38775749
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gramdler,

Вам бы хоть книжки по Java для начала почитать, иначе весь форум за вас будет писать программу.
...
Рейтинг: 0 / 0
Как создать множество подклассов с внутренними параметрами ?
    #38775752
Gramdler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
smackmychi,

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

чтоб можно было обратится так work.position. - вот тут не понятно ...

Если сделать примерно так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public Object Position;

public class Position{
	public String Name;
	public String Id_instrumenta;

	                public void getName(String a){
				this.Name = a;
			}
			public void getInst(String a){
				this.Id_instrumenta = a;
			}
		
}



убрать, конструктор; и попробовать создать экземпляр внутреннего класса = в тест.классе = то выдает ошибку IOExeption, правда я не догоняю, куда исключения впихнуть...
Или этот подход не правильный?

Просто как я понимаю ООП - имея экземпляр класса Work, я создаю в нем н-ое кол. экземляров класса Position or Role, в конечном итоге чтоб получить доступ к онным я должен набрать work.position.param (or work.role.(param or method)).
Звучит все четко и понятно, а на деле подводный камень на камне...

ЗЫ Книжки не решают подобные задачи - там простое описание классов, подклассов идет, с примерами как их создавать и использовать, но увы не более.
...
Рейтинг: 0 / 0
Как создать множество подклассов с внутренними параметрами ?
    #38775821
Gramdler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вот подумал очередной раз :) Просто если java то что я выше написал не позволяет ... (о чем я могу только предполагать).
Имеет ли смысл идти в обход?

Код: java
1.
2.
3.
4.
5.
6.
        public class Position{
	public String Name;
	public String Id_instrumenta;

        public Map<String, String> work= new HashMap<String, String>();
        work.put("a","name_work"); 



Что еще можно еще лучше опустить



Код: java
1.
2.
3.
4.
5.
6.
        public static void main (String[] args){

        public Map<String, String> work= new HashMap<String, String>();
        work.put("Position","name_work"); 
        public Map<String, String> work= new HashMap<String, String>();
        work.put("Position","name_tool");



и работать уже с хеш таблицами в обход создания класса, или данная идея имеет в себе еще больше подводных камней?
...
Рейтинг: 0 / 0
Как создать множество подклассов с внутренними параметрами ?
    #38775848
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gramdler,

- Это не та ситуация когда есть смысл создавать классы внутри классов. Создавайте обычные классы верхнего уровня для каждой сущности модели предметной области.
- Изучайте свойства в Java и обратите внимание на то что свойства являются виртуальными, а поля нет. Поэтому стоит четко осозновать где вы хотите обращаться через поле, а где через свойство. Для новичка рекомендуется ВСЕГДА использовать только свойства. И только когда придет понимание терминов Coupling и Cohesion, можете переходить на использование полей.
- Избегайте цепочки вызовов вида
Код: java
1.
2.
3.
4.
 
      work.position.param; 
      //или
      work.getPosition().getParam();


За исключением специальных паттернов.
Во-первых это вызывает банально проблему при NPE, когда по исключени. нельзя опраделить что именно в этой цепи был null.
Во-вторых это повод задуматься об инкапсуляции и всех тех же Coupling\Cohesion. Почем ваш класс разбираться во внутреннем устройстве структуры Work. Почему бы не использовать work.getPositionParams(), который скроет структуру от остальных классов?

- Ознакомьтесь с обще распространенными Java Coding Convention. Иначе ваш код читать нет никакого желания.
- Всегда лучше использовать явные классы-сущности Work\Position\Role чем непонятные коллекции строк, понять назначение которых решительно невозможно.
...
Рейтинг: 0 / 0
Как создать множество подклассов с внутренними параметрами ?
    #38776698
Gramdler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за пинок в нужном направлении, ознакомимся.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как создать множество подклассов с внутренними параметрами ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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