- •Лабораторная работа 1 Классы. Наследование. Обработка исключений в с#
- •Задания к лабораторной работе
- •Краткие теоретические сведения
- •Пользовательские типы данных в с#
- •[Атрибуты][модификаторы]enum имя_перечисления [: базовый класс] {список_возможных_значений}
- •[Атрибуты][модификаторы]struct имя_структуры [:список_интерфейсов] {тело_структуры}
- •[Атрибуты][модификаторы]class имя_класса [:список_родителей] {тело_класса}
- •Индексатор. Обеспечивает доступ к закрытому полю, представляющему массив. Объекты класса индексируются по этому полю. У класса может быть только один индексатор со стандартным именем this.
- •Две стратегии реализации интерфейса. Опишем некоторый интерфейс, задающий дополнительные свойства объектов класса:
- •1. Коллизия имен
- •2. Наследование от общего предка
Лабораторная работа 1 Классы. Наследование. Обработка исключений в с#
Цель работы:
познакомится с пользовательскими типами данных в языке С#: структура и перечисление;
ознакомиться со структурой класса, его созданием и использованием, описанием членов класса: полей, свойств, инициализации объектов класса с помощью конструкторов;
изучить механизм создания иерархий классов в С# и применение интерфейсов при наследовании;
изучить механизм генерации и обработки исключений.
Задания к лабораторной работе
Проработать примеры 1-6, данные в теоретических сведениях. Создать на их основе программы. Получить результаты работы программ и уметь их объяснить. Внести в отчет с комментариями.
Для заданной структуры данных разработать абстрактный класс и класс наследник. В классе реализовать несколько конструкторов. Создать методы, работающие с полями класса. Часть из них должны быть виртуальными. Добавить методы-свойства и индексаторы.
Разработать интерфейсные классы, добавляющие некоторые методы в класс-потомок. Изучить причины возникновения коллизий имен при наследовании и способы устранения.
Разработать классы исключительных ситуаций и применить их для обработки, возникающих исключений.
Написать демонстрационную программу.
Описания данных пользовательских типов:
1. СЛУЖАЩИЙ: имя, возраст, рабочий стаж, список должностей.
2. ИЗДЕЛИЕ: название, шифр, количество, комплектация.
3. ПЕЧАТНОЕ ИЗДАНИЕ: название, ФИО автора, стоимость, оглавление.
4. ЭКЗАМЕН: ФИО студента, дата, оценка, перечень вопросов.
5. ТОВАР: название, артикул, стоимость, даты (изготовление, срок реализации)
6. ЦЕХ: название, начальник, кол-во рабочих, перечень номенклатуры выпускаемых изделий.
7. АВТОМОБИЛЬ: марка, мощность, стоимость, даты ремонта.
8. СТРАНА: название, форма правления, площадь, список областей.
9. ЖИВОТНОЕ: вид, класс, средний вес, места обитания.
10. КОРАБЛЬ: название, водоизмещение, тип, список категорий кают.
11. КАРТИНА: ФИО автора, название, жанр, список владельцев.
12. МУЗЕЙ: Название, адрес, ФИО директора, кол-во и названия залов.
13. КНИГА: Название, жанр, кол-во страниц, список авторов.
Краткие теоретические сведения
Для создания нового проекта C# заходим в меню Файл и далее выбираем Создать, Проект. В появившемся окне Создать проект слева выбираем Visual C#, а справа тип приложения – Консольное приложение. Дайте имя проекту - ConsoleHello, укажите, где будет храниться проект.
Главное окно редактора кода, в котором отображается программный код, хранимый в файле ConcoleHello.cs изображен на рис. 1.1. Ниже главного окна расположены окна вывода (Error List, Output), в которых выводится вся служебная информация.
В правой части окна находится Обозреватель решения, где показывается список файлов, содержащийся в "решении", которое, может состоять из нескольких "проектов”. Вкладки вверху главного окна позволяют легко перемещаться от одного открытого файла к другому.
Рисунок 1.1 - Консольный проект в Visual Studio NET
Добавим в проект код:
namespace ConsoleHello { // создаваемое пространство имен
class Program { // имя класса по умолчанию
static void Main(string[] args) { // главная функция, начало работы программы
// вывод строки на экран
Console.WriteLine("Введите Ваше имя");
string name;
name = Console.ReadLine(); // ввод строки с клавиатуры
if (name == "") Console.WriteLine("Здравствуй, мир!");
else Console.WriteLine("Здравствуй, " + name + "!");
}
} }