 
			
				06.04.2021, 18:08
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.04.2021 
					
					
					
						Сообщений: 11
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Зависимость классов между собой
			 
			
		
		
		
		Ребят, нужно сделать зависимость классов между собой .... как назвать это правильно я хз, объясню на пальцах: 
class Film {
constructor(name, mainArtist, song){
}
};
class MainArtist{
constructor(name, film, song){
}
};
class Song{
constructor(name, mainArtist, film){
}
};
Не суть в создании классов, по быстрому накидал, что в голову пришло. Вот у меня есть класс фильм, класс главный актёр и класс песня. 
Допустим я их экспортировал в другой файл и:
 
let Titanik = new Film("Titanik", Dikaprio, MyHeartWillGoOn);
let Dikaprio = new MainArtist("Dikaprio", Titanik, MyHeartWillGoOn);
let MyHeartWillGoOn = new Song("MyHeartWillGoOn ", Dikaprio, Titanik);
Как вы уже догадались , мне необходимо что бы у этих классов была зависимость. Что бы в Титаник, я добавил класс Дикаприо и МайХертВиллГоОн, и мой класс титаник, автомотически добавился в конструктор в this.film  к остальным двум классам .... ну и так в общем то со всеми свойствами.
 Заранее скажу, что делать вот так не надо:
et Titanik = new Film("Titanik");
let Dikaprio = new MainArtist("Dikaprio");
let MyHeartWillGoOn = new Song("MyHeartWillGoOn ");
Titanik.mainArtist = Dikaprio;
Titanik.song = MyHeartWillGoOn;
Dikaprio.film = Titanik; 
// и тд в этом духе...
Вот как вижу это я , но не знаю пока как реализовать ( зеленый совсем) :
let Titanik = new Film("Titanik");
let Dikaprio = new MainArtist("Dikaprio", Titanik);
let MyHeartWillGoOn = new Song("MyHeartWillGoOn ", Dikaprio, Titanik);
// и получается, что в Titanik и Dikaprio недостающие свойства сгенерируются автоматом
Классы представлены как разные модуль - т.е. в разных файлах ...
 ЗАРАНЕЕ ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ ! 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2021, 18:28
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.10.2016 
					
					
					
						Сообщений: 1,013
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Штука, которую ты замыслил, называется DI (внедрение зависимостей). 
В данном конкретном случае, два объекта из трех будут доработаны напильником после конструирования. 
Подумай ещё раз, нужны ли тебе циклические ссылки. Обычно они не нужны. Здесь, например, ссылки между артистом и песней выглядят бредово. Песня сама по себе, артист сам по себе. Фильм на них ссылается весьма органично - у него конкретная песня и конкретный артист (хотя артистов может быть несколько на главной роли, но это ладно). В то же время песня может быть в более чем одном фильме, и артист со своей главной ролью тоже - соответственно у них логичнее сделать не ссылку на фильм, а массив фильмов. 
 
Но это так, лирика. А в целом, DI через конструктор - никаких циклических ссылок. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2021, 18:35
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.04.2021 
					
					
					
						Сообщений: 11
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Alexandroppolus
			 
		
	 | 
 
	
		Штука, которую ты замыслил, называется DI (внедрение зависимостей). 
В данном конкретном случае, два объекта из трех будут доработаны напильником после конструирования. 
Подумай ещё раз, нужны ли тебе циклические ссылки. Обычно они не нужны. Здесь, например, ссылки между артистом и песней выглядят бредово. Песня сама по себе, артист сам по себе. Фильм на них ссылается весьма органично - у него конкретная песня и конкретный артист (хотя артистов может быть несколько на главной роли, но это ладно). В то же время песня может быть в более чем одном фильме, и артист со своей главной ролью тоже - соответственно у них логичнее сделать не ссылку на фильм, а массив фильмов. 
 
