Что такое консольное приложение

Обновлено: 04.07.2024

Вы создадите приложение, которое читает текстовый файл и выводит содержимое этого текстового файла на консоль. Вывод на консоль осуществляется в соответствии с чтением вслух. Вы можете ускорить или замедлить темп, нажимая клавиши ' ' (больше чем). Это приложение можно запустить в Windows, Linux, macOS или в контейнере Docker.

В этом руководстве много функций. Давайте построим их один за другим.

Предпосылки

Создайте приложение

Первым шагом является создание нового приложения. Откройте командную строку и создайте новый каталог для вашего приложения. Сделайте это текущим каталогом. Введите команду dotnet new console в командной строке. Это создает начальные файлы для базового приложения "Hello World".

Прежде чем вы начнете вносить изменения, давайте запустим простое приложение Hello World. После создания приложения введите dotnet run в командной строке. Эта команда запускает процесс восстановления пакета NuGet, создает исполняемый файл приложения и запускает его.

Простой код приложения Hello World находится в файле Program.cs. Откройте этот файл в своем любимом текстовом редакторе. Замените код в Program.cs следующим кодом:

Чтение и отображение файла

Первая функция, которую нужно добавить, — это возможность читать текстовый файл и отображать весь этот текст на консоли. Сначала добавим текстовый файл. Скопируйте файл sampleQuotes.txt из репозитория GitHub для этого примера в каталог вашего проекта. Это будет служить сценарием для вашего приложения. Информацию о том, как загрузить образец приложения для этого руководства, см. в инструкциях в разделе Образцы и учебные пособия.

Затем добавьте в класс Program следующий метод (прямо под методом Main):

Переменная для чтения определяется с помощью ключевого слова var. var определяет локальную переменную с неявным типом. Это означает, что тип переменной определяется типом времени компиляции объекта, назначенного переменной. Здесь это значение, возвращаемое методом OpenText(String), который является объектом StreamReader.

Теперь давайте заполним код для чтения файла в методе Main:

Запустите программу (используя dotnet run ), и вы увидите каждую строку, выведенную на консоль.

Добавление задержек и форматирование вывода

То, что у вас есть, отображается слишком быстро, чтобы читать вслух. Теперь вам нужно добавить задержки в вывод. Когда вы начнете, вы будете создавать часть основного кода, обеспечивающего асинхронную обработку. Однако эти первые шаги будут следовать нескольким антипаттернам. Анти-шаблоны указываются в комментариях по мере добавления кода, и код будет обновлен на последующих этапах.

В этом разделе есть два шага. Во-первых, вы обновите метод итератора, чтобы он возвращал отдельные слова, а не целые строки. Это сделано с этими модификациями. Заменить линию возврата урожая; оператор со следующим кодом:

Затем вам нужно изменить способ использования строк файла и добавить задержку после записи каждого слова. Замените оператор Console.WriteLine(line) в методе Main следующим блоком:

Запустите образец и проверьте результат. Теперь печатается каждое отдельное слово с задержкой в ​​200 мс. Однако отображаемый вывод показывает некоторые проблемы, поскольку исходный текстовый файл содержит несколько строк, содержащих более 80 символов без разрыва строки. Это может быть трудно прочитать, пока он прокручивается. Это легко исправить. Вы просто будете отслеживать длину каждой строки и генерировать новую строку всякий раз, когда длина линии достигает определенного порога. Объявите локальную переменную после объявления слов в методе ReadFrom, который содержит длину строки:

Затем добавьте следующий код после слова yield return + " "; оператор (перед закрывающей скобкой):

Запустите пример, и вы сможете читать вслух в заданном темпе.

Асинхронные задачи

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

Добавьте этот метод в свой класс Program (он берется из тела вашего метода Main):

Вы заметите два изменения. Во-первых, в теле метода вместо вызова Wait() для синхронного ожидания завершения задачи в этой версии используется ключевое слово await. Для этого вам нужно добавить модификатор async в сигнатуру метода. Этот метод возвращает Task . Обратите внимание, что нет операторов return, которые возвращают объект Task. Вместо этого этот объект Task создается кодом, который генерирует компилятор при использовании оператора await.Вы можете себе представить, что этот метод возвращает значение, когда достигает await . Возвращенная задача указывает на то, что работа не завершена. Метод возобновляется после завершения ожидаемой задачи. Когда он выполнен до завершения, возвращенная задача указывает, что она завершена. Вызывающий код может отслеживать возвращенную задачу, чтобы определить, когда она завершена.

Вы можете вызвать этот новый метод в своем методе Main:

Здесь, в Main , код синхронно ожидает. Вы должны использовать оператор await вместо синхронного ожидания, когда это возможно. Но в методе Main консольного приложения вы не можете использовать оператор await. Это приведет к закрытию приложения до завершения всех задач.

Затем вам нужно написать второй асинхронный метод для чтения из консоли и наблюдения за ключами ' ' (больше чем) и 'X' или 'x'. Вот метод, который вы добавляете для этой задачи:

Это создает лямбда-выражение для представления делегата Action, который считывает ключ из консоли и изменяет локальную переменную, представляющую задержку, когда пользователь нажимает клавиши ' ' (больше чем). Метод делегата завершается, когда пользователь нажимает клавиши «X» или «x», что позволяет пользователю остановить отображение текста в любое время. Этот метод использует ReadKey() для блокировки и ожидания нажатия клавиши пользователем.

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

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

Поместите этот класс в новый файл и включите этот класс в пространство имен TeleprompterConsole, как показано. Вам также нужно будет добавить оператор using static в начало файла, чтобы вы могли ссылаться на методы Min и Max без закрывающих имен классов или пространств имен. Оператор using static импортирует методы из одного класса. Это отличается от оператора using без static , который импортирует все классы из пространства имен.

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

Единственным новым методом здесь является вызов WhenAny(Task[]). Это создает задачу, которая завершается, как только завершается любая из задач в списке ее аргументов.

Затем вам нужно обновить оба метода ShowTeleprompter и GetInput, чтобы использовать объект конфигурации для задержки:

Эта новая версия ShowTeleprompter вызывает новый метод в классе TeleprompterConfig. Теперь вам нужно обновить Main, чтобы он вызывал RunTeleprompter вместо ShowTeleprompter:

Заключение

Дополнительную информацию о файловом вводе-выводе см. в разделе Файловый и потоковый ввод-вывод. Дополнительные сведения о модели асинхронного программирования, используемой в этом руководстве, см. в разделах Асинхронное программирование на основе задач и Асинхронное программирование.

В этом руководстве вы:

В части 2 вы расширяете это приложение, добавляя больше проектов, изучая приемы отладки и ссылаясь на сторонние пакеты.

Предпосылки

У вас должна быть установлена ​​Visual Studio.

Если вы еще не установили Visual Studio, перейдите на страницу загрузок Visual Studio, чтобы установить ее бесплатно.

Если вы еще не установили Visual Studio, перейдите на страницу загрузок Visual Studio, чтобы установить ее бесплатно.

Создать проект

Откройте Visual Studio 2017.

В верхней строке меню выберите «Файл» > «Создать» > «Проект». (Можно также нажать Ctrl+Shift+N).

Снимок экрана, на котором показан шаблон проекта консольного приложения (.NET Core) в диалоговом окне

Добавить рабочую нагрузку (необязательно)

Вариант 1. Использование диалогового окна «Новый проект»

Выберите ссылку «Открыть установщик Visual Studio» на левой панели диалогового окна «Новый проект».

Снимок экрана, на котором показана ссылка

Снимок экрана, показывающий рабочую нагрузку кроссплатформенной разработки .NET Core в установщике Visual Studio.

Вариант 2. Используйте строку меню "Инструменты"

Отмена в диалоговом окне "Новый проект" и в верхней строке меню выберите "Инструменты" > "Получить инструменты и функции".

Откройте Visual Studio и выберите "Создать новый проект" в окне "Пуск".

Снимок экрана с окном создания нового проекта.

После применения фильтров языка, платформы и типа проекта выберите шаблон консольного приложения и нажмите кнопку Далее.

Если вы не видите шаблон консольного приложения, выберите Установить дополнительные инструменты и функции.

Снимок экрана со ссылкой Установить дополнительные инструменты и функции.

Снимок экрана, показывающий рабочую нагрузку кроссплатформенной разработки .NET Core в установщике Visual Studio.

