Изучите C # для Android, часть 2: Классы и циклы

Автор: John Stephens
Дата создания: 24 Январь 2021
Дата обновления: 1 Июль 2024
Anonim
Беспредельный MediatR, StringBuilder в деталях, большой юбилей
Видео: Беспредельный MediatR, StringBuilder в деталях, большой юбилей

Содержание


В первой части этой серии руководств по Android, посвященной изучению C #, мы рассмотрели абсолютные основы программирования на C #. Мы рассмотрели методы (группы кода, выполняющие конкретные задачи), некоторый базовый синтаксис (например, необходимость использования двоеточий), переменные (контейнеры, в которых хранятся данные) и «операторы if» для управления потоком (код ветвления, который зависит от значений переменных). Мы также увидели, как передавать переменные, такие как строки, в качестве аргументов между методами.

Вы должны вернуться и взглянуть на это, если вы еще не читали это.

На этом этапе вы сможете создавать некоторые базовые консольные приложения, такие как тесты, приложения для хранения данных или калькуляторы.

Во второй части мы собираемся стать немного более амбициозными, охватывая еще несколько основ - например, циклы - и исследуя, как создавать классы и взаимодействовать с ними. Это означает, что мы сможем начать работу над разработкой Android и посмотреть, как преодолеть этот разрыв. Продолжайте читать, если вы хотите по-настоящему изучить C #!


Понимание классов и объектно-ориентированного программирования

Вкратце в первой части мы объяснили основы объектно-ориентированного программирования, которое вращается вокруг языков, использующих «классы» для описания «объектов». Объект - это фрагмент данных, который может представлять множество вещей. Это может быть буквальный объект в игровом мире, например, пружина, или нечто более абстрактное, например, менеджер, который обрабатывает счет игрока.

Один класс может создавать несколько объектов. Таким образом, вы можете написать один «вражеский» класс, но сможете создать целый уровень, полный плохих парней. Это одно из больших преимуществ использования объектно-ориентированного программирования. В противном случае единственный способ справиться с поведением множества врагов - это использовать множество отдельных методов, каждый из которых содержит инструкции о том, как плохой парень должен вести себя в разных обстоятельствах.


Если вам все еще сложно разобраться, все, что вам действительно нужно знать, - это то, что у объектов есть свойства и поведение. Это как настоящие объекты. Например, у кролика есть такие свойства, как размер, цвет и имя; и у него есть поведение, такое как прыжки, сидение и еда. По сути, свойства являются переменными, а поведение - методами.

Программа, которую мы создали на последнем уроке, также является примером класса. «Объект», который мы здесь описываем, является некой системой контроля паролей. Свойство, которое он имеет, является строкой UserName, а его поведение - NewMethod (проверка имени пользователя и приветствие его).

Если этоВсе еще немного сбивает с толку, единственный способ получить наши головы, это создать новый класс или два сами!

Создание нового класса

Если вы собираетесь изучать C #, вам нужно знать, как создавать новые классы. К счастью, это очень просто. Просто щелкните пункт меню «Проект» и выберите «+ Добавить класс».

Выберите «C #» и назовите его «Кролик». Мы собираемся использовать этот класс для создания концептуальных кроликов. Вы поймете, что я имею в виду через мгновение.

Если вы проверите справа в своем обозревателе решений, вы увидите, что новый файл с именем Rabbit.cs был создан прямо под Program.cs. Отлично, это одна из самых важных вещей, которую нужно знать, если вы хотите изучать C # для Android!

В новом файле Rabbit.cs есть тот же «шаблонный» код, что и раньше. Он все еще принадлежит тому же пространству имен, и у него есть класс с тем же именем, что и у файла.

пространство имен ConsoleApp2 {class Rabbit {}}

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

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

пространство имен ConsoleApp2 {class Rabbit {public string RabbitName; публичная строка RabbitColor; public int RabbitAge; public int RabbitWeight; public Rabbit (имя строки, цвет строки, возраст int, вес int) {RabbitName = name; RabbitColor = цвет; RabbitAge = возраст; Вес кролика = вес; }}}