Но это так, лирика. А в целом, DI через конструктор - никаких циклических ссылок.
	 | 
 
	
 
 Спасибо за инфо... 
Я же говорю, на логику конкретных(указанных мной) классов не особо нужно обращать внимание , в реале совсем другие классы, просто всё гораздо сложнее и объяснение идеи делу не поможет) Мне смысл надо, что б был такой, какой я описал... Спасибо еще раз инфу, сейчас буду разбираться что за DI и с чем его употреблять)  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2021, 19:06
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 worldsering, если ты хочешь хранить в неких ключах объекта другие объекты - тебе придется делать их клоны. 
Иначе ты будешь хранить ссылки на созданный экземпляр объекта... 
 
Если в ключе нужно хранить несколько объектов - это уже будет массив таких объектов. 
Будь то список актеров фильма... Или список фильмов у актера... 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2021, 19:09
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от worldsering
			
		
	 | 
 
	
		Заранее скажу, что делать вот так не надо 
... 
Вот как вижу это я , но не знаю пока как реализовать
	 | 
 
	
 
 Да как ни пиши - суть будет одна. В какой-то ключ будет записываться клон созданного объекта. Или тот ключ будет массивом и клон объекта будет добавляться в тот массив...  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2021, 19:17
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от worldsering
			
		
	 | 
 
	| 
		и получается, что в Titanik и Dikaprio недостающие свойства сгенерируются автоматом
	 | 
 
	
 
 Какие именно свойства?    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2021, 22:18
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.04.2021 
					
					
					
						Сообщений: 11
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от ksa
			 
		
	 | 
 
	
		Какие именно свойства?  
	 | 
 
	
 
 Ну мы допустим у Артиста указали что фильм - Titanik, а как сделать так, что бы после этого действия, наш Titanik "понял" что появился у Дикаприо и что в графу с артистом нужно, что бы пророс автоматически Дикаприо ...  
ну смысл такой, мол зачем всем классам всё прописовать в руке, это куча куча куча когда, когда я хочу, что бы свойства сами прорастали, я на картинке описал 
 https://files.fm/thumb_show.php?i=tt7ryjtd7 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось worldsering, 06.04.2021 в 22:32.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.04.2021, 22:54
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от worldsering
			
		
	 | 
 
	| 
		я хочу, что бы свойства сами прорастали
	 | 
 
	
 
 Тут одного хотения мало...    
В СУБД для связи "фильмов" и "артистов" делают еще одну таблицу, куда прописывают ссылки на артиста и фильм. 
Потом через ту таблицу всю информацию можно получить в обе стороны.
 
А ты задумал нечто не сусветное...    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.04.2021, 23:04
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.04.2021 
					
					
					
						Сообщений: 11
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от ksa
			 
		
	 | 
 
	
		Тут одного хотения мало...    
 
В СУБД для связи "фильмов" и "артистов" делают еще одну таблицу, куда прописывают ссылки на артиста и фильм. 
Потом через ту таблицу всю информацию можно получить в обе стороны. 
 
А ты задумал нечто не сусветное...  
	 | 
 
	
 
 Какую еще таблицу, не совсем понял ?) 
Ну тогда как сделать это лучше всего ? Можно поподробнее ? Я хочу что бы мои классы содержали связные с ними классы  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.04.2021, 23:08
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от worldsering
			
		
	 | 
 
	| 
		Какую еще таблицу, не совсем понял ?)
	 | 
 
	
 
 Тут уже нужно книжку тебе почитать про структурирование данных...
 
	
 
	| 
		
			Сообщение от worldsering
			
		
	 | 
 
	| 
		Я хочу что бы мои классы содержали связные с ними классы
	 | 
 
	
 
 Х/з для чего тебе такое нужно...    
Но для таких "связей" вполне достаточно прописать ссылку на класс1 в любой ключ класса2 и наоборот.
 
Тогда через эти ключи ты получишь "кругооборот" классов относительно друг друга...    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |