Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Упражнения_Лабораторные_C#.pdf
Скачиваний:
273
Добавлен:
21.03.2016
Размер:
1 Мб
Скачать
☆

Лабораторная работа 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