Это позволяет нам создать нового кролика из другого класса и определить его свойства, как мы делаем:

Кролик Кролик1 = новый Кролик («Джефф», «Браун», 1, 1);

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

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

Хотите верьте, хотите нет, этот кодекс создал кролика! Вы не можете видеть своего кролика, потому что у нас нет графики, но она есть.

И чтобы доказать это, теперь вы можете использовать эту строку:

ЕЫпе (Rabbit1.RabbitName);

Затем вам сообщат имя кролика, которого вы только что создали!

Мы также можем увеличить вес нашего Кролика следующим образом:

Rabbit1.RabbitWeight ++; Console.WriteLine (Rabbit1.RabbitName + "весит" + Rabbit1.RabbitWeight + "кг");

Обратите внимание, что добавление «++» в конце чего-либо постепенно увеличивает его значение на единицу (вы также можете написать «RabbitWeight = RabbitWeight + 1»).

Поскольку наш класс может сделать столько кроликов, сколько мы захотим, мы можем создать много разных кроликов, каждый со своими свойствами.

Добавление поведения

Тогда мы могли бы также выбрать способ поведения нашего кролика. В этом случае, давайте дадим им есть.

Чтобы сделать это, мы бы создали публичный метод под названием «Ешь», который будет издавать звук при еде, а также постепенно увеличивать вес кролика:

public void Eat () {Console.WriteLine (RabbitName + ": Nibble nibble!"); RabbitWeight ++; }

Помните, что «public» означает доступ извне класса, а «void» означает, что метод не возвращает никаких данных.

Затем изнутри Program.cs мы сможем вызвать этот метод, и это заставит нашего кролика есть и расти:

