Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Теория ООП / Интерфейс. Кружок хочет играть.

  • На этом уроке мы унаследуем кружок от интерфейса Игрок.
    Теперь для запуска программы нам придётся реализовать
    методы из его интерфейса.
    В этом уроке мы реализуем методы Голя() и НеГоля().
  • Дата отправки отчёта: 5 декабря 2015 г.
  • Задание выполнено: за 1 час. 00 мин.
  • Чему научился: Вспомнил что такое наследование. Начали реализовывать интерфейс. Про Беги(). Либо мы пошагово делаем ходы - для этого нужна кнопка "Step". Затем по всей видимости рендомно понимаем поймал Голя кирпичом игрока или не поймал. Либо мы запускаем игру и игроки сами играют уже без вмешательства извне - опять же нужна кнопка "Игра". Бегают игроки как я понимаю только в пределах Арены и друг на друга не залезают.
    Поймал(). Если TRUE то сам Голя становится как все а тот кого он поймал - цвет Голи.
    Опять же кнопочка ПАУЗА нужна нам - или нет....
  • Что было сложным: думать что дальше делать, представить всю картину целиком
  • Комментарии: я вот понять не могу - private set мы зачем замутили если мы все-таки меняем color в методах?
  • Оценка видео-уроку:
Отчёт от 3146 за Теория ООП / Интерфейс. Кружок хочет играть.




Оцени работу

 
Сохранить страницу:

7276. --
Ильшат
Ильшат
ответить
→  Permitin Alexey  # Теория ООП / Интерфейс. Кружок хочет играть. / 2015-12-05 21:30

public Color color { get; private set; } означает, что изменить значение свойства может только метод из класса, содержащий это свойство. Внешние методы других классов могут только читать значение color, например метод Arena.Show использует цвет Circle для его отображения на площадке. Зачем это нужно, почему private set? Для того, чтобы пользователь Circle не имел возможности по ошибке, от усталости или просто от незнания сломать код, изменить цвет круга напрямую (так как это важное состояние объекта), а мог изменить только через способы, разрешенные разработчиком класса Circle, то есть через методы Голя(), НеГоля().


3146. --
Permitin Alexey
Permitin Alexey
ответить
→  Ильшат  # Теория ООП / Интерфейс. Кружок хочет играть. / 2015-12-05 22:04

так вот чем отличается readonly от { get; private set; }
БОЛЬШОЕ СПАСИБО Ильшат!


7276. --
Ильшат
Ильшат
ответить
→  Permitin Alexey  # Теория ООП / Интерфейс. Кружок хочет играть. / 2015-12-05 22:34

Не совсем так, readonly это константа времени выполнения, я бы сказал, константа конкретного объекта, значение которой можно установить только в двух случаях - при объявлении, например class A {readonly int a = 6;} или в конструкторе класса
class A
{
    readonly int a;
    public A(int value)
    {
        a = value;
    }
    public void fail(int value)
    {
        a = value; // ошибка компиляции.
    }
}

Таким образом, readonly позволяет установить для каждого объекта свою константу. Удобно. У нас есть константа, мы ее не можем случайно изменить, но мы можем варьировать ее значение в момент создания объекта. Например, у любого товара есть дата изготовления, которая в дальнейшем не может измениться. При создании объекта класса Товар мы задаем значение константы и в дальнейшем не имеем права его менять, это ведь логично?

Еще есть модификатор const - это константа времени компиляции. Более ограниченная штучка, подходит для примитивных типов. Перед компиляцией программы константа должна знать свое значение и оно не может меняться в течение программы. Например const double earth_gravity = 9.8; Менять фундаментальную гравитацию Земли невозможно, поэтому для нее нужно выбрать модификатор const.


24. --
Олюшка
Олюшка
ответить
→  Ильшат  # Теория ООП / Интерфейс. Кружок хочет играть. / 2015-12-05 23:40

Ильшат, спасибо за такое подробное объяснение, мне теперь понятно!


24. --
Олюшка
Олюшка
ответить
→  Permitin Alexey  # Теория ООП / Интерфейс. Кружок хочет играть. / 2015-12-05 23:41

Алексей, рада что ты продвигаешься и набираешься знаний, уверена теперь тебе тоже слало еще больше понятней! :)


2146. --
Иван
Иван
ответить
→  Ильшат  # Теория ООП / Интерфейс. Кружок хочет играть. / 2015-12-06 00:34

Ильшат! Спасибо огромное! Сохранил объяснения, что бы всегда были под рукой! Очень понятно и доступно. Полезно, все-таки проверять отчеты.


7276. --
Ильшат
Ильшат
ответить
→  Иван  # Теория ООП / Интерфейс. Кружок хочет играть. / 2015-12-06 15:19

Иван, пожалуйста. Рад, что помог)


7276. --
Ильшат
Ильшат
ответить
→  Олюшка  # Теория ООП / Интерфейс. Кружок хочет играть. / 2015-12-06 15:20

Оля, пожалуйста. Ты молодец, здорово прогрессируешь)



Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Реализованы методы поведения объектов Circle, наследуемые от интерфейса Игрок - Голя() и НеГоля().
Трудности: Сложностей не возникло.
В очередной раз восхищена Вашим умением, Евгений Витольдович, находить яркие метафоры, позволяющие так просто познавать сложное :) Спасибо Вам!


Трудности: Разбираюсь, изучаю.
Описaть cлoвами coдержимoе мeтодов Беги() и Поймал(). Если площадь красного шарика не перекрывает (хотя бы частично) площадь синего , то Беги, иначе Голя.