Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C# Лекция_1 Язык программирования и среда разра....docx
Скачиваний:
54
Добавлен:
18.12.2018
Размер:
1.81 Mб
Скачать
    1. Решение (Solution)

Каждый проект, создаваемый в Visual Studio 2008, помещается в некоторую оболочку, называемую Решением - Solution. Решение может содержать несколько проектов, как правило, связанных общей темой. Например, все проекты, рассматриваемые в одной лекции курса, я мог бы поместить в одно Решение. В наших примерах зачастую Решение будет содержать три проекта: DLL с классами, определяющими содержательную сторону приложения, и два интерфейсных проекта - консольный и Windows.

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

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

  1. Пример

Один из принципов, которых я придерживаюсь при написании курсов по программированию, состоит в том, что в таких курсах программный код должен составлять существенную часть текста. Этот код следует читать и изучать не менее внимательно, чем обычный текст. Зачастую он говорит больше, чем рассуждения автора. Поэтому и данная лекция заканчивается примером, который иллюстрирует основные понятия, введенные в лекции. Я отказался от традиции начинать с классического приложения "Здравствуй, мир!". Для первого рассмотрения наш пример будет достаточно сложным: мы построим Решение, содержащее три проекта - проект DLL, консольный проект и Windows-проект.

    1. Постановка задачи

Начну с описания содержательной постановки задачи. Вначале некоторая преамбула. В системе типов языка C# есть несколько типов, задающих различные подмножества арифметического типа данных - int, double и другие. Для значения x любого из этих типов хорошо бы уметь вычислять математические функции - , и другие. Встраивать вычисление этих функций в каждый из классов, задающих соответствующий арифметический подтип, кажется неразумным. Поэтому в библиотеку FCL включен класс Math, методы которого позволяют вычислять по заданному аргументу нужную математическую функцию. Класс Math является примером статического класса, играющего единственную роль - роль модуля. У этого класса нет собственных данных, если не считать двух математических констант - и , а его методы являются сервисами, которые он предоставляет другим классам.

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

(1.1)

Детали вычислений, использующих формулу 1.1, отложим на момент реализации. А пока продолжим уточнять цель нашего примера. Итак, мы хотим построить DLL, содержащей класс, являющийся аналогом класса Math из библиотеки FCL. Затем мы хотим построить консольный проект, позволяющий провести тестирование корректности вычислений функций построенного нами класса. Затем мы построим Windows-проект, интерфейс которого позволит провести некоторые интересные исследования. Все три проекта будут находиться в одном Решении.