// ГруппаОбъектов похоже на папку только вместо имен номера public void ПереносПАвДругоеПростр(ГруппаОбъектов дрПространство, Псевдоактивности ПА) { var аПАновое = дрПространство.Добавить(ПА); // здесь Адрес уже полный по нему можно найти адрес в Куче СобствАдрес Па меняется foreach (var связь in ПА.СписокСвязей) { var старыйАдрес = связь.СобственныйАдресПримитива; var новыйАдресСвязь = дрПространство.Добавить(связь); связь.АдресСобПА = аПАновое; // если связь содержит Удаленную Связь ( в случае только Входящей связи, удаленные неизвестны) Удаленные ПА потеряют эту ПА if (связь.Направление == ТиНапрвления.Входящая) { // можно оставить переадресацию, вместо СпецСвязи, по старому адресу будет новый адрес или Прокси. var прокси = new Переадресация() { НовыйАдрес = новыйАдресСвязь }; ((ГруппаОбъектов)старыйАдрес.АдресРегистратора.АдресВКучеПамяти()).Заменить(старыйАдрес, прокси); } else { if (связь.Направление != ТиНапрвления.Исходящая) { связь.УдаленнаяСвязь.АдресУдаленойСвязи = новыйАдресСвязь; // сообщение удаленой связи о смене своего адреса // адрес связи в Куче не меняется } // в противном случае УдаленнаяСвяь ничего незнает об этой связи } } }
public static void Псевдоактивности() { var Куча = new ГруппаСКучей(); var русбуква = new Псевдоактивности() { Имя = "буква руского алфавита" }; var русбукваА = new Псевдоактивности() { Имя = "а" }; var русбукваБ = new Псевдоактивности() { Имя = "б" }; русбуква.ДобавитьЧленПеречисления(русбукваА); русбуква.ДобавитьЧленПеречисления(русбукваБ); // код это источник рсапознования из строки в набор букв // и одновременно обратного преобразования var КодрусбукваА = new Псевдоактивности() { Имя = "1072" }; // а это буква, а является буквой, а это буква руского алфавита // связь создает сразу два объекта СтацСвязь // обучение = создание кучи типизированных связей и отмечание весов связей }
static ПСтрока() { var _РускийАлфавит = new List <char>(); for (var с = 'а'; с <= 'е'; с++) { _РускийАлфавит.Add(с); } _РускийАлфавит.Add('ё'); for (var с = 'ж'; с <= 'я'; с++) { _РускийАлфавит.Add(с); } var русскийалфавит = new Псевдоактивности(); var кодыюникода = new ПСтрока("Коды ЮНИКОДа"); // на впрос что это? должно быть код Юникода for (var и = 0; и < _РускийАлфавит.Count; и++) { var новаябуква = new Псевдоактивности(); новаябуква.СписокСвязей.Add(new СтацСвязь { СобствПА =н оваябуква, Направление = ТиНапрвления.Входящая, Тип = ТипСвязи.ЧленРяда });
// добавиться в группу public (СтацСвязь, СтацСвязь) ДобавитьГруппу(Псевдоактивности па) { // проверить наличия с связей var(св1, св2) = СоздатьСвязь(this, па); св2.Тип = ТипСвязи.Группа; св1.Тип = ТипСвязи.ЧленГруппы; return(св1, св2); }
// роль псевдоактивности определяется типами связи, но возможен вариант нечеткости ни ряд, ни структура // это создание группы с перечислениями public (СтацСвязь, СтацСвязь) ДобавитьЧленПеречисления(Псевдоактивности па) { // проверить наличия с связей var(св1, св2) = СоздатьСвязь(this, па); св1.Тип = ТипСвязи.Перечисление; св2.Тип = ТипСвязи.ЧленПеречисления; return(св1, св2); }
public void ДобавитьСвязьС(Псевдоактивности пс, ТиНапрвления напр, ТипСвязи типСвязи) { var(св1, св2) = СоздатьСвязь(this, пс); св1.Направление = напр; св1.Тип = типСвязи; св2.Направление = Обратная(напр); св2.Тип = ОбратныйТип(типСвязи); this.СписокСвязей.Add(св1); пс.СписокСвязей.Add(св1); }
// связей с псевдоак может быть несколько public СтацСвязь НайдиИДайСвязьС(Псевдоактивности па) { foreach (var св in СписокСвязей) { if (св.УдаленнаяСвязь.СобствПА == па) { return(св); } } return(null); }
public static (СтацСвязь, СтацСвязь) СоздатьСвязь(Псевдоактивности па1, Псевдоактивности па2) { var св1 = new СтацСвязь() { СобствПА = па1, }; var св2 = new СтацСвязь() { СобствПА = па2, }; св1.УдаленнаяСвязь = св2; св2.УдаленнаяСвязь = св1; па1.СписокСвязей.Add(св1); па2.СписокСвязей.Add(св2); return(св1, св2); }
public void СоздатьСвязьС(Псевдоактивности пс, ТиНапрвления напр) { var(св1, св2) = СтацСвязь.СоздатьСвязь(this, пс); св1.Направление = напр; св2.Направление = Обратная(напр); }