
- •Введение
- •Список вопросов, рассматриваемых в модуле 1.
- •Продемонстрированные в приложении особенности
- •Пример Mod1Ex4 (Инкапсуляция, обработка ошибок, наследование) Постановка задачи
- •Продемонстрированные в приложении особенности
- •Пример Mod1Ex5 (Полиморфизм)
- •Продемонстрированные в приложении особенности
- •Список вопросов, рассматриваемых в модуле 2.
- •Описание модельных примеров модуля 2. Пример Mod2Ex1 Постановка
- •Листинги примеров Пример Mod1Ex1
- •Пример Mod1Ex2
- •Пример Mod1Ex3
- •Пример Mod1Ex4
- •Пример Mod2Ex1
- •Пример Mod2Ex2
- •Пример Mod2Ex3
Методическое пособие к лабораторным работам по курсу "Программное обеспечение ЭВМ" для студентов 2 курса прикладного отделения
Оглавление
Введение 2
Список вопросов, рассматриваемых в модуле 1. 2
Описание модельных примеров модуля 1. 3
Пример Mod1Ex1 3
Пример Mod1Ex2 3
Пример Mod1Ex3 (композиционное взаимодействие объектов двух классов) 4
Пример Mod1Ex4 (Инкапсуляция, обработка ошибок, наследование) 5
Пример Mod1Ex5 (Полиморфизм) 6
Список вопросов, рассматриваемых в модуле 2. 6
Описание модельных примеров модуля 2. 7
Пример Mod2Ex1 7
Пример Mod2Ex2 8
Пример Mod2Ex3 8
Листинги примеров 9
Пример Mod1Ex1 9
Пример Mod1Ex2 10
Пример Mod1Ex3 11
Пример Mod1Ex4 13
Пример Mod2Ex1 14
Пример Mod2Ex2 15
Пример Mod2Ex3 17
Введение
Учебный материал по данной дисциплине имеет структуру, состоящую из двух модулей. Успешное освоение теоретического материала опирается на серию лабораторных заданий, которые заключаются в разработке приложений, демонстрирующих те или иные теоретические особенности. В соответствии с этим предлагаемое пособие для каждого из двух модулей содержит:
1. Перечень теоретических вопросов.
2. Перечень лабораторных заданий, включая постановку задачи и особенности, которые необходимо продемонстрировать в реализации.
3. Листинги (исходный код) решения каждой лабораторной задачи.
Список вопросов, рассматриваемых в модуле 1.
Общее описание и роль .NET.
Понятие платформы разработки и роль .NET. Классы и пространства имен. Структура программы на языке C#. Анализ простой программы на языке C#. Основные практические приемы работы в Visual Studio. Структура проекта Visual Studio. Стандартные и собственные пространства имен. Использование класса Console.
Особенности языка C#
Полноценный логический тип данных. Оператор Switch. Строковый тип данных. Явные и неявные преобразования типов. Цикл foreach.
Приемы использования популярных классов
Классы, Console, Convert, Math, String и Random.
Структуры и классы.
Эволюция от структур к классам. Классы и объекты. Синтаксис описания классов. Значимые и ссылочные переменные. Время жизни и область видимости переменных. Проблема утечки памяти, сборщик мусораOut- и ref- параметры. Конструкторы классов. Ключевое слово this. Статические элементы классов.
Массивы в языке C#
Особенности использования массивов. Разновидности многомерных массивов. Классы ArrayList и List. Приведение и преобразование типов.
Основные приемы использования файлового ввода вывода.
Классы пространства System.IO. Чтение и запись в текстовый файл. Чтение и запись в бинарный файл. Мспользование классов Stream, FileInfo и DirInfo.
Инкапсуляция. Техника обработки исключительных ситуаций.
Понятие и назначение инкапсуляции. Свойства. Индексаторы. Специализированные методы. Основные приемы обработки исключительных ситуаций.
Наследование
Базовые и производные классы. Управление наследованием с помощью ключевого слова base. Множественное наследование. Модификатор доступа protected. Запрет наследования.
Основы языка UML.
Статические диаграммы классов. Спецификация отношений между классами. Композиция, использование, наследование.
Полиморфизм
Определение полиморфизма. Ключевые слова new и override. Типичные ситуации возникновения и использования полиморфизма. Абстрактные классы. Принудительный полиморфизм.
Интерфейсы
Интерфейсы, их роль. Синтакис определения интерфейсов. Реализация интерфейсов как контракт. Сравнение интерфейсов и абстрактных классов. Проблемы вызова членов интерфейса на уровне объекта. Ключевые слова is и as. Интерфейсы в качестве параметров и возвращаемых значений. Массивы интерфейсных типов. Явная реализация интерфейса. Разрешение конфликтов имен.
Встроенные интерфейсы .NET.
Стандартные интерфейсы IEnumerable и IEnumerator. Стандартный интерфейс IClonable. Стандартные интерфейсы IComparable и IComparer.
Описание модельных примеров модуля 1.
Пример Mod1Ex1
Постановка задачи
Пользователь вводит с клавиатуры имя текстового файла. Если такого файла нет, программа дает возможность ввести имя файла повторно. Если такой файл есть, программа выводит на экран количество гласных и согласных букв (латинского алфавита) в содержимом файла.
Продемонстрированные в приложении особенности
Структура приложения – один класс с несколькими статическими методами. Метод Main решает задачу, вызывая другие методы.
Использование конструкции try-catch для обработки исключительной ситуации.
Использование класса StreamReader для чтения содержимого текстового файла.
Использование класса List<тип> для хранения коллекции объектов неизвестного размера.
Использование встроенных возможностей массивов для простого анализа содержимого текста. Метод Contains.
Пример Mod1Ex2
Постановка задачи
Приложение отображает на консоли несколько прямоугольников со случайными размерами. Пример работы приложения:
Продемонстрированные в приложении особенности
Структура приложения – один класс с несколькими статическими методами. Метод Main решает задачу, вызывая другие методы.
Использование стандартных возможностей класса Random.
Управление курсором вывода при использовании класса Console.
Пример Mod1Ex3 (композиционное взаимодействие объектов двух классов)
Постановка задачи
Промоделировать посещение кафе клиентами.
Для этого определить два класса - Клиент (CafeClient) и Кафе (Cafe).
Класс Клиент - хранит имя и количество имеющихся денег.
Методы:
- конструктор с параметрами для имени и денег.
- логический метод "Сделать заказ" (MakeOrder) с параметром - суммой заказа. Если у клиента достаточно денег, чтобы сделать заказ, то количество его денег уменьшается на сумму заказа и метод возвращает "истина". В противном случае метод возвращает "ложь".
- метод ToString, возвращающий строку, содержащую имя и количество денег клиента.
Класс Кафе - хранит массив мест. Каждое место предназначено для хранения ссылки на объект "Клиент".
Методы:
- конструктор с параметром - количеством мест в кафе.
- метод "Принять заказ" (TakeOrder) - осуществляет обслуживание заказа, сделанного клиентом, сидящим на месте, номер которого является параметром этого метода. Этот метод вызывает метод MakeOrder класса Client с суммой заказа - случайным числом от 10 до 100. Если клиент не может расплатиться за сделанный заказ, он покидает кафе.
- логический метод "Принять клиента" (TakeClient) с параметром - объектом Client. Если в кафе имеется свободное место, метод "усаживает" туда клиента и возвращает "истину", в противном случае - ложь.
- логический метод HasEmptyPlaces, определяющий, имеются ли в кафе свободные места.
- метод ToString, возвращающий строку с информацией обо всех занятых местах. Для наглядности после каждого фрагмента, соответствующего одному месту, в возвращаемую строку вставлять символ '\n'. Этот метод может использовать метод ToString класса Client.
В методе Main главной программы (класс Program):
- создать массив из 10 клиентов с именами client1, client2,...,client10
и начальной суммой денег - случайным числом от 20 до 200.
- создать кафе из 5 мест;
- попытаться усадить всех клиентов в кафе (достанется место только пятерым);
- показать состояние кафе;
- заставить клиента за первым местом делать заказ до тех пор, пока у него не закончаться деньги и он вынужден будет покинуть кафе;
- показать состояние кафе;
- принять в кафе последнего клиента из массива;
- показать состояние кафе.