Izibook.club
Читать онлайн книги!
  • Главная
  • Жанры
  • Авторы
  • ТОП книг
  • ТОП авторов
  • Контакты

Язык программирования C#9 и платформа .NET5

Часть 105 из 642 Информация о книге

Обратите внимание, что переменные-члены объявлены с применением модификатора доступа

public
. Открытые (
public
) члены класса доступны напрямую после того, как создан объект этого типа. Вспомните, что термин объект используется для описания экземпляра заданного типа класса, который создан с помощью ключевого слова
new
.

На заметку! Поля данных класса редко (если вообще когда-нибудь) должны определяться как открытые. Чтобы обеспечить целостность данных состояния, намного лучше объявлять данные закрытыми (

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

После определения набора переменных-членов, представляющих состояние класса, следующим шагом в проектировании будет установка членов, которые моделируют его поведение. Для этого примера в классе

Car
определены методы по имени
SpeedUp()
и
PrintState()
. Модифицируйте код класса
Car
следующим образом:

class Car

{

  // 'Состояние' объекта Car.

  public string petName;

  public int currSpeed;

  // Функциональность Car.

  // Использовать синтаксис членов, сжатых до выражений,

  // который рассматривался в главе 4.

  public void PrintState()

    => Console.WriteLine("{0} is going {1} MPH.", petName, currSpeed);

  public void SpeedUp(int delta)

    => currSpeed += delta;

}

Метод

PrintState()
— простая диагностическая функция, которая выводит текущее состояние объекта
Car
в окно командной строки. Метод
SpeedUp()
увеличивает скорость автомобиля, представляемого объектом
Car
, на величину, которая передается во входном параметре типа
int
. Обновите операторы верхнего уровня в файле
Program.cs
, как показано ниже:

Console.WriteLine("***** Fun with Class Types *****\n");

// Разместить в памяти и сконфигурировать объект Car.

Car myCar = new Car();

myCar.petName = "Henry";

myCar.currSpeed = 10;

// Увеличить скорость автомобиля в несколько раз и вывести новое состояние.

for (int i = 0; i <= 10; i++)

{

  myCar.SpeedUp(5);

  myCar.PrintState();

}

Console.ReadLine();

Запустив программу, вы увидите, что переменная

Car
(
myCar
) поддерживает свое текущее состояние на протяжении жизни приложения:

***** Fun with Class Types *****

Henry is going 15 MPH.

Henry is going 20 MPH.

Henry is going 25 MPH.

Henry is going 30 MPH.

Henry is going 35 MPH.

Henry is going 40 MPH.

Henry is going 45 MPH.

Henry is going 50 MPH.

Henry is going 55 MPH.

Henry is going 60 MPH.

Henry is going 65 MPH.

Размещение объектов с помощью ключевого слова new

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

new
. Если вы не укажете ключевое слово
new
и попытаетесь использовать переменную класса в последующем операторе кода, то получите ошибку на этапе компиляции. Например, приведенные далее операторы верхнего уровня не скомпилируются:

Console.WriteLine("***** Fun with Class Types *****\n");

// Ошибка на этапе компиляции! Забыли использовать new для создания объекта!

Car myCar;

myCar.petName = "Fred";

Чтобы корректно создать объект с применением ключевого слова

new
, можно определить и разместить в памяти объект
Car
в одной строке кода:

Console.WriteLine("***** Fun with Class Types *****\n");

Car myCar = new Car();

myCar.petName = "Fred";

В качестве альтернативы определение и размещение в памяти экземпляра класса может осуществляться в отдельных строках кода:

Console.WriteLine("***** Fun with Class Types *****\n");

Car myCar;

myCar = new Car();

myCar.petName = "Fred";

Здесь первый оператор кода просто объявляет ссылку на определяемый объект типа

Car
. Ссылка будет указывать на действительный объект в памяти только после ее явного присваивания.

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

Car
, необходимо разобраться с ролью конструкторов.

Понятие конструкторов

Учитывая наличие у объекта состояния (представленного значениями его переменных-членов), обычно желательно присвоить подходящие значения полям объекта перед тем, как работать с ним. В настоящее время класс

Car
требует присваивания значений полям
petName
и
currSpeed
по отдельности. Для текущего примера такое действие не слишком проблематично, поскольку открытых элементов данных всего два. Тем не менее, зачастую класс содержит несколько десятков полей, с которыми надо что-то делать. Ясно, что было бы нежелательно писать 20 операторов инициализации для всех 20 элементов данных.

Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело 3
    • Спецслужбы 3
  • Деловая литература 195
    • Банковское дело 2
    • Деловая литература 2
    • Корпоративная культура 12
    • Личные финансы 20
    • Малый бизнес 2
    • Маркетинг, PR, реклама 44
    • О бизнесе популярно 108
    • Отраслевые издания 2
    • Управление, подбор персонала 16
    • Ценные бумаги, инвестиции 2
    • Экономика 26
  • Детективы и триллеры 2710
    • Боевики 311
    • Дамский детективный роман 21
    • Детективы 424
    • Иронические детективы 180
    • Исторические детективы 411
    • Классические детективы 217
    • Криминальные детективы 153
    • Крутой детектив 114
    • Маньяки 15
    • Медицинский триллер 2
    • Политические детективы 43
    • Полицейские детективы 230
    • Прочие Детективы 804
    • Техно триллер 3
    • Триллеры 1166
    • Шпионские детективы 100
  • Детские 482
    • Детская образовательная литература 13
    • Детская проза 162
    • Детские остросюжетные 53
    • Детские приключения 253
    • Детские стихи 20
    • Детский фольклор 1
    • Книга-игра 1
    • Прочая детская литература 76
  • Детские книги 521
    • Детская фантастика 193
    • Детские детективы 3
    • Книги для подростков 23
    • Сказки 258
  • Документальная литература 794
    • Биографии и мемуары 520
    • Военная документалистика 7
    • Искусство и Дизайн 13
    • Критика 11
    • Научпоп 9
    • Прочая документальная литература 71
    • Публицистика 256
  • Дом и Семья 212
    • Домашние животные 14
    • Здоровье и красота 34
    • Кулинария 33
    • Прочее домоводство 8
    • Развлечения 3
    • Сад и Огород 8
    • Сделай сам 2
    • Спорт 9
    • Хобби и ремесла 7
    • Эротика и секс 108
  • Драматургия 109
    • Драма 106
    • Киносценарии 3
    • Мистерия 1
    • Трагедия 1
  • Жанр не определен 8
    • Разное 8
  • Компьютеры и Интернет 15
    • Базы данных 3
    • Интернет 3
    • Программирование 1
    • Программное обеспечение 1
    • Прочая компьютерная литература 10
  • Любовные романы 26391
    • Исторические любовные романы 944
    • Короткие любовные романы 2640
    • Любовно-фантастические романы 10987
    • Остросюжетные любовные романы 966
    • Порно 90
    • Прочие любовные романы 56
    • Слеш 416
    • Современные любовные романы 10900
    • Фемслеш 44
    • Эротика 6482
  • Научно-образовательная 369
    • Альтернативная медицина 5
    • Астрономия и Космос 7
    • Биология 32
    • Биофизика 2
    • Биохимия 2
    • Ботаника 3
    • Военная история 4
    • Геология и география 2
    • Государство и право 1
    • Детская психология 15
    • Зоология 3
    • Иностранные языки 2
    • Культурология 46
    • Литературоведение 20
    • Медицина 35
    • Обществознание 6
    • Педагогика 20
    • Политика 22
    • Прочая научная литература 58
    • Психотерапия и консультирование 49
    • Религиоведение 7
    • Секс и семейная психология 30
    • Технические науки 4
    • Физика 9
    • Философия 34
    • Химия 3
    • Экология 3
    • Юриспруденция 8
    • Языкознание 18
  • Образование 520
    • Бизнес 45
    • Биография и мемуары 46
    • Здоровье 10
    • История 295
    • Карьера 4
    • Психология 229
  • Поэзия и драматургия 41
    • Басни 2
    • Драматургия 10
    • Лирика 2
    • Поэзия 30
  • Приключения 754
    • Вестерны 14
    • Исторические приключения 413
    • Морские приключения 77
    • Природа и животные 31
    • Прочие приключения 212
    • Путешествия и география 52
  • Проза 2377
    • Антисоветская литература 5
    • Афоризмы 1
    • Военная проза 111
    • Историческая проза 318
    • Классическая проза 131
    • Контркультура 13
    • Магический реализм 91
    • Новелла 14
    • Повесть 24
    • Проза прочее 21
    • Рассказ 73
    • Роман 103
    • Русская классическая проза 71
    • Семейный роман/Семейная сага 3
    • Сентиментальная проза 10
    • Советская классическая проза 47
    • Современная проза 1828
    • Эпистолярная проза 2
    • Эпопея 5
    • Эссе, очерк, этюд, набросок 3
  • Прочее 1507
    • Газеты и журналы 5
    • Изобразительное искусство, фотография 11
    • Кино 13
    • Музыка 11
    • Подростковая литература 6
    • Театр 5
    • Фанфик 1461
  • Религия и духовность 357
    • Астрология 1
    • Буддизм 4
    • Православие 1
    • Прочая религиозная литература 4
    • Религия 24
    • Самосовершенствование 134
    • Хиромантия 1
    • Эзотерика 209
    • Язычество 1
  • Справочная литература 41
    • Прочая справочная литература 3
    • Путеводители 9
    • Руководства 12
    • Справочники 15
    • Энциклопедии 9
  • Старинная литература 147
    • Античная литература 1
    • Древневосточная литература 5
    • Мифы. Легенды. Эпос 34
    • Прочая старинная литература 108
  • Техника 2
    • Автомобили и ПДД 1
    • Архитектура 1
  • Фантастика и фентези 28376
    • Альтернативная история 4132
    • Боевая фантастика 5331
    • Героическая фантастика 1476
    • Городское фэнтези 2256
    • Готический роман 13
    • Детективная фантастика 748
    • Ироническая фантастика 102
    • Ироническое фэнтези 82
    • Историческое фэнтези 527
    • Киберпанк 314
    • Космическая фантастика 1802
    • Космоопера 56
    • ЛитРПГ 1323
    • Любовная фантастика 186
    • Любовное фэнтези 115
    • Мистика 513
    • Научная фантастика 922
    • Попаданцы 9405
    • Постапокалипсис 903
    • Сказочная фантастика 26
    • Социально-философская фантастика 533
    • Стимпанк 151
    • Технофэнтези 140
    • Ужасы 103
    • Ужасы и мистика 817
    • Фантастика 254
    • Фантастика: прочее 231
    • Фэнтези 11530
    • Эпическая фантастика 234
    • Юмористическая фантастика 1065
    • Юмористическое фэнтези 1658
  • Фольклор 7
    • Загадки 1
    • Народные сказки 5
    • Фольклор: прочее 2
  • Юмор 192
    • Анекдоты 1
    • Комедии 1
    • Прочий юмор 66
    • Сатира 3
    • Юмористическая проза 122
    • Юмористические стихи 5
Izibook.club

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • pereezdsayta@yandex.ru
Информация
  • Карта сайта
© izibook.club, 2026. | Вход
Этот сайт использует cookie для хранения данных. Продолжая пользоваться сайтом, вы даете свое согласие на работу с этими данными в соответствии с нашей политикой конфиденциальности.
Я согласен