После этого нажмите кнопку «Изменить» в установщике Visual Studio. Вам может быть предложено сохранить вашу работу; если да, то делай так. Затем выберите Продолжить, чтобы установить рабочую нагрузку. Затем вернитесь к шагу 2 этой процедуры "Создание проекта".

В окне "Настройка нового проекта" введите Калькулятор в поле "Имя проекта". Затем нажмите «Далее».

Скриншот с названием вашего проекта

Снимок экрана, на котором видно, что .NET Core 3.1 выбран в

Visual Studio открывает ваш новый проект, который включает код "Hello World" по умолчанию. Чтобы просмотреть его в редакторе, выберите файл кода Program.cs в окне обозревателя решений, которое обычно находится в правой части Visual Studio.

Код "Hello World" по умолчанию вызывает метод WriteLine для отображения буквальной строки "Hello, World!" в окне консоли. Если вы нажмете F5, вы сможете запустить программу по умолчанию в режиме отладки. После запуска приложения в отладчике окно консоли остается открытым. Нажмите любую клавишу, чтобы закрыть окно консоли.

Откройте Visual Studio и выберите "Создать новый проект" в окне "Пуск".

Снимок экрана с окном создания нового проекта.

После применения фильтров языка, платформы и типа проекта выберите шаблон консольного приложения и нажмите кнопку Далее.

Если вы не видите шаблон консольного приложения, выберите Установить дополнительные инструменты и функции.

Снимок экрана со ссылкой Установить дополнительные инструменты и функции.

Снимок экрана, показывающий рабочую нагрузку разработки рабочего стола .NET в установщике Visual Studio.

В окне "Настройка нового проекта" введите Калькулятор в поле "Имя проекта" и нажмите кнопку "Далее".

Снимок экрана, на котором показано присвоение имени калькулятору проекта в окне

Снимок экрана, показывающий .NET 6.0, выбранный в окне

Visual Studio открывает ваш новый проект, который включает код "Hello World" по умолчанию.

Чтобы просмотреть его в редакторе, выберите файл кода Program.cs в окне обозревателя решений, которое обычно находится в правой части Visual Studio.

Инструкция с одним кодом вызывает метод WriteLine для отображения буквальной строки "Hello, World!" в окне консоли. Если вы нажмете F5, вы сможете запустить программу по умолчанию в режиме отладки. После запуска приложения в отладчике окно консоли остается открытым. Нажмите любую клавишу, чтобы закрыть окно консоли.

Создайте приложение

В этом разделе вы:

Изучите целочисленную математику

В редакторе кода удалите код "Hello World" по умолчанию.

Снимок экрана, показывающий удаление стандартного кода Hello World из вашего нового приложения-калькулятора.

В частности, удалите строку с текстом Console.WriteLine("Hello World!"); .

Вместо него введите следующий код:

Обратите внимание, что при этом функция IntelliSense в Visual Studio предлагает вам возможность автозаполнения записи.

Нажмите зеленую кнопку "Пуск" рядом с "Калькулятором", чтобы создать и запустить программу, или нажмите клавишу F5.

Открывается окно консоли, в котором отображается сумма 42 + 119, что равно 161.

Снимок экрана, показывающий окно консоли с результатами вычислений с целыми числами.

(Необязательно) Вы можете изменить оператор, чтобы изменить результат. Например, вы можете изменить оператор + в int c = a + b; строка кода - для вычитания, * для умножения или / для деления. Затем, когда вы запускаете программу, результат тоже меняется.

Закройте окно консоли.

В обозревателе решений на правой панели выберите Program.cs, чтобы отобразить файл в редакторе кода

В редакторе кода замените код "Hello World" по умолчанию на Console.WriteLine("Hello World!"); .

Скриншот, на котором показана строка для замены в файле программы.

Замените строку следующим кодом:

Если вы вводите код, функция IntelliSense Visual Studio предлагает вам возможность автозаполнения ввода.

Чтобы создать и запустить приложение, нажмите клавишу F5 или выберите зеленую стрелку рядом с названием "Калькулятор" на верхней панели инструментов.

Открывается окно консоли, в котором отображается сумма 42 + 119, что равно 161.

Снимок экрана окна консоли, показывающий результаты вычислений с целыми числами.

Закройте окно консоли.

