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

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

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

Iterator / Iterator - Random

  • Мы продолжаем эксперименты с самым популярным
    и востребованным шаблоном проектирования: "Итератор".
    На этом уроке мы попрактикуемся в использовании итератора и
    создадим очередную программу для генерации случайных чисел.
  • Дата отправки отчёта: 22 марта 2017 г.
  • Задание выполнено: за 30 мин.
  • Чему научился: Всё знал
  • Что было сложным: Ничего
  • Комментарии: А у меня внутренний класс не видел переменную max из внешнего. Разве он должен? Ведь мы свободно можем создать его экземпляр не создавая экземпляр внешнего (если бы он был публичным), и тогда переменной max вообще не будет

    UPD: В Java внутренний класс не может быть публичным, по этому там такое возможно
  • Оценка видео-уроку:
Отчёт от 9567 за Iterator / Iterator - Random




Оцени работу

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

1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Максим  # Шаблоны Проектирования / Iterator - Random / 2017-03-22 16:19

Тут ты не прав, разберись с вопросами видимости внутренних классов


9567. --
Максим
Максим
ответить
→  Евгений Волосатов  # Шаблоны Проектирования / Iterator - Random / 2017-03-22 22:21

Ну как? Подождите. Во первых, я написал всё, как вы сказали и внутренний класс не увидел свойство внешнего, VS написала, что для нестатичного свойства требуется ссылка на объект, если правильно помню. То есть, если max сделать статичной, то всё будет ок, что логично, ведь это свойство будет сразу создано. А если max не статично то внутренний класс никак не может его видеть. Допустим такую ситуацию:
public class A
{
        int max;

        public class B
        {
                public void GetMax() => max;
        }
}

Метод GetMax просто не может заработать. Я могу спокойно создать экземпляр класса B полностью игнорируя класс А (не считая того, что это часть пути к классу B, однако если это часть пути, это не значит, что я должен создавать экземпляр класса A для создания экземпляра класса B), и какой max тогда будет обращаться этот метод, если ещё вообще нет экзкмпляров класса А?


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Максим  # Шаблоны Проектирования / Iterator - Random / 2017-03-22 22:26

Надо проверить. В яве такое работает 100%.
Там нельзя внутри класса создавать публичные класссы. Их можнл использовать только из внешнего. И мне кажется это логично.


9567. --
Максим
Максим
ответить
→  Евгений Волосатов  # Шаблоны Проектирования / Iterator - Random / 2017-03-22 22:33

Ну вот, а шарпе можно, и по этому там такое не работает. Можете, пожалуйста, -1 убрать? =)


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Максим  # Шаблоны Проектирования / Iterator - Random / 2017-03-22 22:34

Не могу. Отправь отчет просто снова.



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





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

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

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

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


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


Научился: Урок дался тяжело. Решил второй проект сделать все же на Java, а не на С#. И тут началось. Во-первых, уже забыл, как работать в IntellJ IDEA Community, которую устанавливал на одном из курсов по джаве. Помог урок Елены Вставской в курсе по Тестированию. Но Витольдович работает в каком-то другом редакторе, поэтому постоянно возникали какие-то "приколы"... это не VS, которая сама все предлагает и создает автоматом. Но после преодоления всех трудностей и успешной компиляции проекта, вдруг оказалось, что я его создал не в той папке, с которой его можно запустить)) И поскольку моя цель не изучение Java, а понимание паттернов, решил все проекты, переписывать в синтаксисе С#. Что успешно и реализовал. Да, порой возникают несоответствия и какие-то "непонятки", но зато при таком переделывании-переписывании приходит более глубокое понимание изучаемой темы)
Трудности: Работа в IntellJ IDEA Community