Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
с использванием конструкторов, позволяющим задавать значения свойствам класса с полей формы
поля:
· имя;
· возраст;
· вес,
· настроение (начальное значение=10).
методы:
· «информация о человеке»; отображаются имя, возраст и вес.
· «есть»: если человек что-то съедает, то его вес увеличивается на количество съеденного. Усовершенствуйте метод «есть» так, чтобы при съедании за один раз более 5 кг, его возраст увеличивался бы на год, а вес увеличивалсябы только на половину от съеденного.
· «гулять» настроение увеличивается на 1.
· «танцевать» настроение увеличивается на 2. Дополните основную программу так, что бы человек после еды три раза потанцевал.
Решение
Код
public partial class Form1: Form
{
public Form1()
{
InitializeComponent();
}
class Worker
{
public string name;
public int age;
public double ves;
public int nastr;
public Worker(string n, int a, double v) //параметризованный конструктор
{
name = n;
age = a;
ves = v;
nastr = 10;
}
public double SetEat(double e)
{
if (e> 10)
{
age++;
ves += e / 2;
}
else
ves += e;
return ves;
}
public void show() //метод " информация о человеке"
{
MessageBox.Show(String.Format(" Рабочий: {0} \nВозраст: {1} \nВес: {2} ",
name, age, ves));
}
public int tanez(int n)//метод " танцевать"
{
nastr = n + 2;
return nastr;
}
}
private void button1_Click(object sender, EventArgs e)
{
//строим объект
//вызываем конструктор
//конструктор устанавливает начальные значения объекта с полей формы
//поля формы задают параметры конструктора
Worker work = new Worker(textBox1.Text, int.Parse(textBox3.Text), double.Parse(textBox2.Text));
//вызываем метод " информация о человеке"
work.show();
//выводмим данные о человеке до еды
MessageBox.Show(String.Format(" До обеда Рабочий: {0} \nВозраст: {1} \nВес: {2} \nНастроение {3}",
work.name, work.age, work.ves, work.nastr));
//определяем с помомощью метода " есть" вес человека с учетом еды
double eda = work.SetEat(double.Parse(textBox4.Text));
//выводим данные о человеке с учетом еды
MessageBox.Show(String.Format(" После обеда Рабочий: {0} \nВозраст: {1} \nВес: {2}",
work.name, work.age, work.ves));
//выводим текущее настроение
MessageBox.Show(String.Format(" Настроение до танцев: {0}", work.nastr));
//танцуем 3 раза
work.nastr=int.Parse(textBox5.Text);
for (int i = 1; i < 4; i++)
{ int tan = work.tanez(work.nastr); }
//выводим текущее настроение
MessageBox.Show(String.Format(" Настроение после танцев: {0}", work.nastr));
}
}
}
Порядок выполнения работы
1. Создатьновыйпроект (File – New – Project – Windows Forms Application).Определить новое имя проекта (практика10-1) и место его расположения (X: \2 курс\ОАП\Практические работы\Практическая работа №12).
2. Разместить на форме необходимые компоненты и настроить их внешний вид.
3. Написать программу решения задачи с использованием классов. При решении использовать конструкторы и параметрические методы:
№
| Задача
|
| класс «комната»
поля:
· длина комнаты,
· ширина комнаты,
· высота потолков,
· количество окон,
· высота окна,
· ширина окна.
методы:
· « вычисление площади комнаты »;
· «вычисление объема комнаты»;
· «информация о комнате»;
· «ремонт»: Определить количество рулонов обоев, необходимое для ремонта данной комнаты. Предусмотреть работу с рулонами разной длины (10 м и 15 м).
|
| класс «автомобиль»
поля:
· объем бака (начальное значение этого поля установите прямо в классе);
· количество бензина в баке (начальное значение ноль);
· расход бензина на сотню (начальное значение установите в классе);
· пробег;
· год выпуска.
методы:
· «информация о машине»;
· «заправить машину»: при заправке, количество бензина в баке будет увеличиваться, но так, чтобы в машине не стало бензина больше, чем туда может поместиться физически. Если весь желаемый бензин поместился, то функция должна возвращать ноль. Если что-то не поместилось, то функция должна возвращать это значение.
· «ехать»: в качестве параметра нужно передавать количество километров. При езде бензин в баке должен уменьшаться, пробег - увеличиваться. Если бензин уже кончился, а до нужной точки еще не доехали, то надо выдать сообщение, сколько километров еще осталось. Если пробег пройдет порог очередной тысячи, то расход надо увеличивать на 10% и выводить об этом соответствующее сообщение. Усовершенствуйте метод «ехать» так, что бы после 5000 пробега машина не могла ехать вообще.
· «техосмотр»: уменьшает расход бензина на 0, 5.
· «надо ли заправляться»: метод будет возвращать значение истина, если в баке осталось меньше 10% бензина и ложь – в противном случае.
· «капитальный ремонт»: этот метод должен сбрасывать в ноль общий пробег.
|
| класс «покупатель»
поля:
· название покупаемого продукта;
· цена;
· количество;
· кошелек;
· настроение (начальное значение=10).
методы:
· «информация о покупке»; отображается название купленного продукта, его количество и стоимость покупки.
· «купить»: если человек что-то покупает, то стоимость покупки увеличивается, а наличность кошелька уменьшается. Усовершенствуйте метод «купить» так, чтобы выполнялась проверка: хватит ли денег в кошельке для совершения покупки. Кроме того, хотелось бывидеть, сколько денег осталось в кошельке после совершения покупки. Попробуйте догадаться: как изменить программу, чтобы можно было покупать несколько продуктов. Добавьте связь с настроением: если денег хватило на совершение покупки, то настроение увеличивается на 50% от суммы покупки, а если не хватило – то настроение уменьшается на количествоединиц, равное количеству денег, которых не хватило для совершения покупки.
· «посмотреть настроение» Отслеживайте само настроение:
- если настроение больше 15, то оно «бодрое»,
- если от 5 до 15, то – нормальное,
- если от -10 до 5, то – плохое,
- если меньше -10, то – депрессивное.
|
| Создать класс Point, разработав следующие элементы класса:
- Поля:
- int x, y; - задающие координаты точки на плоскости
- Конструкторы, позволяющие создать экземпляр класса:
- с нулевыми координатами;
i. с заданными координатами.
- Методы, позволяющие:
- вывести координаты точки на экран;
- рассчитать расстояние от начала координат до точки;
- переместить точку на плоскости на вектор (a, b).
- Свойства:
- получить-установить координаты точки (доступное для чтений и записи);
- позволяющие умножить координаты точки на скаляр (доступное только для записи).
|
| Создать класс Triangle, разработав следующие элементы класса:
- Поля:
- int a, b, c; -длины сторон треугольника
- Конструктор, позволяющий создать экземпляр класса с заданными длинами сторон.
- Методы, позволяющие:
- вывести длины сторон треугольника на экран;
- расчитать периметр треугольника;
- расчитать площадь треугольника.
- Свойства:
- позволяющее получить-установить длины сторон треугольника (доступное для чтения и записи);
- позволяющее установить, существует ли треугольник с данными длинами сторон (доступное только для чтения).
|
| Создать класс Rectangle, разработав следующие элементы класса:
- Поля:
i. int a, b; - длины строн прямоугольника;
- Конструктор, позволяющий создать экземпляр класса с заданными длинами сторон.
- Методы, позволяющие:
i. вывести длины сторон прямоугольника на экран;
ii. расчитать периметр прямоугольника;
iii. расчитать площадь прямоугольника.
- Свойства:
i. получить-установить длины сторон прямоугольника (доступное для чтения и записи);
ii. позволяющее установить, является ли данный прямоугольник квадратом (доступное только для чтения).
|
| Создать класс Money, разработав следующие элементы класса:
- Поля:
- int first; //номинал купюры
- int second; //количество купюр
- Конструктор, позволяющий создать экземпляр класса с заданными значениям полей.
- Методы, позволяющие:
- вывести номинал и количество купюр;
- определить, хватит ли денежных средств на покупку товара на сумму N рублей.
- определить, сколько шт товара стоимости n рублей можно купить на имеющиеся денежные средства.
- Свойства:
- позволяющее получить-установить значение полей (доступное для чтения и записи);
- позволяющее расчитатать сумму денег (доступное только для чтения).
|
| Создать класс для работы с двумерным массивом целых чисел. Разработать следующие элементы класса:
- Поля:
· int [, ] Int Array;
· int n.
- Конструктор, позволяющий создать массив размерности n× n.
- Методы, позволяющие:
- ввести элементы массива с клавиатуры;
- вывести элементы массива на экран;
- вычислить сумму элеметов i-того столбца.
- Свойства:
- позволяющее вычислить количество нулевых элементов в массиве (доступное только для чтения);
- позволяющее установить значение всех элементы главной диагонали массива равное скаляру (доступное только для записи).
| 4. Показатьрезультатысвоейработыпреподавателюисохранитьихксебенадиск X: \2курс\ОАП\Практическиеработы\Практическаяработа№12.
Контрольныевопросы
1. Что такое класс?
2. Что такое объект?
3. Что такое конструктор?
4. Что такое свойства?
5. Расскажите о спецификаторе доступа public (private).
6. Назовите основные принципы ООП и дайте каждому из них характеристику.
Литература
1. Павловская, Т.А.C#.Программированиенаязыкевысокогоуровня.Учебникдлявузов./Т.А.Павловская.-СПб: Питер, 2009.-432с.: ил.
2. Абрамян, М.Э.Visual C#на примерах./М.Э.Абрамян. -СПб: БХВ-Петербург, 2008.-496с.: ил.
3. Шилдт, Г.С# 4.0: полное руководство: Пер.сангл./Г.Шилдт.–М.: ООО«И.Д.Вильямс», 2011.–1056с.: ил.
|