При желании вы можете изменить оператор, чтобы изменить результат. Например, вы можете изменить оператор + в int c = a + b; строка кода - для вычитания, * для умножения или / для деления. Когда вы запускаете приложение, результат изменяется соответствующим образом.

Добавить код для создания калькулятора

Продолжите, добавив в проект более сложный набор кода калькулятора.

В редакторе кода замените весь код в program.cs следующим новым кодом:

Нажмите кнопку "Калькулятор" или нажмите F5, чтобы запустить приложение.

Откроется окно консоли.

В окне консоли следуйте инструкциям, чтобы сложить числа 42 и 119 вместе.

Ваше приложение должно выглядеть так, как показано на следующем снимке экрана:

 Снимок экрана: окно консоли, показывающее приложение «Калькулятор» с подсказками». /><br /></p>
<p>В редакторе кода замените весь код в <em>program.cs</em> следующим новым кодом:</p>
<p>Нажмите кнопку

Откроется окно консоли.

В окне консоли следуйте инструкциям, чтобы сложить числа 42 и 119 вместе.

Ваше приложение должно выглядеть так, как показано на следующем снимке экрана:

 Снимок экрана: окно консоли, показывающее приложение «Калькулятор» с подсказками». /><br /></p>
<h3>Добавить десятичные дроби</h3>
<p>Теперь настройте код, чтобы добавить больше функциональности.</p>
<p>Текущий калькулятор принимает и возвращает только целые числа. Например, если вы запустите приложение и разделите число 42 на число 119, ваш результат будет равен нулю, что не является точным.</p>
<p><img class=

Чтобы исправить код для повышения точности за счет обработки десятичных знаков:

В program.cs в редакторе Visual Studio нажмите Ctrl+H, чтобы открыть элемент управления "Найти и заменить".

Введите int в элементе управления и введите float в поле «Заменить».

Выберите значки Учитывать регистр и Учитывать целое слово в элементе управления или нажмите клавиши ALT+C и ALT+W.

Выберите значок «Заменить все» или нажмите клавиши ALT+A, чтобы выполнить поиск и замену.

Снова запустите приложение-калькулятор и разделите число 42 на число 119.

Теперь приложение возвращает десятичное число вместо нуля.

Снимок экрана окна консоли, показывающий приложение

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

Используйте элемент управления "Найти и заменить", чтобы изменить каждый экземпляр переменной с плавающей запятой на double и изменить каждый экземпляр метода Convert.ToInt32 на Convert.ToDouble .

Запустите приложение-калькулятор и разделите число 42,5 на число 119,75.

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

Снимок экрана окна консоли, показывающий приложение

В разделе "Пересмотрите код" вы уменьшаете количество знаков после запятой в результатах.

Отладка приложения

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

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

Дополнительные сведения об отладчике и принципах его работы см. в статье Первый взгляд на отладчик Visual Studio.

Исправить ошибку "делить на ноль"

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

Снимок экрана редактора кода Visual Studio, показывающий строку, выделенную желтым цветом, и ошибку Exception Unhandled для

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

Чтобы изменить код для обработки этой ошибки:

В program.cs замените код между регистром "d": и комментарием, который гласит // Дождитесь ответа пользователя перед закрытием следующим кодом:

Между фигурными скобками добавьте следующий новый класс Calculator:

Также добавьте новый класс Program следующим образом:

Нажмите кнопку "Калькулятор" или нажмите F5, чтобы запустить приложение.

Следуйте инструкциям и разделите число 42 на число 119. Результат должен выглядеть примерно так, как показано на следующем снимке экрана:

Снимок экрана, показывающий окно консоли с обновленным приложением

Снимок экрана, показывающий окно консоли с обновленным приложением

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

Закройте приложение

Если вы еще этого не сделали, закройте приложение "Калькулятор".

Закройте панель вывода в Visual Studio.

Снимок экрана, показывающий закрытие панели вывода в Visual Studio.

В Visual Studio нажмите Ctrl+S, чтобы сохранить приложение.

Добавить систему управления версиями Git

Теперь, когда вы создали приложение, вы можете добавить его в репозиторий Git. Visual Studio упрощает этот процесс благодаря инструментам Git, которые можно использовать непосредственно из IDE.

