Похожие презентации:
ООП 2
1.
МЕТОДЫ В СИ-ШАРП2.
Метод – это небольшая подпрограмма, котораявыполняет, в идеале, только одну функцию.
Методы позволяют сократить объем кода.
Методы вместе с полями, являются основными
членами класса.
Ранее, мы уже рассматривали методы, но
сейчас мы рассмотрим их под другим углом.
3.
Статический метод – это метод, который неимеет доступа к полям объекта, и для вызова
такого метода не нужно создавать экземпляр
(объект) класса, в котором он объявлен.
Простой метод – это метод, который имеет
доступ к данным объекта, и его вызов
выполняется через объект.
4.
Простые методы служат для обработкивнутренних данных объекта.
Приведу пример использования простого
метода. Класс Телевизор, у него есть
поле switchedOn, которое отображает состояние
включен/выключен, и два метода – включение
и выключение:
5.
6.
Чтобы вызвать простой метод, перед егоименем, указывается имя объекта. Для вызова
статического метода необходимо указывать
имя класса.
Статические методы, обычно, выполняют
какую-нибудь глобальную, общую функцию,
обрабатывают «внешние данные». Например,
сортировка массива, обработка строки,
возведение числа в степень и другое.
7.
ПРИМЕР СТАТИЧЕСКОГО МЕТОДА, КОТОРЫЙОБРЕЗАЕТ СТРОКУ ДО УКАЗАННОЙ ДЛИНЫ, И
ДОБАВЛЯЕТ МНОГОТОЧИЕ:
8.
СТАТИЧЕСКИЙ МЕТОД НЕ ИМЕЕТДОСТУПА К НЕСТАТИЧЕСКИМ ПОЛЯМ
КЛАССА:
9.
ЗАДАНИЕСоздайте класс Телевизор. В нем есть поле
текущий канал. Предусмотрите в нем
возможность переключения каналов:
следующий канал, предыдущий канал,
переход к каналу по номеру. Учтите, что канал
не может иметь отрицательный номер.
10.
КОНСТРУКТОРЫ В СИ-ШАРП11.
КОНСТРУКТОРЫКроме обычных методов в классах
используются также и специальные методы,
которые называются конструкторами.
Конструкторы вызываются при создании
нового объекта данного класса. Конструкторы
выполняют инициализацию объекта.
12.
Конструктор – это метод класса,предназначенный для инициализации объекта
при его создании.
Инициализация – это задание начальных
параметров объектов/переменных при их
создании.
13.
Объявление конструктора имеет следующуюструктуру:
public [имя_класса] ([аргументы])
{
// тело конструктора
}
14.
КОНСТРУКТОР ПО УМОЛЧАНИЮЕсли в классе не определено ни одного
конструктора, то для этого класса
автоматически создается конструктор по
умолчанию.
Такой конструктор не имеет параметров и не
имеет тела.
15.
Выше класс Person не имеет никакихконструкторов.
Поэтому для него автоматически создается
конструктор по умолчанию.
И мы можем использовать этот конструктор. В
частности, создадим один объект класса Person:
16.
17.
Для создания объекта Person используетсявыражение new Person().
Оператор new выделяет память для объекта
Person. И затем вызывается конструктор по
умолчанию, который не принимает никаких
параметров.
В итоге после выполнения данного выражения в
памяти будет выделен участок, где будут храниться
все данные объекта Person. А переменная tom
получит ссылку на созданный объект.
Если конструктор не инициализирует значения
переменных объекта, то они получают значения по
умолчанию. Для переменных числовых типов это
число 0, а для типа string и классов - это
значение null (то есть фактически отсутствие
значения).
После создания объекта мы можем обратиться к
переменным объекта Person через переменную tom
и установить или получить их значения,
например, tom.name = "Tom";.
18.
НАПРИМЕР, У НАС ЕСТЬ КЛАСС АВТОМОБИЛЬ. СОЗДАВАЯНОВЫЙ АВТОМОБИЛЬ, ЗНАЧЕНИЯ ПРОБЕГА И КОЛИЧЕСТВА
ТОПЛИВА В БАКЕ ЕСТЬ СМЫСЛ ПОСТАВИТЬ РАВНЫМИ НУЛЮ:
19.
Без конструктора нам бы пришлось послесоздания объекта отдельно присваивать
значения его полям, что очень неудобно.
Конструктор также может иметь параметры.
Пример с тем же автомобилем, только теперь
при создании объекта мы можем задать любые
начальные значения
20.
СОЗДАНИЕ КОНСТРУКТОРОВВыше для инициализации объекта
использовался конструктор по умолчанию.
Однако мы сами можем определить свои
конструкторы.
Теперь в классе определено три конструктора,
каждый из которых принимает различное
количество параметров и устанавливает
значения полей класса.
21.
22.
ИСПОЛЬЗУЕМ ЭТИ КОНСТРУКТОРЫ:23.
КЛЮЧЕВОЕ СЛОВО THISКлючевое слово this представляет ссылку на
текущий экземпляр класса. В каких ситуациях
оно нам может пригодиться? В примере выше
определены три конструктора. Все три
конструктора выполняют однотипные действия
- устанавливают значения полей name и age.
Но этих повторяющихся действий могло быть
больше. И мы можем не дублировать
функциональность конструкторов, а просто
обращаться из одного конструктора к другому
через ключевое слово this, передавая нужные
значения для параметров:
24.
25.
ТАКЖЕ СТОИТ ОТМЕТИТЬ, ЧТО В ТРЕТЬЕМКОНСТРУКТОРЕ ПАРАМЕТРЫ НАЗЫВАЮТСЯ
ТАКЖЕ, КАК И ПОЛЯ КЛАССА.
И чтобы разграничить параметры и поля класса, к полям класса
обращение идет через ключевое слово this.
Так, в выражении this.name = name;
первая часть this.name означает, что name - это поле текущего
класса, а не название параметра name.
Если бы у нас параметры и поля назывались по-разному, то
использовать слово this было бы необязательно.
Также через ключевое слово this можно обращаться к любому полю
или методу.
26.
В классе возможно указывать множествоконструкторов, главное чтобы они отличались
сигнатурами. Сигнатура, в случае
конструкторов, - это набор аргументов.
Например, нельзя создать два конструктора,
которые принимают два аргумента типа int.
27.
ПРИМЕР ИСПОЛЬЗОВАНИЯ НЕСКОЛЬКИХКОНСТРУКТОРОВ:
28.
ЕСЛИ В КЛАССЕ ОПРЕДЕЛЕН ОДИН ИЛИ НЕСКОЛЬКОКОНСТРУКТОРОВ С ПАРАМЕТРАМИ, МЫ НЕ СМОЖЕМ СОЗДАТЬ
ОБЪЕКТ ЧЕРЕЗ НЕЯВНЫЙ КОНСТРУКТОР ПО УМОЛЧАНИЮ:
29.
ПРИ ИСПОЛЬЗОВАНИИ ИНИЦИАЛИЗАТОРОВСЛЕДУЕТ УЧИТЫВАТЬ СЛЕДУЮЩИЕ
МОМЕНТЫ:
С помощью инициализатора мы можем
установить значения только доступных из
внешнего кода полей и свойств объекта.
Например, в примере выше поля name и age
имеют модификатор доступа public, поэтому
они доступны из любой части программы.
Инициализатор выполняется после
конструктора, поэтому если и в конструкторе, и
в инициализаторе устанавливаются значения
одних и тех же полей и свойств, то значения,
устанавливаемые в конструкторе, заменяются
значениями из инициализатора.
30.
ИНИЦИАЛИЗАТОРЫ ОБЪЕКТОВДля инициализации объектов классов можно
применять инициализаторы.
Инициализаторы представляют передачу в
фигурных скобках значений доступным полям
и свойствам объекта:
Person tom = new Person { name = "Tom", age=31
};
tom.GetInfo();
// Имя: Tom Возраст: 31
31.
ВОПРОС32.
ОТВЕТПоле name объекта tom будет иметь значение
"Bob". В самом начале выполняется начальная
инициализация полей класса, и полю name
присваивается значение "Sam". Далее
выполняется конструктор, который
устанавливает для переменной name значение
"Tom". И в последнюю очередь выполняется
инициализатор, который устанавливает для
поля name значение "Bob".
33.
34.
ОТВЕТЗначения полей:
name: Bob
age: 31
email: [email protected]
35.
ВИДЕОhttps://www.youtube.com/watch?v=_yk5lMV-
Bx0&feature=youtu.be
36.
ЗАДАНИЕСоздайте класс Студент, определите в нем
поля: имя, курс, есть ли у него стипендия.
Создайте в классе несколько конструкторов,
для возможности задания сразу всех
указанных параметров или нескольких при
создании экземпляров.