Структурный тип как параметр — КиберПедия 

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Структурный тип как параметр

2021-04-18 70
Структурный тип как параметр 0.00 из 5.00 0 оценок
Заказать работу

Дальнейшее использование структурного типа повышает уровень Вашего программного кода. Например, применение параметров структурного типа делает функции (методы) более естественными:

static void PersonAnalyze(Person p)

{ if (p.Height-p.Weight> 100.0)

Console.WriteLine(p.Name + " худой");

else

Console.WriteLine(p.Name + " полный");

}

Использование такого метода в Main подчеркивает, что Ваша программа оперирует сущностями предметной области, а не примитивными порциями данных:

PersonAnalyze(me);

PersonAnalyze(you);

Помещаем метод в структурный тип

В предыдущем примере метод PersonAnalyze имеет довольно слабое отношение к структурному типу Person (только название). Основной причиной этого является размещение метода за пределами структурного типа Person.

Проделаем следующую трансформацию программы:

01 struct Person

02 { public string Name;

03   public double Height;

04   public double Weight;

05    public void PersonAnalyze()

06   {

   if (Height-Weight>100.0)

        Console.WriteLine(Name+" полный");

07      else Console.WriteLine(Name + " худой");

08   }

09 }

10 class Program

11 { static void Main(string[] args)

12   { Person me, you;

13     me.Name = "”Это я"; me.Height = 190.0; me.Weight=85;

14     you.Name="Это ты"; you.Height=140.0; you.Weight=85;

15     me.PersonAnalyze();

16     you.PersonAnalyze();

17   }

18 }

Первое, что следует отметить – метод PersonAnalyze стал частью структурного типа Person. При этом в его описании исчезло слово static. Это означает, что вызов метода будет осуществляться структурной переменной этого типа. В стр. 15 и 16 мы видим два таких вызова. Важно, что в методе PersonAnalyze пропали параметры. Когда переменная me вызывает метод PersonAnalyze, нет необходимости также передавать дополнительные данные через параметры – необходимые величины находятся в полях структурного типа и доступны методу. Кроме того, вызовы me.PersonAnalyze и you.PersonAnalyze дадут различные результаты, поскольку используют различные данные двух различных структур.

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

Превращение в класс

Наконец, рассмотрим последнюю модификацию программы.

01 class Person

02 { public string Name;

03   public double Height;

04   public double Weight;

05   public void PersonAnalyze()

06   { if (Height-Weight>100.0) Console.WriteLine(Name+" худой ");

07     else Console.WriteLine(Name + " полный ");

08   }

09 }

10 class Program

11 { static void Main(string[] args)

12   { Person me;

13     me = new Person();

14     Person you = new Person();

15     me.Name="Это я"; me.Height=190.0; me.Weight=85;

16     you.Name="Это ты"; you.Height=140.0; you.Weight=85;

17     me.PersonAnalyze();

18     you.PersonAnalyze();

19   }

20 }

Во-первых, в заголовке структурного типа слово struct заменено ключевым словом class. Как следствие, в методе Main уже недостаточно только описать переменые. Переменные, порождаемые на основании класса, называются объектами и требуют обязательного создания с помощью операции new. Мы видим, что эту операцию можно выполнить в отдельном операторе присваивания (стр.13) и в момент описания переменной с инициализацией (стр.14).

Пока разница между структурными типами и классами не очень заметна. После прочтения этого пособия Вы сможете аргументировано оценить эту разницу самостоятельно.

Классы и объекты

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

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


Поделиться с друзьями:

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.