Чтобы связать свой код с Git, начните с создания нового репозитория Git, в котором находится ваш код:

В строке состояния в правом нижнем углу Visual Studio выберите Добавить в систему управления версиями, а затем выберите Git.

Снимок экрана с кнопками управления версиями Git под панелью обозревателя решений, с выделенной кнопкой

В диалоговом окне "Создать репозиторий Git" войдите в GitHub.

Снимок экрана диалогового окна

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

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

Выберите «Создать и отправить».

После создания репозитория вы увидите сведения о состоянии в строке состояния.

Скриншот строки состояния репозитория, который

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

Второй значок с карандашом показывает количество незафиксированных изменений в вашем коде. Вы можете выбрать этот значок, чтобы просмотреть эти изменения в окне Git Changes.

Чтобы узнать больше о том, как использовать Git с вашим приложением, см. документацию по контролю версий Visual Studio.

Проверка: код завершен

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

Создание первого консольного приложения

В нашем примере мы собираемся использовать Visual Studio для создания проекта консольного типа. Далее мы собираемся использовать консольное приложение для отображения сообщения «Hello World». Затем мы увидим, как собрать и запустить консольное приложение.

Давайте выполним указанные ниже шаги, чтобы получить этот пример.

Шаг 1. Первый шаг включает создание нового проекта в Visual Studio. Для этого после запуска Visual Studio необходимо выбрать пункт меню «Создать->Проект».

Шаг 2. Следующим шагом является выбор типа проекта в качестве консольного приложения. Здесь нам также нужно указать название и местонахождение нашего проекта.

  1. В диалоговом окне проекта мы видим различные параметры для создания различных типов проектов в Visual Studio. Выберите вариант Windows слева.
  2. Когда мы щелкнем параметры Windows на предыдущем шаге, мы сможем увидеть параметр для консольного приложения. Выберите этот вариант.
  3. Затем мы даем приложению имя, в нашем случае это DemoApplication. Нам также необходимо указать место для хранения нашего приложения.
  4. Наконец, мы нажимаем кнопку "ОК", чтобы позволить Visual Studio создать наш проект.

Если выполнить описанные выше шаги, вы получите следующий вывод в Visual Studio.

Вывод:-

  1. В Visual Studio будет создан проект под названием «DemoApplication». Этот проект будет содержать все необходимые артефакты, необходимые для запуска консольного приложения.
  2. Основная программа с именем Program.cs — это файл кода по умолчанию, который создается при создании нового приложения в Visual Studio. Этот код будет содержать необходимый код для нашего консольного приложения.

Шаг 3. Теперь давайте напишем наш код, который будет использоваться для отображения строки «Hello World» в консольном приложении.

Весь приведенный ниже код необходимо ввести в файл Program.cs. Код будет использоваться для написания «Hello World» при запуске консольного приложения.

Пояснение кода:-

Если приведенный выше код введен правильно и программа выполнена успешно, будет отображен следующий вывод.

Вместо этого мы можем управлять консольными приложениями, просто переходя прямо к интересующим нас классам и размещая там хуки. Это то, что мы сделали, когда хотели управлять выводом текста на экран: мы просто перешли к WriteLine в CLR и к println в JVM и поместили наш код там. В общем, управление консольными приложениями основано на характеристиках объектно-ориентированного языка более низкого уровня, таких как наследование, полиморфизм, делегирование и базовые классы, о которых мы поговорим в главе 8.

Механизм использования интерпретаторов Tcl и Tk

2.2.2 Консоль Tk ( tkcon ) — альтернативная интерактивная оболочка tclsh/wish

Джеффри Хоббс написал полезную консольную программу tkcon , которая обеспечивает более приятный интерфейс, чем простое приглашение %. Облегченная версия программы является консолью по умолчанию, когда вы запускаете tclsh или желаете в MS Windows.

Вы можете запустить tkcon в системах Mac OS/X и Linux/Unix, как и любой другой скрипт Tcl/Tk. Эта программа размещена на сопутствующем веб-сайте.

Приложение tkcon предоставляет следующие возможности:

Механизм истории на основе меню, облегчающий поиск и повторение предыдущих команд.

Похожий на Emacs интерфейс редактора для командной строки, позволяющий легко исправлять опечатки или слегка изменять предыдущие команды.

