Пример #1
0
        public АдресВХранилище СоздатьЭкземплярКласса()
        {
            var адресЭкземпляра = ОписанияПолей.Копировать();
            var экз             = new ЭкземплярКласса();

            экз.АдресКласса          = СобственныйАдресПримитива;
            экз.Поля                 = new ГруппаОбъектов();
            экз.Поля.Список.Capacity = ОписанияПолей.Список.Count; // ограничение списка
            return(new АдресВХранилище()
            {
            });                             // этот адрес не добавлен в хранилище
        }
Пример #2
0
        public static void Тест()
        {
            var класс = new Класс()
            {
                Имя = "Пробный"
            };

            класс.ПоляИлиМетоды.Add("Поле1", new object());
            класс.ПоляИлиМетоды.Add("Метод", new План());
            класс.ПоляИлиМетоды.Add("Метод2", new Сложение());

            класс.Свойства[0] = new Строка("Имя класса");
            var поле1 = new ГруппаОбъектов();

            класс.Свойства[1] = поле1;
            поле1[0]          = new Строка("это Поле");
            поле1[1]          = new Строка("имяПоля1");
            поле1[2]          = new Строка("ТипаЗначения"); //может быть не опрееделен, может иметь группу типов
            поле1[3]          = new Строка("ЗначениеПоля");

            var класс2 = new ГруппаОбъектов();          // это класс

            класс2[0] = new Строка("Это тип объектов"); // или адрес на строку что это Тип. Описание типа это группа которая может иметь группу полей и группу методов
            класс2[1] = new Строка("Имя типа (Целое)"); // имеет имя
            класс2[2] = поле1;                          // имеет поле

            var тип = new ГруппаОбъектов();
            var адресОписанияТипов = Хранилище.Добавить(тип);

            тип[0] = new Строка("Это описание типов");
            тип[1] = new Строка("имеет список полей (создать ГруппуОбъектов с именем список полей)");; // это список полей
            ((ГруппаОбъектов)тип[1])[0] = new Строка("это список полей");
            тип[2] = new ГруппаОбъектов();                                                             // это список методов
            ((ГруппаОбъектов)тип[2])[0] = new Строка("это список методов");

            //клонирование типа
            // создать новый тип
            var класс3 = new ГруппаОбъектов();

            класс3[0] = адресОписанияТипов;
            for (int индекс = 1; индекс < тип.Список.Count; индекс++)
            {
                класс3[индекс] = тип[индекс].Копировать();
            }


            var локальныйСписокТипов = new ГруппаОбъектов(); // сюда добавляются типы

            локальныйСписокТипов[0] = new Строка("Это локальный список типов");
            локальныйСписокТипов.Добавить(класс2);



            var матрицаТипа  = new ГруппаОбъектов();
            var адресматрицы = Хранилище.Добавить(матрицаТипа);

            матрицаТипа[0] = new Строка("это матрица тип");
            матрицаТипа[1] = new Строка("Имя типа");
            матрицаТипа[2] = new ГруппаОбъектов();;                // это список полей
            ((ГруппаОбъектов)матрицаТипа[2])[0] = new Строка("это список полей");
            матрицаТипа[3] = new ГруппаОбъектов();                 // это список методов
            ((ГруппаОбъектов)матрицаТипа[3])[0] = new Строка("это список методов");
            матрицаТипа[4] = адресматрицы;                         //new Строка("Здесь должен быть адрес матрицы");

            var класс4 = (ГруппаОбъектов)матрицаТипа.Копировать(); //клонировать это копирование структуры, но не значений, здесь это клонирование

            класс4[0] = матрицаТипа;                               // в 0 хранится родитель

            var адресКласс4 = СоздатьТип("Бар");                   // создание без матрицы

            На_ИмяТипа(класс4, new Строка("Бар"));                 //

            Класс.ДобавитьПоле(адресКласс4, Класс.СоздатьПоле("ЦенаОткрытия", new АдресВХранилище()));

            var экземпляр = Класс.СоздайЭкземплярКласса(класс4);

            var значениеПоля = Класс.ДайЗначение(экземпляр, "ЦенаОткрытия");

            // выделение в независимый объект это перемещение из группыОбъектов в Хранилище (или другую группу)
            // вместо объекта там появляется адрес объекта
            // включение в группуобъектов означает что команды посылаются от группы к членам, но не оборот
            // часть объектов может быть помечена как некопируемая
            // команды всегда отдаются активности(процессору), данные пассивны Процессор Сформируй (рез)бар (вход данные) из списка тиков за интервал И
            // (кому) список тиков (команда)( сформируй (рез) бар ) (параметр) за интервал - Это не корректное выражение, может (активнсть хранящая тики) правильно
            // (рез)бар (ком=страдательый залог) сформируйся (параметр) из списка тиков (парметр) за интервал И - здесь бар превращается в живое существо
            // в проге мы оперируем экземплярами: бар это сокращение от бар бар1 В определении достаточно бар, при исполнении получается конкретный бар1
            // все ООП бред!!!
            // програмирование надо вести в форме диалогов , т.к.
            // бар невсегда получается в форме результата, может быть и ошибка, программа всегда пишется будто нет ошибок

            var метод = new ГруппаОбъектов
            {
                [0]  = new Строка("метод"),
                [1]  = new Строка("Имя метода"),
                [2]  = new ГруппаОбъектов(),    //определение параметров Параметры иогут иметь ссылки на этот метод и название у метода тогда меняется
                [21] = new Адрес(),             // адрес типа , там еще есть параметры или конкретного экземпляра данные там
                [3]  = new ПримитивИлиАдрес(),  // определение типа результата
                [4]  = new АппаратноеДействие() // список действий
            };
            // метод состоит из имени, списка параметров, возврат значений, список действий
            // один из параметров адрес экземпляра типа, все специальные параметры владеют этим методом (целое число как правило не является владельцем методов)
            // определение метода сигнатура



            var действие = (План)метод[4]; //=Действие

            действие.Выполнить(null);      // сдесь в качестве параметра надо задавать список аргументов

            //Создание новой модели (Группы методов и описаний структуры - должна быть замкнутая структура, полная подмена , нужно использовать только ее)
            // эти методы применимы только к данной структуре
            // эти методы позволяют убрать самоописание из структуры, т.к. заранее знают, что где
            // это еще перевод в понятные для внутреннего процесора команды
            // ЭТО ЕЩЕ ДАННЫЕ ДЛЯ ПРЕПРОЦЕССОРА который сжимает данные заменяет имена на адреса,
            //                                          проводит проверку соотвествия типов после чего выкидывает их из методов,
            //                                          заменяет вычислимые данные результатами

            var модель = new ГруппаОбъектов
            {
                [0] = new АппаратноеДействие()
                {
                    Метод = typeof(Класс).GetMethod("СоздатьТип"), Имя = new Строка("Создать тип")
                },
                [1] = new АппаратноеДействие()
                {
                    Метод = typeof(Класс).GetMethod("ЧтоЭто")
                },
                [2] = new АппаратноеДействие()
                {
                    Метод = typeof(Класс).GetMethod("Дай_ИмяТипа")
                },
                [3] = new АппаратноеДействие()
                {
                    Метод = typeof(Класс).GetMethod("СоздатьПоле")
                },
                [4] = new АппаратноеДействие()
                {
                    Метод = typeof(Класс).GetMethod("СоздатьЭкземплярТипа")
                },
                [5] = new АппаратноеДействие()
                {
                    Метод = typeof(Класс).GetMethod("ПрисвоитьЗначениеПолюЭкземпляра")
                },
                [6] = new АппаратноеДействие()
                {
                    Метод = typeof(Класс).GetMethod("ВыполнитьМетод")
                }
            };

            // Описание сценариев общения (шаблон диалога)- метод программирования
            // А: Вася? - установление связи
            // Б: Да        / Нет                   /Ну
            // А: Ты кто?   /Пардон, конец связи    / Что ну?
            // Б: бот                               /Ну Вася
        }