Console.WriteLine (Rabbit1.RabbitName + "весит" + Rabbit1.RabbitWeight + "кг"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit1.Eat (); Console.WriteLine (Rabbit1.RabbitName + "весит" + Rabbit1.RabbitWeight + "кг");

Это заставит Джеффа есть три раза, тогда мы услышим это и увидим, что он стал больше! Если бы у нас был еще один кролик, они тоже могли бы есть!

Console.WriteLine (Rabbit1.RabbitName + "весит" + Rabbit1.RabbitWeight + "кг"); Console.WriteLine (Rabbit2.RabbitName + "весит" + Rabbit2.RabbitWeight + "кг"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit2.Eat (); Rabbit2.Eat (); Rabbit1.Eat (); Console.WriteLine (Rabbit1.RabbitName + "весит" + Rabbit1.RabbitWeight + "кг"); Console.WriteLine (Rabbit2.RabbitName + "весит" + Rabbit2.RabbitWeight + "кг");

На это как кролики

Это не очень элегантный способ обработки множества объектов, так как нам нужно выписывать команды для каждого кролика вручную, и мы не можем динамически увеличивать количество кроликов настолько, насколько нам нужно. Мы не просто хотим изучать C # - мы хотим научиться писать чистый код C #!

Вот почему мы можем использовать список. Список - это коллекция; Сама переменная, которая в основном содержит ссылки на другие переменные. В этом случае мы могли бы составить список Кроликов, и хорошая новость в том, что это очень легко понять:

Список RabbitList = новый список(); RabbitList.Add (new Rabbit («Джефф», «Коричневый», 1, 1)); RabbitList.Add (новый кролик («Сэм», «белый», 1, 2));

Это создает нового кролика, как и раньше, но одновременно добавляет кролика в список. Точно так же мы могли бы сказать это:

Кролик Кролик3 = новый Кролик («Джонни», «Апельсин», 1, 1); RabbitList.Add (Rabbit3);

В любом случае, объект был создан и добавлен в список.

Мы также можем удобно и элегантно вернуть информацию из нашего списка кроликов следующим образом:

foreach (var Rabbit in RabbitList) {Console.WriteLine (Rabbit.RabbitName + "весит" + Rabbit.RabbitWeight + "кг"); }

Как вы могли бы понять, «foreach» означает, что вы повторяете шаг один раз для каждого элемента в списке. Вы также можете получить информацию из своего списка следующим образом:

RabbitList.Eat ();

Здесь «1» - это индекс, означающий, что вы имеете в виду информацию, хранящуюся в первой позиции. Как это происходит, это на самом деле второй Кролик, которого вы добавили: списки в программировании всегда начинаются с 0.

Фибоначчи

Если вы еще не догадались, мы собираемся использовать всю эту информацию для создания последовательности Фибоначчи. В конце концов, если вы изучаете C # для Android, вы должны быть в состоянии сделать что-то интересное со всей этой теорией!

В последовательности Фибоначчи кроликов закрывают в комнате и оставляют для размножения. Они могут размножаться через один месяц, после чего они становятся половозрелыми (я не могу подтвердить, является ли это правильной биологией кроликов). Если каждая пара кроликов может производить один раз в месяц, производя двух потомков, вот как выглядит последовательность:

1,1,2,3,5,8,13,21,34

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

Круто, мы можем повторить это.

Во-первых, нам нужно ввести новую концепцию: цикл. Это просто повторяет один и тот же код снова и снова, пока не будет выполнено условие. Цикл «for» позволяет нам сделать это, создав переменную, установив условия, которые мы хотим выполнить, а затем оперируя ею - все они определены в квадратных скобках:

for (int месяцы = 0; месяцы <100; месяцы ++) {// Делать что-то}

Таким образом, мы создаем целое число, называемое месяцами, и зацикливаемся, пока оно не станет равным 100. Затем мы увеличиваем количество месяцев на один.

Хотите посмотреть, как это может стать последовательностью Фибоначчи? Вот:

пространство имен ConsoleApp2 {class Program {static void Main (строковые аргументы) {List RabbitList = новый список(); RabbitList.Add (new Rabbit ("Jeff", "brown", 0, 1)); RabbitList.Add (new Rabbit ("Sam", "white", 0, 1)); для (int месяцы = 0; месяцы <10; месяцы ++) {int firstRabbit = 0; int timesToReproduce = 0; foreach (var Rabbit in RabbitList) {Console.Write ("R"); if (Rabbit.RabbitAge> 0) {if (firstRabbit == 0) {firstRabbit = 1; } else {firstRabbit = 0; timesToReproduce ++; }} Rabbit.RabbitAge ++; } for (int i = 0; i <timesToReproduce; i ++) {RabbitList.Add (new Rabbit ("NewBabyRabbit", "brown", 0, 1)); RabbitList.Add (new Rabbit ("NewBabyRabbit", "brown", 0, 1)); Console.Write ( "г"); Console.Write ( "г"); } Console.WriteLine ("--- Есть" + RabbitList.Count / 2 + "пары кроликов!"); Console.WriteLine ( ""); } Console.WriteLine («Все готово!»); Console.ReadKey (); }}}

Хорошо, это было сложнее, чем я думал!

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

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

Кстати, я хотел бы увидеть любые другие подходы!

Куда мы отправимся отсюда? Как научиться C # для Android

Обладая всеми этими знаниями, вы готовы начать с чего-то большего. В частности, вы готовы попробовать программирование на Android с использованием C # в Xamarin или Unity.

Это отличается тем, что вы будете использовать классы, предоставляемые Google, Microsoft и Unity. Когда вы пишете что-то вроде «RigidBody2D.velocity», вы получаете доступ к свойству из класса называется RigidBody2D. Это работает точно так же, с той лишь разницей, что вы не видите RigidBody2D, потому что вы не создали его самостоятельно.

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

  • Как сделать приложение для Android с Xamarin
  • Создайте свою самую первую игру для Android за 7 минут с Unity

В следующем уроке мы также рассмотрим, как вы можете сделать разворот и использовать его для создания приложений Windows!

Verizon в настоящее время является вторым по величине оператором беспроводной связи в Соединенных Штатах, с 156,1 миллионами абонентов, которые раскачивают планы Verizon Wirele по состоянию на июнь 2...

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

Посмотрите