Сопоставление скобок и скобок, чтобы ваш код оставался упорядоченным.

Текст с цветовой кодировкой для различения команд, данных, комментариев и т. д.

Возможность сохранять ваши команды в файл. Это позволяет вам экспериментировать с командами и сохранять вашу работу.

Пункт меню для загрузки и запуска командных сценариев Tcl из файлов.

Поддержка открытия нескольких новых дисплеев tkcon.

Обратите внимание, что хотя tkcon поддерживает отладку сценариев Tcl/Tk, с ним проще работать, чем с интерактивным интерпретатором желаний, его можно использовать для вызова сценариев желаний, и он более мощный, чем интерпретатор команд Windows, tkcon не справляется с этой задачей. с программами, использующими стандартный ввод для чтения пользовательского ввода. Он предназначен для помощи в разработке сценариев Tcl и для выполнения неинтерактивных или ориентированных на графический интерфейс исполняемых файлов, а не в качестве замены консоли DOS или окна xterm.

Создание доски сообщений с помощью ADO и XML

Проектирование класса User

Существует четыре основных типа пользователей: гости, зарегистрированные пользователи, администраторы и модераторы. Все это должно быть представлено, когда мы создаем наш класс User. Опять же, вы можете сказать что-то вроде «но это объектно-ориентированное приложение, и если у нас есть несколько типов одного объекта, разве они не должны быть отдельными?» Опять же, вы были бы правы. Есть три типа пользователей. Все они имеют схожие свойства; единственная разница в том, что некоторые делают определенные вещи, которые другие не могут. Например, зарегистрированный пользователь на доске объявлений будет иметь возможность публиковать темы и сообщения, а гость - нет. Зарегистрированный пользователь также будет иметь возможность редактировать свой профиль и свои сообщения, в то время как гостевой пользователь не сможет этого сделать. Администратор будет иметь возможность делать все, что может зарегистрированный пользователь, за исключением глобального. Модератор может изменять сообщения и обсуждения на форумах, на которые у него есть права модератора.

Теперь, когда мы определили несколько типов пользователей, нам нужно определить, должны ли мы иметь несколько типов пользователей в нашем приложении. Гость может просматривать только доску объявлений, так как для просмотра не требуется никаких мер безопасности. Зарегистрированный пользователь может создавать и редактировать сообщения, а также изменять свой профиль. Администратор может делать с доской объявлений все, что захочет. Модератор может делать то же, что и зарегистрированный пользователь, и может действовать как администратор на доске, на которую ему или ей предоставлены права модерации.

Возможно, вы захотите создать здесь несколько изящных объектно-ориентированных объектов, но все это можно выполнить с помощью одного класса User. Взгляните на рис. 13.9.

Рисунок 13.9. Диаграмма объектов Пользователь

Вы видите, что наш объект Пользователь будет иметь те же поля, что и наша таблица базы данных, которая называется точно так же. Это немного облегчает запоминание того, какое поле в объекте соответствует какому полю в базе данных. Еще одна вещь, на которую следует обратить внимание, — это три элемента в нижней части диаграммы: Создать, Проверить и Обновить. Все это методы объекта User. Update() обновит данные пользователя и сохранит их в базе данных. Validate — это общий метод класса User, который может использоваться для выполнения всех проверок пользователей. Create также является общим методом и может использоваться для создания нового пользователя в базе данных.

Вот и все. Это весь объект User. Не так уж и много? У него есть логическое поле, указывающее, является ли он администратором, и каждый объект Доски будет хранить идентификатор администратора этой Доски, поэтому объекту Пользователь это не нужно. Единственное, что еще следует упомянуть, это гостевые пользователи — гостевой пользователь будет просто Пользователем, который Ничего не значит. То есть, если вы в настоящее время являетесь гостем в приложении, для вас не будет создан объект Пользователь. Давайте взглянем на код, используемый для создания этого объекта User на рис. 13.10 (который также можно найти на компакт-диске с именем User.vb).

Рисунок 13.10. Основы (User.vb)

Эта часть достаточно ясна. Мы объявляем класс User и частные переменные, необходимые для представления каждого пользователя. Затем объявите общедоступные свойства для каждой из этих частных переменных, как показано на рис. 13.11.

Читайте также: