Пример #1
0
        // ГруппаОбъектов похоже на папку только вместо имен номера
        public void ПереносПАвДругоеПростр(ГруппаОбъектов дрПространство, Псевдоактивности ПА)
        {
            var аПАновое = дрПространство.Добавить(ПА);    // здесь Адрес уже полный по нему можно найти адрес в Куче  СобствАдрес Па меняется

            foreach (var связь in ПА.СписокСвязей)
            {
                var старыйАдрес = связь.СобственныйАдресПримитива;

                var новыйАдресСвязь = дрПространство.Добавить(связь);
                связь.АдресСобПА = аПАновое;

                // если связь содержит Удаленную Связь ( в случае только Входящей связи, удаленные неизвестны)  Удаленные ПА потеряют эту ПА
                if (связь.Направление == ТиНапрвления.Входящая)
                {
                    // можно оставить переадресацию, вместо СпецСвязи, по старому адресу будет новый адрес или Прокси.
                    var прокси = new Переадресация()
                    {
                        НовыйАдрес = новыйАдресСвязь
                    };
                    ((ГруппаОбъектов)старыйАдрес.АдресРегистратора.АдресВКучеПамяти()).Заменить(старыйАдрес, прокси);
                }
                else
                {
                    if (связь.Направление != ТиНапрвления.Исходящая)
                    {
                        связь.УдаленнаяСвязь.АдресУдаленойСвязи = новыйАдресСвязь;
                        // сообщение удаленой связи о смене своего адреса
                        // адрес связи в Куче не меняется
                    }
                    // в противном случае УдаленнаяСвяь ничего незнает об этой связи
                }
            }
        }
Пример #2
0
        public static void Псевдоактивности()
        {
            var Куча     = new ГруппаСКучей();
            var русбуква = new Псевдоактивности()
            {
                Имя = "буква руского алфавита"
            };

            var русбукваА = new Псевдоактивности()
            {
                Имя = "а"
            };
            var русбукваБ = new Псевдоактивности()
            {
                Имя = "б"
            };

            русбуква.ДобавитьЧленПеречисления(русбукваА);
            русбуква.ДобавитьЧленПеречисления(русбукваБ);

            // код это источник рсапознования из строки в набор букв
            // и одновременно обратного преобразования
            var КодрусбукваА = new Псевдоактивности()
            {
                Имя = "1072"
            };
            // а это буква, а является буквой, а это буква руского алфавита
            // связь создает сразу два объекта СтацСвязь
            // обучение = создание кучи типизированных связей и отмечание весов связей
        }
Пример #3
0
        static ПСтрока()
        {
            var _РускийАлфавит = new List <char>();

            for (var с = 'а'; с <= 'е'; с++)
            {
                _РускийАлфавит.Add(с);
            }
            _РускийАлфавит.Add('ё');
            for (var с = 'ж'; с <= 'я'; с++)
            {
                _РускийАлфавит.Add(с);
            }

            var русскийалфавит = new Псевдоактивности();
            var кодыюникода    = new ПСтрока("Коды ЮНИКОДа"); // на впрос что это? должно быть код Юникода


            for (var и = 0; и < _РускийАлфавит.Count; и++)
            {
                var новаябуква = new Псевдоактивности();
                новаябуква.СписокСвязей.Add(new СтацСвязь
                {
                    СобствПА =н оваябуква, Направление = ТиНапрвления.Входящая, Тип = ТипСвязи.ЧленРяда
                });
Пример #4
0
        // добавиться в группу
        public (СтацСвязь, СтацСвязь) ДобавитьГруппу(Псевдоактивности па)
        {
            // проверить наличия с связей
            var(св1, св2) = СоздатьСвязь(this, па);
            св2.Тип       = ТипСвязи.Группа;
            св1.Тип       = ТипСвязи.ЧленГруппы;

            return(св1, св2);
        }
Пример #5
0
        // роль псевдоактивности определяется типами связи, но возможен вариант нечеткости ни ряд, ни структура

        // это создание группы с перечислениями
        public (СтацСвязь, СтацСвязь) ДобавитьЧленПеречисления(Псевдоактивности па)
        {
            // проверить наличия с связей
            var(св1, св2) = СоздатьСвязь(this, па);
            св1.Тип       = ТипСвязи.Перечисление;
            св2.Тип       = ТипСвязи.ЧленПеречисления;

            return(св1, св2);
        }
Пример #6
0
 public void ДобавитьСвязьС(Псевдоактивности пс, ТиНапрвления напр, ТипСвязи типСвязи)
 {
     var(св1, св2)   = СоздатьСвязь(this, пс);
     св1.Направление = напр;
     св1.Тип         = типСвязи;
     св2.Направление = Обратная(напр);
     св2.Тип         = ОбратныйТип(типСвязи);
     this.СписокСвязей.Add(св1);
     пс.СписокСвязей.Add(св1);
 }
Пример #7
0
 // связей с псевдоак может быть несколько
 public СтацСвязь НайдиИДайСвязьС(Псевдоактивности па)
 {
     foreach (var св in СписокСвязей)
     {
         if (св.УдаленнаяСвязь.СобствПА == па)
         {
             return(св);
         }
     }
     return(null);
 }
Пример #8
0
        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);
        }
Пример #9
0
 public void СоздатьСвязьС(Псевдоактивности пс, ТиНапрвления напр)
 {
     var(св1, св2)   = СтацСвязь.СоздатьСвязь(this, пс);
     св1.Направление = напр;
     св2.Направление = Обратная(напр);
 }