Pull to refresh

Comments 16

Забыты в теме классов первичные(основные) и частичные конструкторы, обязательные поля, расширения классов.

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

    PlayerColors pc = (PlayerColors) 42;
    GameManager.InitPlayer("test", pc);

Да, про это тоже нужно уточнить, спасибо

А ещё добавить к классам и структурам records.

Свойства есть синтаксический сахар, компилятор заменит их get/set методами.

Я помню, когда начинал C# лет 15 назад, как сложно было понять, что такое классы, конструкторы и все вот это. Главная проблема непонимания была в том, что все объяснения были написаны теми, кто уже слишком хорошо всё это знает, и практически все тексты были написаны без понимания, что именно непонятно новичку. Фактически, подавляющее большинство таких текстов написано так, что они излагают понимание автором темы для рецензирования этого понимания другими понимающими, а не для того, чтобы объяснить что-то новое непонимающим. Мне кажется, ваш текст именно такой. К счастью, сейчас есть ChatGPT, который, в отличие от людей, умеет абстрагироваться от уровня своего понимания.

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

Типа - "Грызть зеленое яблоко" - здесь "яблоко" - класс, "грызть" - метод, "зеленое" - свойство.

Для начала этого хватило для декомпозиции, полиморфизм, абстрагирование и наследование уже потом как-то сами пришли.

Неужели это помогло что-то понять? Я помню, что именно так обычно в учебниках рассказывали про классы, и это было совершенно непонятно. Вот я впервые открыл Visual Studio, мигает курсор, и тут мне начинают рассказывать про зеленые яблоки. Мне хотелось крикнуть "Эй, аллё! Вы вообще понимаете, что происходит?")))

Лет 15 назад в вузах был с++, поэтому когда человек начинал c#, предполагалось, что он знает плюсы :-)

Идеального решения тут, к сожалению, нет

Я учил ООП по C++. Поверьте, с C# проще.

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

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

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

Ну, или просто, ему рассказывают про интерфейс, а он не понимает, зачем ему этот интерфейс, к чему прикладывать?

Именно поэтому у меня бОльшая часть примеров завязана на играх. А так, конечно, хотелось бы слышать отзывы целевой аудитории, чтобы точнее понять слабые места

Респект за варик) И за шарп отдельно, надо двигать в массы такого пирожочка)

Sign up to leave a comment.

Articles