Задания для выполнения работы

Лабораторная работа № 1 – Основы построения классов

Цель работы

 

Изучить основные принципы разработки классов в C# и получить представление о взаимосвязи классов с формами.

 

Порядок выполнения работы

- прочесть краткие теоретические сведения;

- выполнить задания раздела;

- составить отчет по лабораторной работе и защитить его у преподавателя.

Теоретическая часть

Основные понятия класса

Весь активный процесс C#-программы происходит в пределах класса. Класс является основой для создания объектов. В классе определяют данные и код, который работает с этими данными. Объекты являются экземплярами класса. Непосредственно инициализация переменных в объекте (переменных экземпляра) происходит в конструкторе. В классе могут быть определены несколько конструкторов, то есть класс является набором проектов, которые определяют, как строить объект.

 

Общий синтаксис класса

 

Класс – некоторый набор данных и методов. Классы играют основополагающую роль в языке программирования C#. Они нужны для объединения однотипных функций (или функций для работы с определёнными абстракциями) в совокупности. Это удобно для быстрого и эффективного наращивания функционала программы.

Общий синтаксис класса:

[ атрибуты ] [ спецификаторы ] class имя класса [ : предки ] тело класса

 

 

Разработка приложения Windows Forms

 

1) Нажать Файл -> Создать -> Проект, в появившемся окне выбрать “Приложение Windows Forms”, ввести имя проекта.

2) В форме Form1 разместить четыре элемента TextBox, один элемент GroupBox, Один элемент Button, три элемента Label.

3) Сгруппировать элементы так, как показано на рисунке 2, изменить значение поля Text элемента GroupBox1 на «Информация», сменить значение поля Name элементов TextBox1, TextBox2, TextBox3 на NameBox, AgeBox, ProfessionBox и ResultBox соответственно. Сменить значение поля Name элемента Button1 на StartButton

4) Поместить Элементы NameBox, AgeBox, ProfessionBox в GroupBox1, подписать их с помощью элементов Label1, Label2 и Label3(сменив значение поля Text элементов Label). Элемент ResultBox перевести в режим MultiLine (рисунок 2).

5) Значение поля Text элемента StartButton сменить на «Добавить».

Рисунок 2

Разработка класса Person

 

1) В окне Обозревателя Решений щелкнуть правой кнопкой по имени проекта, затем Добавить -> Класс. В появившемся окне ввести имя класса (Person) и нажать кнопку Добавить (см. рисунок 3).

Рисунок 3

2) Объявить переменные name и profession типа string и переменную age типа integer:

string name;

int age;

string profession;

3) Объявить конструктор класса Person, который будет принимать значение поля name:

public Person(string name)

{

this.name = name;

}

4) Перегрузить этот конструктор для различных параметров, которые могут передаваться при создании экземпляра класса.

Пример конструктора, принимающего значения полей name и age:

public Person(string name, int age)

{

     this.name = name;

this.age = age;

}

Пример конструктора, принимающего значения полей name и profession:

public Person(string name, string profession)

{

this.name = name;

this.profession = profession;

}

Пример конструктора, принимающего значения полей name, age и profession:

public Person(string name, int age, string profession)

{

this.name = name;

this.age = age;

this.profession = profession;

}

 

Взаимосвязь класса с формой

 

1) Дважды щелкнуть по элементу StartButton, откроется код обработчика события нажатия кнопки

private void button1_Click(object sender, EventArgs e)

2) Объявить экземпляр класса Person, не вызывая при этом конструктор (необходимо, чтобы работать с объектом впоследствии, вызывая различные перегрузки конструктора для конкретной ситуации):

Person new_person;

3) Реализовать проверку на наличие текста в NameBox, если текста нет, то выводим сообщение пользователю путем создания диалогового окна MessageBox .

if (NameBox.Text == "")

{

MessageBox.Show("Введите имя");

­}

