Разработка программ с использованием классов
Класс
Создание экземпляров класса
Статические данные класса
Пример
Элементы класса
Элементы класса
Пример программы
Пример программы
Продолжение программы
Свойство
Использование свойства
Продолжение программы
Продолжение программы
Наследование
Начало главной функции
Задаём значения полей персонажей
Вывод на экран информации о персонажах
Рекомендации по программированию
Проверочная работа № 2
План работы:
146.46K
Категория: ПрограммированиеПрограммирование

Разработка программ с использованием классов. C#

1. Разработка программ с использованием классов

C#

2. Класс

Это тип данных, определяемый пользователем
Является моделью реального объекта или
процесса
Элементами класса являются данные и
функции, предназначенные для их обработки
Для каждого объекта при создании выделяется
память, в которой хранятся его данные

3. Создание экземпляров класса

class Monster // класс Монстр (игровой персонаж)
{
string name;
// поля класса
int power;
//сила
int health;
//здоровье
public Monster(string name, int power, int health)
// конструктор класса
{
this.name = name;
this.power = power;
this.health = health;
}
}
static void Main()
{
Monster Vasia = new Monster("Вася",120, 100);
}

4. Статические данные класса

В классе могут присутствовать статические
элементы, которые существуют в
единственном экземпляре для всех
объектов класса
Статические данные называют данными
класса, а остальные – данными экземпляра
класса

5. Пример

class Demo // класс
{
public static string Name = "Demo"; // статическое поле
public const double q = 1.66; // константа
double y;
// закрытое поле данных
public Demo(double y)
{
this.y = y;
}
// конструктор класса
}
static void Main()
{
Demo X = new Demo(56.5);
Console.WriteLine(Demo.Name);
Console.WriteLine(Demo.q);
}

6. Элементы класса

Константы класса хранят неизменяемые
значения, связанные с классом
Поля содержат данные экземпляра класса
Конструкторы реализуют действия по
инициализации экземпляров
Деструкторы определяют действия, которые
надо выполнить до того, как объект будет
уничтожен
Методы реализуют вычисления и другие
действия, выполняемые с объектами класса

7. Элементы класса

Свойства определяют характеристики
класса и способы их задания и получения,
то есть методы записи и чтения
Идексаторы задают обращение к скрытому
полю-массив с помощью квадратных
скобок
Операции задают действия с объектами с
помощью знаков операций
Типы – это типы данных, внутренние по
отношению к классу

8. Пример программы

namespace Monster
Пример программы
{
class Monster // базовый класс Монстр
{
string name;
// поля класса
int power;
int health;
public Monster() // конструктор по умолчанию
{
this.name = "NoName";
this.power = 0;
this.health = 0;
}
public Monster(string name) // конструктор класса
{
this.name = name;
this.power = 100;
this.health = 150;
}

9. Пример программы

public Monster(string name, int power, int health)
// конструктор класса
{
this.name = name;
this.power = power;
this.health = health;
}
virtual public void Show() // метод для вывода
информации о монстре на экран
{
Console.Write("\tМонстр: {0}\tСила: {1}\tЗдоровье:
{2}", name, power, health);
}

10. Продолжение программы

public int GetPower()
// метод возвращает значение силы
{
return power;
}
public void SetPower(int S)
// метод устанавливает силу
{
power=S;
}
Продолжение программы

11. Свойство

public int Power
//свойство возвращает,устанавливает значение силы
{
get
{
return power;
}
set
{
if (value >= 0)
power = value;
else
power = 0;
}
}
Свойство

12. Использование свойства

static void Main()
{
Monster M = new Monster("Masha", 100, 200);
if (M.Power<100)
M.Power = 300;
M.Power *= 2;
Console.WriteLine (M.Power);
}
Использование свойства

13. Продолжение программы

public static void Attac(Monster M1, Monster M2)
//метод атаки (сражение между двумя монстрами)
{
if (M1.power>M2.power)
{
M1.power += 10;
M2.health -= 10;
}
else
if (M1.power<M2.power)
{
M2.power += 10;
M1.health -= 10;
}
else
{
M1.power += 5;
M2.power += 5;
}
Продолжение программы
}
} // конец описания класса Monster

14. Продолжение программы

class Demon : Monster // порождённый класс Демон
{
int brain; // демон имеет ум
public Demon():base() // конструктор для Демона
{
this.brain = 2;
}
public Demon(string name, int power, int health,
int brain): base(name, power, health)
{
this.brain = brain;
}
// метод для вывода информации о Демоне
override public void Show()
{
base.Show();
Console.Write("\tУм: {0}", brain);
Продолжение программы
}
}

15. Наследование

На уровне базового класса можно написать
универсальный код, который может работать
также с объектами дочерних классов, что
реализуется с помощью виртуальных методов;
Как виртуальные в классе должны быть
описаны методы, которые выполняют во всей
иерархии одну и ту же функцию, но разными
способами;
Обычные (не виртуальные) методы
переопределять в дочерних классах не
рекомендуется!

16. Начало главной функции

class Program
{
static void Main()
{
const int n = 4;
// количество персонажей игры
Random Rnd = new Random();
Monster[] stado = new Monster[n];
// массив стадо Монстров
Начало главной функции

17. Задаём значения полей персонажей

for (int i = 0; i < n; i++)
{
string My_name; // вводим имена персонажей
Console.WriteLine("Введите имя персонажа:");
My_name = Console.ReadLine();
Console.WriteLine("Монстр или демон? (м/д)");
char k = Convert.ToChar(Console.Read());
if (k=='д' || k=='Д')
stado[i] = new Demon(My_name, Rnd.Next(200),
Rnd.Next(200), Rnd.Next(1,3));
else
stado[i] = new Monster(My_name, Rnd.Next(200),
Rnd.Next(200)); // по умолчанию персонаж монстр
}
Задаём значения полей персонажей

18. Вывод на экран информации о персонажах

for (int i = 0; i < n; i++)
{
stado[i].Show();
Console.WriteLine("\n------------------\n");
}
Console.ReadKey();
}
Вывод на экран информации о персонажах

19. Рекомендации по программированию

Каждый метод должен решать только одну
задачу;
Создание любой функции следует начинать с
её интерфейса (заголовка);
Перегруженные методы используются в
классах повсеместно (это лучше, чем один
метод с переменным числом параметров);
Если в пределах класса есть несколько
методов с одинаковыми именами, то они
должны отличаться количеством или типами
параметров.

20. Проверочная работа № 2

I вариант
Базовый класс Круг (поле: Радиус), дочерний
класс Цилиндр (поля: Радиус, Высота)
II вариант
Базовый класс Прямоугольник (поля: Длина,
Ширина), дочерний класс Параллелограмм
(поля: Длина, Ширина, Угол наклона)

21. План работы:

Описать поля базового класса
Описать 2 конструктора базового класса
Описать метод Show() для вывода на экран
значений полей
Описать метод Square() для вычисления площади
фигуры
Аналогично для дочернего класса
В главной функции создать по 1 экземпляру
каждого класса
Показать вызов всех методов для каждого объекта
English     Русский Правила