- •Лабораторная работа 1. Создание программы с помощью среды разработки Visual Studio.NET
- •Упражнение 1. Создание простой программы в текстовом редакторе
- •Упражнение 2. Создание программы с помощью среды разработки Visual Studio .NET
- •Упражнение 3. Использование отладчика Visual Studio .NET
- •Упражнение 4. Добавление в C#-программу обработчика исключительных ситуаций
- •Упражнение 4. Реализация структуры Point
- •Лабораторная работа 2. Создание и использование размерных типов данных
- •Упражнение 1. Использование встроенных размерных типов
- •Упражнение 2. Создание перечисления
- •Упражнение 3. Создание и использование структуры
- •Лабораторная работа 3. Использование выражений
- •Упражнение 1. Реализация операторов выбора
- •Задание 1. Применение конструкции if-else-if
- •Задание 2. Применение оператора switch
- •Задание 3. Определение високосного года
- •Упражнение 2. Реализация циклов при работе с массивами размерных типов
- •Задание 1. Использование операторов цикла while, do while и for.
- •Задание. 2. Использование двух счетчиков при реализации цикла
- •Задание 3. Расчет суммы, используя операторы перехода
- •Задание 4. Стрельба по мишени
- •Лабораторная работа 4. Создание и использование методов
- •Упражнение 1. Использование параметров в методах, возвращающих значения
- •Упражнение 2. Использование в методах параметров, передаваемых по ссылке
- •Упражнение 3. Использование возвращаемых параметров в методах
- •Лабораторная работа 5. Реализация класса
- •Упражнение 1. Разработка класса Book
- •Упражнение 2. Использование конструкторов
- •Упражнение 3. Реализация класса Triangle
- •Лабораторная работа 6. Создание иерархии классов
- •Упражнение 1. Реализация наследования классов
- •Упражнение 2. Использование конструкторов
- •Упражнение 3. Переопределение методов
- •Упражнение 4. Применение абстрактного класса и абстрактных методов
- •Упражнение 5. Реализации модели включения/делегации
- •Лабораторная работа 7. Использование интерфейсов при реализации иерархии классов
- •Упражнение 1. Создание и реализация интерфейса
- •Упражнение 2. Использование стандартных интерфейсов
- •Упражнение 3. Создание иерархии классов «Фигуры»
- •Лабораторная работа 8. Применение делегатов и событий
- •Упражнение 1. Использование делегата при вызове метода
- •Упражнение 2. Работа с событиями
- •Задание на самостоятельную работу. Иерархия классов учебного центра
Лабораторная работа 5. Реализация класса
Упражнение 1. Разработка класса Book
В этом упражнении Вы создадите класс Book с соответствующими полями (автор или авторы, название, год издания и стоимость аренды за книгу) и методами.
Создайте проект |
|
|
Создайте проект MyClass.sln в папке install folder\Labs\Lab05\. |
|
|
Добавьте в проект новый класс с именем Book: Projects (Проект) |
Add |
|
class (Добавить класс). |
|
|
Реализуйте класс Book |
|
|
Добавьте в класс закрытые поля: |
|
|
private String author; |
// автор |
|
private String title; |
// название |
|
private String publisher; |
// издательство |
|
private int pages; |
// кол-во страниц |
|
private int year; |
// год издания |
|
Добавьте в класс статическое поле, которое определяет стоимость аренды за любую книгу:
private static double price = 9;
Реализуйте метод, устанавливающий значения характеристик книги:
public void SetBook(String author, String title, String publisher, int pages, int year)
{
this.author = author; this.title = title; this.publisher = publisher; this.pages = pages; this.year = year;
}
Реализуйте статический метод устанавливающий стоимость аренды, так как статическое поле будет существовать в единственном экземпляре для всех объектов класса, обращаются к нему не через имя экземпляра, а через имя
класса:
public static void SetPrice(double price)
{
Book.price = price;
}
Реализуйте метод, выводящий на экран информацию о книге: public void Show()
{
Console.WriteLine("\nКнига:\n Автор: {0}\n Название: {1}\n
Год издания: {2}\n {3} стр.\n Стоимость аренды: {4}", author, title, year, pages, Book.price);
22
}
Реализуйте метод, определяющий стоимость аренды за указанное количество суток:
public double PriceBook(int s)
{
double cust = s * price; return cust;
}
Протестируйте работу класса Book
Откройте класс Program.
В методе Main создайте отрезок – объект класса Book:
Book b1 = new Book();
Вызовите метод для инициализации книги:
b1.SetBook("Пушкин А.С.", "Капитанская дочка", "Вильямс",
123, 2012);
С помощью статического метода установите стоимость аренды книги:
Book.SetPrice(12);
Вызовите метод для вывода информации о книге: b1.Show();
Отобразите на экране стоимость аренды за книгу в течении трех суток:
Console.WriteLine("\n Итоговая стоимость аренды: {0} p.", b1.PriceBook(3));
Постройте проект и исправьте ошибки, если это необходимо. Запустите программу. Сравните реализацию и использование статического метода и метода экземпляра.
Упражнение 2. Использование конструкторов
В этом упражнении Вы добавите конструкторы для инициализации объекта. Конструктор экземпляра вызывается автоматически при создании объекта класса с помощью операции new, причем имя конструктора совпадает с именем класса. Также Вы будете использовать статический конструктор для инициализации статического поля класса.
Добавьте конструктор экземпляра для инициализации полей объекта
Откройте файл Book.cs.
Добавьте в класс Book конструктор, который инициализирует все поля
объекта:
public Book(String author, String title, String publisher, int pages, int year)
{
this.author = author; this.title = title; this.publisher = publisher; this.pages = pages; this.year = year;
23
}
Проверьте, что в окне ошибок появилось сообщение об ошибке: класс не содержит конструктор, который принимает аргументы “0”. Это объясняется тем, что попытка объявления любого варианта конструктора приводит к тому, что транслятор перестает заниматься построением собственных версий конструкторов и вызов конструктора по умолчанию (Book b1 = new Book();) приведет к ошибке.
Добавьте конструктор по умолчанию:
public Book ()
{}
В методе Main создайте новую книгу, при этом будет вызван конструктор с параметрами:
Book b2 = new Book("Толстой Л.Н.", "Война и мир", "Наука и жизнь", 1234, 2013);
Вызовите метод для вывода информации о новой книге: b2.Show();
Постройте проект и исправьте ошибки, если это необходимо. Запустите программу. Обратите внимание на значение поля “Стоимость аренды в сутки”.
Добавьте статический конструктор
Статический конструктор автоматически вызывается системой до первого обращения к любому элементу класса, выполняя необходимые действия по инициализации.
Добавьте в класс Book статический конструктор, который инициализирует статическое поле класса:
static Book() |
//статический конструктор |
{ |
|
price = 10; |
|
} |
|
Постройте проект и исправьте ошибки, если это необходимо. Запустите программу. Обратите внимание на значение поля “Стоимость аренды в сутки”.
Используйте перегрузку конструкторов
Можно задать в классе несколько конструкторов, чтобы обеспечить возможность инициализации объектов разными способами. Добавьте в класс Book конструктор, который задает только автора и название, а остальные
поля получат свои значения благодаря конструктору по умолчанию: public Book(String author, String title)
{
this.author = author; this.title = title;
}
В методе Main создайте объект, передав в качестве параметров значения автора и названия книги:
24
