Главная страница
Навигация по странице:

  • Удаленный репозиторий

  • Коммит

  • уникальностью

  • mutable

  • mutable- обычный класс в котором можно менять поля.

  • программирование. Экз. Прога. Экзаменационные вопросы по дисциплине Программирование


    Скачать 45.33 Kb.
    НазваниеЭкзаменационные вопросы по дисциплине Программирование
    Анкорпрограммирование
    Дата27.10.2022
    Размер45.33 Kb.
    Формат файлаdocx
    Имя файлаЭкз. Прога.docx
    ТипЭкзаменационные вопросы
    #757049

    Экзаменационные вопросы

    по дисциплине

    «Программирование»
    1. Что такое система версионного контроля? Какую проблему решают системы версионного контроля? Что такое репозиторий? Чем отличаются локальный и удаленный репозитории? Что такое коммит? Что такое синхронизация?
    Ответ:

    • Это программные инструменты, помогающие командам разработчиков управлять изменениями в исходном коде с течением времени.(это система, записывающая изменения в файл или набор файлов в течение времени и позволяющая вернуться позже к определенной версии.)

    • Программное обеспечение контроля версий отслеживает все вносимые в код изменения в специальной базе данных. При обнаружении ошибки разработчики могут вернуться назад и выполнить сравнение с более ранними версиями кода для исправления ошибок, сводя к минимуму проблемы для всех участников команды.

    • Репозиторий — место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети.


    Удаленный репозиторий — репозиторий, находящийся на сервере. Это общий репозиторий, в который приходят все изменения.

    Локальный репозиторий — репозиторий, расположенный на локальном компьютере разработчика. Именно с ним работает программист.
    Коммит — это пакет изменений, хранящий информацию с добавленными, отредактированными или удалёнными файлами кода.
    Синхронизация — это обмен данными между локальным репозиторием и удаленным.


    2. Что такое система версионного контроля? Какую проблему решают системы версионного контроля? Что такое gitignore? Какие файлы нежелательно хранить под версионным контролем и почему?
    Ответ:

    Система версионного контроля - система, регистрирующая изменения в одном или нескольких файлах с тем, чтобы в дальнейшем была возможность вернуться к определённым старым версиям этих файлов.
    СВК помогает отслеживать изменения в файлах, предоставляет возможности для создания новых и слияние существующих ветвей проекта, производит контроль доступа пользователей к проекту, позволяет откатывать исправления и определять кто, когда и какие изменения вносил в проект.
    Файл .gitignore — это текстовый файл, помещенный в репозиторий git, который сообщает git не отслеживать определенные файлы и папки, которые нежелательно загружать в главный репозиторий.
    Что следует добавлять в .gitignore:

    1. Файлы, образующиеся в процессе и результате компиляции проекта. Эти файлы можно получить из исходного кода, поэтому их версионирование не имеет смысла.

    2. Файлы, создаваемые операционной системой.

    3. Файлы, создаваемые при выполнении кода.

    4. Базы данных. Для них есть свои способы резервного копирования и применять для этого git нерационально.

    5. Библиотеки, так как они занимают много места при загрузке.


    3. Что такое система версионного контроля? Какую проблему решают системы версионного контроля? Что такое ветка в репозитории? Как создать ветку в репозитории? Что такое слияние веток?
    Ответ:

    Система версионного контроля - система, регистрирующая изменения в одном или нескольких файлах с тем, чтобы в дальнейшем была возможность вернуться к определённым старым версиям этих файлов.
    СВК помогает отслеживать изменения в файлах, предоставляет возможности для создания новых и слияние существующих ветвей проекта, производит контроль доступа пользователей к проекту, позволяет откатывать исправления и определять кто, когда и какие изменения вносил в проект.
    Ветка в репозитории – независимая последовательность коммитов (история изменений). Ветки нужны, чтобы тестировать новые функции и распараллеливать работу над проектом.
    Для создания ветки в репозитории, в браузере перейдите на главную страницу репозитория GitHub, выберите базовую ветвь, чтобы запустить диалоговое окно switch branches/tags, введите уникальное имя ветви и нажмите кнопку "Создать ветвь".
    Слияние веток – это перенос изменений с одной ветки на другую. При этом слияние не затрагивает сливаемую ветку (та ветка, с которой мы берем изменения), то есть она остается в том же состоянии, что позволяет потом продолжить работу с ней.

    4. Что такое перечисление? Какую задачу решают перечисления? Какие преимущества и недостатки применения перечислений в сравнении с использованием int, string? Приведите пример кода объявления и работы с перечислением.
    Ответ:

    Перечисления представляют собой набор логически именованных связанных констант.
    Перечисления позволяют сделать исходный код программы более удобочитаемым. Также использование перечислений позволяет избавиться от “магических чисел”.
    Допустим, у вас есть приложение, в котором должны хранится дни недели. Для того, чтобы решить эту задачу можно просто завести целочисленную переменную, которая будет хранить номер дня недели. Но, если проект в дальнейшем будет поддерживать другой человек, у него могут возникнуть большие трудности, из-за того, что для хранения дней недели будут использоваться числа. Так как не сразу понятно что это за цифры и для чего они нужны. Хранить имя дня недели в строковой переменной - тоже не лучший вариант, так как возникает вероятность опечатки. Поэтому лучше всего использовать для этой задачи перечисления.


    5. Что такое перечисление? Какую задачу решают перечисления? Как работать с перечислениями в пользовательском интерфейсе? Приведите пример кода, как получить список всех значений перечисления. Как проинициализировать элемент ComboBox или ListBox значениями перечисления?
    Ответ:

    Перечисления представляют собой набор логически именованных связанных констант.
    Перечисления позволяют сделать исходный код программы более удобочитаемым. Также использование перечислений позволяет избавиться от “магических чисел”.
    Enum.GetValues(typeof(Students))
    var items = Enum.GetValues(typeof(Genre));

    foreach (var item in items)

    {

    MovieGenreComboBox.Items.Add(item);

    }

    6. Что такое структура в классическом понимании программирования? В чем преимущество создания структур в сравнении с хранением данных в отдельных переменных стандартных типов данных? (*важно: речь идет не о структурах в языке C#, а о структурном программировании как подходе в программировании)
    Ответ:
    структура - пользовательский составной тип данных, переменные которого хранят несколько именованных переменных

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

    //struct

    public struct Point2D

    {

    public double X;

    public double Y;

    }

    public void SetXtoPoint2D(Point2D point, double x)

    {

    if(x < 0)

    {

    throw new ArgumentException;

    }

    point.X = x;

    }

    public void main()

    {

    Point2D point;

    SetXtoPoint2D(point, 3.5);

    point.X = -10;

    }

    Вызов сеттеров в структуре на усмотрение разработчика, то есть можно присвоить некорректное значение.

    //class

    public class Point2D

    {

    private double _x;

    private double _y;

    public double X

    {

    get

    {

    return _x;

    }

    set

    {

    if(value < 0)

    {

    throw new ArgumentException();

    }

    _x = value;

    }

    }
    Внутри классов помимо полей есть методы, которые могут присваивать полям значения, и некорректные значения нельзя присвоить(инкапсуляция данных).
    Объяснить, что структуры - объединения переменных в общую конструкцию, которая позволяет работать с ними как с единым целым.

    Внутри классов дополнительно можно прописывать методы, с уникальной областью видимости, которые могут обращаться к полям напрямую и можно создать валидацию. Некорректные значения присвоить нельзя в отличии от структур.

    7. Что такое класс? В чем преимущество класса по сравнению со структурами в классическом понимании программирования? (*важно: речь идет не о структурах в языке C#, а о структурном программировании как подходе в программировании)
    Ответ:
    Класс - это пользовательский составной тип данных, объединяющий в едином описании несколько именованых переменным(полей) и функции по обработке этих переменных. Функции класса называются методами. Фактически, класс - это более расширенный вариант структур.
    Внутри классов помимо полей есть методы, которые могут присваивать полям значения, и некорректные значения нельзя присвоить(инкапсуляция данных).
    Внутри классов дополнительно можно прописывать методы, с уникальной областью видимости, которые могут обращаться к полям напрямую и можно создать валидацию. Некорректные значения присвоить нельзя в отличии от структур.
    8. Что такое состояние? Приведите примеры объектов с одинаковым состоянием и с разным состоянием.
    Ответ:

    Состояние – это перечень всех (как правило, статических) свойств данного объекта и текущих (как правило, динамических) значений каждого из этих свойств. Проще говоря, состояние – это все поля объекта и их текущее значение. У двух объектов состояние считается одинаковым только в том случае, если они являются объектами одного класса, а все поля этих объектов имеют одинаковые значения. Если объекты принадлежат разным классам, они отличаются набором полей, так как у каждого класса собственные поля. Если объекты одного класса отличаются значением хотя бы в одном поле, они обладают разными состояниями.
    9. Что такое поведение? Приведите пример поведения объекта.
    Ответ:

    Поведение – это действия и реакции объекта, выраженные через изменения состояния объекта и передачу сообщений. Проще говоря, поведение – это все методы класса. Вызывая методы объекта, мы можем менять его состояние. Таким образом, состояние объекта представляет собой суммарный результат его поведения.
    10. Что такое уникальность (индивидуальность) объекта? В чем разница между состоянием и уникальностью?
    Ответ:

    • Все объекты реального мира обладают также уникальностью (identity) – постоянным свойством, с помощью которого мы отличаем один объект от другого. Таким свойством является адрес объекта в оперативной памяти.

    • Состояние (state) - совокупный результат поведения объекта: одно из стабильных условий, в которых объект может существовать, охарактеризованных количественно; в любой момент времени состояние объекта включает в себя перечень (обычно статический) свойств объекта и текущие значения (обычно динамические) этих свойств. Например может быть два уникальных объекта обладающих различными свойствами, то есть состояние не обязательно должно быть уникальным, единственным среди объектов.



    11. Что такое свойства? Для чего нужны свойства? Что такое автосвойства? Приведите пример объявления свойств и авто свойств в классе. Приведите пример их использования.
    Ответ:

    Свойствоспособ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа. Обращение к свойству объекта выглядит так же, как и обращение к структурному полю (в структурном программировании), но, в действительности, реализовано через вызов функции. При попытке задать значение данного свойства вызывается один метод, а при попытке получить значение данного свойства — другой. В свойствах можно проводить валидацию данных, если никакой валидации и действий над переменной, к которой это свойство относится, не производится, то можно заменить на автосвойство, пример: Count {get; set;}
    12. Что такое поле, доступное только на чтение? В чем разница между const и readonly? Как создать поле, значение которого нельзя будет изменить после создания объекта класса?

    Как создать поле, защищенное от изменения вне класса, но доступное для чтения?
    Ответ:

    поле где в свойстве указан только метод get, const задает значение один раз самим программистом, а readonly можно один раз задать в конструкторе класса. Для этого необходимо создать поле с readonly и инициализировать его в конструкторе класса. Для этого необходимо перед методом set поставить идентификатор доступа private.
    13. Что такое mutable и immutable-объекты? Приведите примеры кода для таких объектов.
    Ответ:

    Объекты, которые после создания можно изменить, называются изменяемыми или mutable.

    Объекты, которые после их создания изменить нельзя, называются неизменяемыми или immutable.

    Пример: immutable. - private, в свойствах сеттеры тоже приватные либо отсутствуют, методы никак не меняют объект, а если нужно изменить, то создается новый объект. Или все поля readonly.

    mutable- обычный класс в котором можно менять поля.

    14. Что такое конструктор класса? Какие конструкторы бывают? Как правильно реализовывать конструктор класса? Приведите пример объявления и вызова конструктора класса?

    Ответ:

    Конструктор - специальный метод, определяющий набор инструкций, выполняемых при создании объектов данного класса.

    У конструктора нет возвращаемого типа данных и название конструктора - название класса.
    Конструктор по умолчанию, конструктор без параметров, конструктор с параметрами, конструктор с параметрами по умолчанию( ).

    public class Point2D

    {

    private double _x;

    private double _y;

    public double X

    {

    get

    {

    return _x;

    }

    set

    {

    if(value < 0)

    {

    throw new ArgumentException();

    }

    _x = value;

    }

    public Point2D(double x, double y)

    {

    _x = x; <- нельзя так делать

    X = x;

    Y = y; <- так можно, там есть валидация

    }

    }

    15. Что такое список как структура данных? В чем преимущества списка перед массивом? В чем недостатки? Приведите пример создания и работы со списком целых чисел. Приведите пример создания и работы со списком строк.
    Ответ:
    Класс List из пространства имен System.Collections.Generic представляет простейший список однотипных объектов. Класс List типизируется типом, объекты которого будут хранится в списке.
    Например, массив хранит фиксированное количество объектов, однако что если мы заранее не знаем, сколько нам потребуется объектов. И в этом случае намного удобнее применять коллекции. Еще один плюс коллекций состоит в том, что некоторые из них реализует стандартные структуры данных, например, стек, очередь, словарь, которые могут пригодиться для решения различных специальных задач.
    Список работает медленнее по сравнению с массивом, т.к. в массиве данные расположены последовательно, а в списке могут находиться в разных ячейках памяти. Также список занимает больше памяти, потому что хранит ещё ссылку на следующий элемент.
    List numbers= new List() {1, 2, 3};

    List people = new List() { "Tom", "Bob", "Sam" };
    16. Приведите пример кода создания и работы со списком объектов класса.
    Ответ:

    public class Point2D

    {

    public double Y{get; set;}

    public double X{get; set;}

    public Point2D(double x, double y)

    {

    X=x;

    y=y;

    }

    }

    public void main()

    {

    var values = new List
    ()


    {

    new Point2D(1.0, 2.0),

    new Point2D(4.6, 3.6)

    };

    values.Add(new Point2D(3.6, 3.5));

    values.Insert(0, new Point2D(3.5, 4.6));

    values.RemoveAt(0);

    }

    17. Что такое список как структура данных? В чем преимущества списка перед массивом? В чем недостатки?
    Ответ:
    Класс List из пространства имен System.Collections.Generic представляет простейший список однотипных объектов. Класс List типизируется типом, объекты которого будут хранится в списке.
    Например, массив хранит фиксированное количество объектов, однако что если мы заранее не знаем, сколько нам потребуется объектов. И в этом случае намного удобнее применять коллекции. Еще один плюс коллекций состоит в том, что некоторые из них реализует стандартные структуры данных, например, стек, очередь, словарь, которые могут пригодиться для решения различных специальных задач.
    Список работает медленнее по сравнению с массивом, т.к. в массиве данные расположены последовательно, а в списке могут находиться в разных ячейках памяти. Также список занимает больше памяти, потому что хранит ещё ссылку на следующий элемент.
    18. Что такое LINQ? Приведите примеры кода вызова методов LINQ-расширений для списков и массивов.
    Ответ:

    LINQ (Language-Integrated Query) представляет простой и удобный язык запросов к источнику данных.

    string[] people = { "Tom", "Bob", "Sam", "Tim", "Tomas", "Bill" };

    // создаем новый список для результатов

    var selectedPeople = from p in people // передаем каждый элемент из people в p

    where p.ToUpper().StartsWith("T") //фильтрация по критерию

    orderby p // упорядочиваем по возрастанию

    select p; // выбираем объект в создаваемую коллекцию


    19. Что такое нотация оформления кода? Почему нотации оформления кода важны при командной разработке? Опишите правила нотации RSDN для классов, полей, методов.
    Ответ:

    Нотация - соглашение об именовании переменных, констант и других идентификаторов в программном коде. Нотации важны при командной разработке, потому что если ваш код будет редактировать другой разработчик, то он должен понимать по именованию, что значит та или иная переменная.
    Правила для полей:

    1)Непубличные поля (private, protected и protected internal) именуются в стиле Кэмел и начинаются с префикса _.

    2)Публичные поля именуются в соответствии с правилами именования свойств.

    3)Одна декларация должна содержать не более одного поля и должна располагаться на одной строке.

    4)Публичные поля должны в обязательном порядке документироваться XML-комментариями. Желательно снабжать XML-комментариями и непубличные поля.

    5)Обращаясь к публичным полям старайтесь избегать их передачи по ссылке, т.к. велика вероятность того, что в следующих версиях приложения эти поля могут стать свойствами.
    Для методов:

    1)Используйте глаголы или комбинацию глагола и существительных и прилагательных для имен методов.

    2)Используйте стиль Паскаль для регистра букв (вне зависимости от области видимости метода).
    Для классов: () https://rsdn.org/article/mag/200401/codestyle.XML

    1)Используйте существительное (одно или несколько прилагательных и существительное) для имени класса.

    2)Используйте стиль Паскаль для регистра букв.

    3)Не используйте специальных префиксов, поясняющих, что это класс. Например, FileStream, а не CFileStream.

    4)В подходящих случаях используйте составные слова для производных классов, где вторая часть слова поясняет базовый класс. К примеру, ApplicationException – вполне подходящее название для класса, унаследованного от Exception, поскольку ApplicationException является наследником класса Exception. Не стоит, однако злоупотреблять этим методом, пользуйтесь им разумно. К примеру, Button – вполне подходящее название для класса, производного от Control. Общее правило может быть, например, таким: «Если производный класс незначительно меняет свойства, поведение или внешний вид базового, используйте составные слова. Если класс значительно расширяет или меняет поведение базового, используйте новое существительное, отражающее суть производного класса». LinkLabel незначительно меняет внешний вид и поведение Label и, соответственно, использует составное имя.

    5)Используйте составное имя, когда класс принадлежит некоторой специфичной категории, например FileStream, StringCollection, IntegrityException. Это относится к классам, которые являются потоками (Stream), коллекциями (Collection, Queue, Stack), ассоциативными контейнерами (Dictionary), исключениями (Exception).

    6)Для классов-наследников, реализующих интерфейс IDictionary рекомендуется использовать тройное имя в виде <ТипКлюча>To<ТипЗначения>Dictionary. Вместо Dictionary можно использовать слово Map. Если это очевидно, можно опускать название значения. Примеры: StringToStringDictionary, StringToIntegerMap или KeywordMap. Переменным такого типа рекомендуется давать более конкретное семантическое название, например userToPasswordMap (user --> password), nameServiceDictionary (name --> service).

    7)Для базового класса, предназначенного не для прямого использования, а для наследования, следует использовать суффикс Base. Например, CollectionBase. Такие классы также стоит делать абстрактными.

    8)Коллекциям (реализующим интерфейс ICollection/IList) нужно давать имя в виде <ИмяЭлемента>Collection. Переменным же этих типов лучше давать имена, являющиеся множественным числом от элемента. Например, коллекция кнопок должна иметь имя ButtonCollection, а переменная buttons.
    20. Что такое нотация оформления кода? Почему нотации оформления кода важны при командной разработке? Опишите правила нотации RSDN именования методов, входных аргументов и локальных переменных.

    Ответ:

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

    Для методов:

    1)Используйте глаголы или комбинацию глагола и существительных и прилагательных для имен методов.

    2)Используйте стиль Паскаль для регистра букв (вне зависимости от области видимости метода).
    Для локальных переменных:

    1)Используйте стиль Кэмел для регистра букв в именах переменных.

    2)Объявляйте переменные непосредственно перед их использованием.

    3)Счетчики в циклах традиционно называют i, j, k, l, m, n.

    4)Для временных локальных переменных, используемых в коротких участках кода, можно давать имена, состоящие из начальных букв слов имени типа.

    5)Не объявляйте более одной переменной в одной инструкции.

    6)Имена скрытых (protected, protected internal и private) переменных-членов класса и статических переменных начинайте с одиночного символа подчеркивания.

    7)Имена публичных (internal и public) переменных должны быть в стиле Паскаль и не иметь подчеркивания в качестве префикса.

    8)Комментируйте объявления так, чтобы были понятны назначение и способы использования переменной.

    9)Инициализируйте переменные при объявлении, если это возможно.

    21. Что такое нотация оформления кода? Почему нотации оформления кода важны при командной разработке? Опишите правила расположения членов класса в классе.
    Ответ:

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

    Хз чо тут по правилам.
    22. Что такое автодокументирование кода? В чем отличие xml-комментариев от обычных комментариев? Перечислите часто используемые xml-теги в xml-комментариях.
    Ответ: Авто документирование кода - инструмент для автоматизации вставки комментариев описывающих основной функционал модулей, процедур и функций.
    23. Что такое автодокументирование кода? В чем отличие xml-комментариев от обычных комментариев? Объясните, как формируется текст xml-комментариев для классов, конструкторов класса, свойств.
    Ответ: Автодокументирование кода - инструмент для автоматизации вставки комментариев описывающих основной функционал модулей, процедур и функций.

    24. Что такое исключение? Как выбросить исключение? Как обработать исключение? Какие ключевые слова для этого используются? Какие стандартные типы исключений есть в C#? Пример на языке C#.
    Ответ:
    Иногда при выполнении программы возникают ошибки, которые трудно предусмотреть или предвидеть, а иногда и вовсе невозможно. Например, при передачи файла по сети может неожиданно оборваться сетевое подключение. такие ситуации называются исключениями. Язык C# предоставляет разработчикам возможности для обработки таких ситуаций. Для этого в C# предназначена конструкция try...catch...finally.

    throw new ArgumentException();
    Но также есть более специализированные типы исключений, которые предназначены для обработки каких-то определенных видов исключений. Их довольно много, я приведу лишь некоторые:


    • DivideByZeroException: представляет исключение, которое генерируется при делении на ноль



    • ArgumentOutOfRangeException: генерируется, если значение аргумента находится вне диапазона допустимых значений



    • ArgumentException: генерируется, если в метод для параметра передается некорректное значение



    • IndexOutOfRangeException: генерируется, если индекс элемента массива или коллекции находится вне диапазона допустимых значений



    • InvalidCastException: генерируется при попытке произвести недопустимые преобразования типов

    25. Что такое сериализация? Какую задачу решает сериализация? В чем разница бинарной и текстовой сериализации? Назовите наиболее популярные форматы текстового представления объектов.
    Ответ:

    Сериализация — это процесс преобразования объекта в поток байтов для сохранения или передачи в память, базу данных или файл.
    Сериализация предназначена для того, чтобы сохранить состояния объекта для последующего воссоздания при необходимости.


    • Бинарная сериализует все поля класса включая закрытые; XML сериализация только открытые.

    • XML сериализация работает только с public типами; бинарная никаких требований по видимости типа не налагает.

    • Бинарная сериализация привязана к платформе .NET; XML файл можно прочитать на любом языке.

    • Бинарная сериализация привязывается к версиям сборок и типов, при смене номера версии возможны проблемы; XML сериализация привязана только к названиям членов класса и его структуре.

    • В рамках XML сериализации больше возможностей управлять результатом.


    Бинарную можно использовать если не нужна интероперабельность и возможность чтения/изменения данных человеком. В противном случае лучше выбрать XML, JSON или другой текстовый формат. В качестве замены бинарной сериализации можно посоветовать гугловский protocol buffers.


    26. Что такое сериализация? Какую задачу решает сериализация? В чем преимущество json формата перед xml? Почему использование стандартного (или стороннего) механизма сериализации предпочтительнее создания собственного механизма сохранения и загрузки файлов?
    Ответ:

    Сериализация — это процесс преобразования объекта в поток байтов для сохранения или передачи в память, базу данных или файл.
    Сериализация предназначена для того, чтобы сохранить состояния объекта для последующего воссоздания при необходимости.


    • JSON отличается от XML, потому что JSON не использует конечный тег

    • JSON короче.

    • JSON быстрее читать и писать.

    • JSON может использовать массивы.

    • Самая большая разница: XML необходимо анализировать с помощью анализатора XML. JSON можно проанализировать с помощью стандартной функции С#.

    • XML намного сложнее анализировать, чем JSON.


    27. Менеджер подключения пакетов NuGet. Какую задачу решает? В чем преимущество по сравнению со стандартными способами подключения библиотек?
    Ответ:

    NuGet - это бесплатный пакетный менеджер с открытым исходным кодом, служащий для .NET и .NET Core механизмом совместного использования кода, поддерживаемым Microsoft. Он определяет как создаются, размещаются и используются пакеты для .NET, а также, предоставляет средства для каждой из этих ролей. Инструмент, который помогает разработчику управлять сторонними библиотеками (пакетами) в своем проекте. Основной задачей NuGet является упрощение процесса установки сторонних библиотек.


    Преимущество в том, что он берет на себя все шаги процесса установки сторонних библиотек:


    • Поиск библиотеки;

    • Загрузка необходимого для установки пакета;

    • Проверка его хэш-значения на соответствие с заданным сервером (проверка целостности);

    • Распаковка файлов библиотеки в нужное место;

    • Добавление ссылок (reference) на ее сборки в проект;

    • Модификацию файлов конфигурации (web.config, app.config) при необходимости.

    Все это осуществляется с NuGet в несколько нажатий кнопки мыши или вводом одной консольной команды. Причем учитываются все зависимости загружаемой библиотеки от других компонентов.

    28. Что такое пользовательский элемент управления? Для чего нужно создавать пользовательские элементы управления? Когда нужно создавать пользовательский элемент управления?
    Ответ:

    Пользовательские элементы управления - это элементы управления, которые создаются пользователем, когда элементы управления предложенные программой не удовлетворяют требованиям приложения.
    Пользовательские элементы управления (user control) разрабатывает сам программист в тех случаях, когда стандартные элементы управления его не удовлетворяют или он разработал удачный вариант кода. Такой элемент управления можно многократно использовать на многих страницах и последующие его модернизации немедленно будут отображаться на всех страницах, где он используется.
    29. Что такое модальное окно? Как в C# вывести окно в модальном режиме? Когда нужно использовать модальное окно и почему?
    Ответ:

    Модальное окно – это окно, при появлении которого основное окно приложения становится недоступным до тех пор, пока пользователь не закроет модальное окно. Модальными преимущественно реализованы диалоговые окна. Примером модального диалогового окна в C# может служить MessageBox.
    Для начала, следует создать новую форму для модального окна, расположить на ней какие-либо элементы. Теперь можно приступить к отображению созданной формы в качестве модального диалога. Для этого нужно создать экземпляр класса нашей формы. После, с помощью метода ShowDialog() можно отобразить форму в C# как модальное диалоговое окно.
    Как правило, модальные окна применяются, когда требуется:

    • Потребовать от пользователя ввод какой-либо информации — начиная от простого «да/нет» до большого количества настроек или данных, необходимых для продолжения работы с родительским окном или приложением;

    • Привлечь внимание пользователя к чему-либо важному. Хотя редко это важно настолько, чтобы блокировать работу приложения целиком, но тем не менее продолжает использоваться по той причине, что это существенно легче в реализации;

    • Указать пользователю на невозможность отмены выполняемого им действия и потребовать подтверждения этого действия.

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


    Модальное окно используется потому, что в пользовательском интерфейсе оно обеспечивает быстрое, целенаправленное и контекстное взаимодействие. Когда используется модальное окно, загрузка новой страницы не требуется. Такие окна снижают нагрузку с веб-сайта и оптимизируют его работу.
    30. В чем заключается процедура установки приложения? Какие действия происходят во время установки программы на компьютер?
    Ответ:

    Процесс установки программы заключается в копировании файлов (исполняемых модулей, библиотек, элементов ActiveX и др.) на жесткий диск, регистрация компонентов, необходимых для работы программы.
    Развертка включает в себя разные шаги (основные только первые 2, остальные можно упустить!):

    1. Копирование файлов программы в специальную подпапку Program Files (или иное место размещения программы)

    2. Регистрация программы в реестре ОС Windows (создание в реестре записи с уникальным ID приложения).

    3. Создание ярлыков на Рабочем столе и пунктов в меню Пуск.

    4. Создание конфигурационных и иных файлов приложения в папке AppData пользователя.

    5. Конфигурация приложения (например, языковые настройки).

    6. Регистрация новых расширений файлов в реестре ОС Windows.

    7. Создание ассоциации файлов с вашим приложением.

    8. Предоставление пользователю лицензионного соглашения для ознакомления.


    написать администратору сайта