4) Реализовать конструкцию из условий, проверяющих либо наличие, либо отсутствие текста в элементах управления TextBox, в результате выполнения условий, явно вызывать одну из перегрузок конструктора класса Person:

if (AgeBox.Text != "")

{

if (ProfessionBox.Text != "")

{

new_person = new Person(NameBox.Text, Convert.ToInt32(AgeBox.Text), ProfessionBox.Text);

}

else

{

new_person = new Person(NameBox.Text, Convert.ToInt32(AgeBox.Text));

}

}

else

{

if (ProfessionBox.Text != "")

{

new_person = new Person(NameBox.Text, 0,ProfessionBox.Text);

}

else

{

new_person = new Person(NameBox.Text);

}

}

 

Вывод результатов

 

1) Для вывода результатов работы программы, необходимо использовать метод GetInformation() класса Person, задача которого будет выводить строку, в которой будет содержаться текущая информация об экземпляре класса: поля name, age, profession (см. рисунок 4).

public string GetInformation()

{

string information;

information = "Имя: " + this.name + "; Возраст: " + this.age.ToString() + ";    Профессия: " + this.profession;

return information;

}

 

Синтаксис в коде:

 ResultBox += new_person.GetInformation();

 

Рисунок 4

 

Задания для выполнения работы

 

    Каждый разрабатываемый класс должен, как правило, содержать следующие элементы: скрытые поля, конструкторы с параметрами и без параметров, методы, свойства. Методы и свойства должны обеспечивать непротиворечивый, полный, минимальный и удобный интерфейс класса. При возникновении ошибок долж­ны выбрасываться исключения.

В программе должна выполняться проверка всех разработанных элементов класса.

Вариант 1

Описать класс, реализующий десятичный счетчик, который может увеличивать или уменьшать свое значение на единицу в заданном диапазоне. Предусмотреть инициализацию счетчика значениями по умолчанию и произвольными значе­ниями. Счетчик имеет два метода: увеличения и уменьшения, — и свойство, по­зволяющее получить его текущее состояние. При выходе за границы диапазона выбрасываются исключения.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 2

Описать класс, реализующий шестнадцатеричный счетчик, который может увели­чивать или уменьшать свое значение на единицу в заданном диапазоне. Преду­смотреть инициализацию счетчика значениями по умолчанию и произвольными значениями. Счетчик имеет два метода: увеличения и уменьшения, — и свойство,

позволяющее получить его текущее состояние. При выходе за границы диапазо­на выбрасываются исключения.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 3

Описать класс, представляющий треугольник. Предусмотреть методы для созда­ния объектов, перемещения на плоскости, изменения размеров и вращения на заданный угол. Описать свойства для получения состояния объекта. При невоз­можности построения треугольника выбрасывается исключение.

Написать программу, демонстрирующую все разработанные элементы класса.

 

Вариант 4

Построить описание класса, содержащего информацию о почтовом адресе орга­низации. Предусмотреть возможность раздельного изменения составных частей адреса и проверки допустимости вводимых значений. В случае недопустимых значений полей выбрасываются исключения.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 5

Составить описание класса для представления комплексных чисел. Обеспечить выполнение операций сложения, вычитания и умножения комплексных чисел.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 6

Составить описание класса для вектора, заданного координатами его концов в трех­мерном пространстве. Обеспечить операции сложения и вычитания векторов с получением нового вектора (суммы или разности), вычисления скалярного произведения двух векторов, длины вектора, косинуса угла между векторами.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 7

Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плос­кости, изменение размеров, построение наименьшего прямоугольника, содер­жащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 8 

                               

Составить описание класса для представления даты. Предусмотреть возможности установки даты и изменения ее отдельных полей (год, месяц, день) с проверкой допустимости вводимых значений. В случае недопустимых значений полей вы­брасываются исключения. Создать методы изменения даты на заданное количе­ство дней, месяцев и лет.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 9

