2_Realizatsia_klassov_i_obektov

Содержание

Слайд 2

Понятие объекта

Пример : автомашина - пассат

Объект – это некоторая сущность в виртуальном

Понятие объекта Пример : автомашина - пассат Объект – это некоторая сущность
пространстве. Каждый объект обладает:
свойствами (атрибутами, характеристикам, свойствами);
методами (действиями, операциями, умениями).

Слайд 3

Понятие класса

Класс - шаблон, на основе которого строятся однотипные (похожие) объекты, имеющие одинаковый

Понятие класса Класс - шаблон, на основе которого строятся однотипные (похожие) объекты,
набор характеристик

Отличающиеся по функционалу объекты находятся в разных классах (автомашина и ПК)

Объекты

Класс

Объекты одного класса отличаются значениями своих характеристик

Слайд 4

Реализация класса и объекта

1. Объявление объекта

Класс Объект;

Авто машина;
машина = new Авто();

Пример: создание

Реализация класса и объекта 1. Объявление объекта Класс Объект; Авто машина; машина
объекта «Машина» класса «Авто»

2. Выделение памяти под объект ссылочного типа

Объект = new Класс();

Оба действия можно объединить

Класс объект = new Класс();

Авто машина = new Авто();

Класс – это новый тип. Объект – переменная типа класс

Объявление объекта

Выделение памяти

Слайд 5

Примеры работы с объектами

//Создание двух объектов одного класса
Авто Машина1 = new Авто();
Авто

Примеры работы с объектами //Создание двух объектов одного класса Авто Машина1 =
Машина2 = new Авто();
//Общение к свойствам (задание значений)
Машина1.Координата Х = 100;
Машина2.Координата Х = 200;
Машина2.Скорость = 75;
//Обращение к методам (вызов)
Машина1.Ехать(50,30);
Машина1.Врезаться(Машина2);
Машина2.Стоп();

Слайд 6

Создание класса на С#

[public] class имя_класса
{
[уровень доступа] [static] поле
[уровень доступа]

Создание класса на С# [public] class имя_класса { [уровень доступа] [static] поле
[static] метод
}

Шаблон класса C#

Если класс содержится в том же пространстве (namespace) что и class Program с Main() (один проект), то public можно не указывать. Если класс будет использоваться в других проектах (как dll-библиотека), то public обязательно

Слайд 7

Создание файла с классом

Обычно класс размещается в отдельном файле проекта с расширением

Создание файла с классом Обычно класс размещается в отдельном файле проекта с расширением cs.
cs.

Слайд 8

Уровень доступа

В раздел private помещают члены класса, которые необходимо защитить, спрятать (инкапсуляция).
Они

Уровень доступа В раздел private помещают члены класса, которые необходимо защитить, спрятать
доступны только внутри класса и не доступны за пределами класса

В раздел public помещают члены класса, которые необходимо сделать открытыми, доступными.
Средство общения классов. Доступны вне класса

Уровни доступа:
public – открытый, доступный везде (в классе и вне класса)
private – закрытый, только внутри класса (по умолчанию)
protected – защищенный, доступ только для родственных классов

static:
Использование члена класса (поле или метод) без объекта.

Уровень доступа определяет область кода, в пределах которой можно использовать класс и его члены

Слайд 9

Правила объявления класса

Правила на поля (свойства) класса
Поля схожи с переменными: указываются тип

Правила объявления класса Правила на поля (свойства) класса Поля схожи с переменными:
и имя
Обычно поля имею private-доступ (инкапсуляция)
Обычно static-поля имеют public-доступ.
Доступ к полям только методами этого класса.
Метод другого класса не имеет доступа к полям.

Слайд 10

Правила объявления класса

Правила на методы класса
Метод раздела public доступен из любых мест

Правила объявления класса Правила на методы класса Метод раздела public доступен из
программы
Метод раздела private доступен только в методах этого класса
Обычно метод имеет public-доступ, чтобы использовать его при взаимодействии с другими объектами
Методы могут быть перегружены в одном классе (с разным типом и числом параметров).

Слайд 11

Пример класса на С#

class Passat
{
//Поля-свойства
private int speed; //Скорость машины
//Методы
private

Пример класса на С# class Passat { //Поля-свойства private int speed; //Скорость
void stop() //Остановка-закрытый
{
speed = 0;
}
public void accident (Passat pas) //Авария
{
this.stop(); //Вызов метода к текущей машине
pas.stop(); //Вызов метода к машине-параметру
}
public void gaz(int g) //Разгон
{ speed += g; }
public void brake(int g) //Торможение
{ speed -= g; }
public void print() //Вывод характеристик
{
Console.WriteLine("Текущая скорость = " + this.speed);
}
}

Слайд 12

Описание объекта

Шаблон объявления объекта

Имя_класса Имя_объекта;

Класс – это новый тип. Память под класс

Описание объекта Шаблон объявления объекта Имя_класса Имя_объекта; Класс – это новый тип.
не выделяется

Объект – это переменная типа класс.
Под объект выделяется память

Шаблон создания объекта конструктором

Имя_объекта = new Имя_класса();

Ссылка

Участок ОП

Можно объединить

Имя_класса Имя_объекта = new Имя_класса();

Объектная переменная

Объект

new

Слайд 13

Описание объекта