Составить описание класса для представления времени. Предусмотреть возмож­ности установки времени и изменения его отдельных полей (час, минута, секун­да) с проверкой допустимости вводимых значений. В случае недопустимых зна­чений полей выбрасываются исключения. Создать методы изменения времени на заданное количество часов, минут и секунд.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 10

Составить описание класса многочлена вида ах2 + bх + с. Предусмотреть мето­ды, реализующие:

- вычисление значения многочлена для заданного аргумента;                

- операцию сложения, вычитания и умножения многочленов с получением но­вого объекта-многочлена;

- вывод на экран описания многочлена.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 11

Описать класс, представляющий треугольник. Предусмотреть методы для созда­ния объектов, вычисления площади, периметра и точки пересечения медиан. Описать свойства для получения состояния объекта. При невозможности по­строения треугольника выбрасывается исключение.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 12

Описать класс, представляющий круг. Предусмотреть методы для создания объ­ектов, вычисления площади круга, длины окружности и проверки попадания за­данной точки внутрь круга. Описать свойства для получения состояния объекта.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 13

Описать класс для работы со строкой, позволяющей хранить только двоичное число и выполнять с ним арифметические операции. Предусмотреть инициали­зацию с проверкой допустимости значений. В случае недопустимых значений выбрасываются исключения.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 14

Описать класс дробей — рациональных чисел, являющихся отношением двух целых чисел. Предусмотреть методы сложения, вычитания, умножения и деления дробей.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 15

Описать класс «файл», содержащий сведения об имени, дате создания и длине файла. Предусмотреть инициализацию с проверкой допустимости значений по­лей. В случае недопустимых значений полей выбрасываются исключения. Опи­сать метод добавления информации в конец файла и свойства для получения со­стояния файла.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 16

Описать класс «комната», содержащий сведения о метраже, высоте потолков и количестве окон. Предусмотреть инициализацию спроверкой допустимости значений полей. В случае недопустимых значений полей выбрасываются исклю­чения. Описать методы вычисления площади и объема комнаты и свойства для получения состояния объекта.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 17

Описать класс, представляющий нелинейное уравнение вида ах - cos(x) = 0. Опи­сать метод, вычисляющий решение этого уравнения на заданном интервале ме­тодом деления пополам (см. раздел «Цикл с параметром for») и выбрасывающий исключение в случае отсутствия корня. Описать свойства для получения состоя­ния объекта.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 18

Описать класс, представляющий квадратное уравнение вида ах2 + bх + с = 0. Опи­сать метод, вычисляющий решение этого уравнения и выбрасывающий исключение в случае отсутствия корней. Описать свойства для получения состояния объекта.

Написать программу, демонстрирующую все разработанные элементы класса.

Вариант 19

Описать класс «процессор», содержащий сведения о марке, тактовой частоте, объеме кэша и стоимости. Предусмотреть инициализацию с проверкой допусти­мости значений полей. В случае недопустимых значений полей выбрасываются исключения. Описать свойства для получения состояния объекта. Описать класс «материнская плата», включающий класс «процессор» и объем установленной оперативной памяти. Предусмотреть инициализацию с про­веркой допустимости значений поля объема памяти. В случае недопустимых значений поля выбрасывается исключение. Описать свойства для получения со­стояния объекта.

Написать программу, демонстрирующую все разработанные элементы классов.

 

Вариант 20

Описать класс «цветная точка». Для точки задаются координаты и цвет. Цвет описывается с помощью трех составляющих (красный, зеленый, синий). Преду­смотреть различные методы инициализации объекта с проверкой допустимости значений. Допустимым диапазоном для каждой составляющей является [0, 255]. В случае недопустимых значений полей выбрасываются исключения. Описать свойства для получения состояния объекта и метод изменения цвета.

Написать программу, демонстрирующую все разработанные элементы класса.

 


Дата добавления: 2018-06-01; просмотров: 1647; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!