class Program
{
//Главный метод программы
static void Main()
{
Passat car; //Объявили

Описание объекта class Program { //Главный метод программы static void Main() {
один объект
car = new Passat(); //Создать
Passat[] cars = new Passat[n]; //Массив
for (int i = 0; i < cars.Length; i++)
cars[i] = new Passat();
}
}

Создание объектов типа Passat

Работа с объектами происходит в блоке Main()

Слайд 14

Замечания

Для каждого объекта выделяется своя память под свойства.

Изменения в одном объекте

Замечания Для каждого объекта выделяется своя память под свойства. Изменения в одном
не затрагивают свойства другого объекта(инкапсуляция)

Слайд 15

Обращение к полям и методам

Объект.Свойство = значение; //Нестатическое
Класс.Свойство = значение; //static

Обращение к методу

Результат =

Обращение к полям и методам Объект.Свойство = значение; //Нестатическое Класс.Свойство = значение;
Объект.Метод(параметры);
Результат = Класс.Метод(параметры);

Благодаря составному имени свойства и метода, можно изменять свойства конкретного объекта

В Main() доступны только public-члены нового класса, т.к. Main() принадлежит другому классу (Program)

Обращение к свойству

Слайд 16

Доступ к членам класса

static void Main()
{

car.gaz(50); //Разгон одной машины
cars[1].gaz(50); //Разгон

Доступ к членам класса static void Main() { … car.gaz(50); //Разгон одной
2-ой машины
cars[1].print(); //Вывести текущую скорость
cars[2].stop(); //Ошибка – нет доступа
car.speed = 100; //Ошибка – нет доступа }

Пример доступа к членам класса - методам

Слайд 17

Ключевое слово this

class Example
{
private int code; //Закрытое поле
public int Get() //Открытый метод

Ключевое слово this class Example { private int code; //Закрытое поле public
{
return this.code; //Не обязательно this
}
public void Set(int code)
{
//Обязательно this для отличия поля от параметра
this.code = code;
}
}

Слово this означает ссылку на объект, для которого вызывается метод. Обеспечивает доступ к членам объекта из метода.

Используется, чтобы отличить доступ к полю объекта класса от параметра метода при их одинаковых именах

Слайд 18

Практическая работа на ПК

«Классы и объекты»

Создать класс «Avto».

Свойства класса (private):
номер авто

Практическая работа на ПК «Классы и объекты» Создать класс «Avto». Свойства класса
- строка
количество бензина в баке - целое
расход топлива на 100 км - вещественное

Методы класса:
заполнение информацией о машине:
void info(string nom, float bak, float ras);
вывод информации: void out(void);
заправка топливом: void zapravka(float top);
езда: void move(int km);
остаток топлива: int ostatok(void); (private)

Слайд 19

Оценивание практической работы

На «Удовлетворительно»

Создать один объект на основе класса. Заполнить бак бензином

Оценивание практической работы На «Удовлетворительно» Создать один объект на основе класса. Заполнить
(объем вводит пользователь). Организовать цикл езды: случайно получить расстояние, по расходу определить, доедет ли. Если да, то ехать, иначе спросить о возможной заправке. Дополнительно реализовать public-методы «Торможение» и «Разгон».

На «Отлично»

Реализовать несколько машин (массив). Создать метод «Авария». Случайно задавать случайные индексы для машин с аварией.

На «Хорошо»

Добавить поле private «Пробег». Разработать методы:
расчет расстояния между начальной и конечной координатами машины (private) . Вызывать внутри метода «езда»
расчет общего пробега с учетом пройденного расстояния (public)

Реализацию класса разместить в отдельном файле cs. Выполнить пункт меню к проекту «Добавить класс».

Слайд 20

Практическая работа на ПК

На оценку «Удовлетворительно»
Выполнить действия для одного объекта

На оценку «Хорошо»
Выполнить

Практическая работа на ПК На оценку «Удовлетворительно» Выполнить действия для одного объекта
действия с массивом объектов

На оценку «Отлично»
Добавить утилиты:
сохранение данных об объекте в файле;
восстановление данных об объекте из файла.

«Классы и объекты»

Оценивание работы

Пояснения
Реализацию класса разместить в отдельном файле: класс.cpp.
С помощью команды #include “класс.cpp” подключить класс к основной программе.

Слайд 21

Практическая работа

Постановка задачи:

Создать класс «Счет в банке». Реализовать методы класса, влияющие на

Практическая работа Постановка задачи: Создать класс «Счет в банке». Реализовать методы класса,
значения свойств.
Поля данных класса – свойства будущего объекта:
№ счета (целое)
ФИО владельца счета (строка)
Сумма на счету (вещественное)
Методы класса – действия с будущим объектом:
Открыть счет: void otk (int nom, char *name, float sum);
Показать информацию о счете: void out ();
Положить на счет: void dob (float sum);
Снять со счета: void umen (float sum);
Взять всю сумму: void obnul ();
Перенести сумму с одного счета на другой

Слайд 22

Практическая работа на ПК

«Классы и объекты»

Создать класс «Игровой персонаж».

Свойства класса:
название персонажа

Практическая работа на ПК «Классы и объекты» Создать класс «Игровой персонаж». Свойства
- строка
координаты расположения - целые
лагерь (друг/враг)- логическое
количество жизней - целое

Методы класса:
заполнение информацией:
void info (char *s, int x, int y, bool l, int kol);
вывод информации: void print (void);
перемещение по горизонтали: void movex (int dx);
перемещение по вертикали: void movey (int dy);
уничтожение: void del(void);
нанесение урона: void uron (int du);
лечение: void doc (int du);
полное восстановление: void vost(void);
принадлежность лагерю: bool lager(void);