Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_k_zachetu.docx
Скачиваний:
43
Добавлен:
10.05.2015
Размер:
233.91 Кб
Скачать

If (YesTreug())

         {

            double p = (a + b + c) / 2;

            s = Math.Sqrt(p * (p - a) * (p - b) * (p - c));

         }

         else

         {

            Console.WriteLine("Треугольник не существует.");

            s = -1;

         }

         return s;

      }

      // Закрытый метод для проверки существования треугольника

      private bool YesTreug()

      {

         if(a + b > c && a + c > b && b + c > a)

            return true;

         else

            return false;

      }

   }

   class Program

   {

      public static void Main(string[] args)

      {

         Console.WriteLine("Тестирование класса Treug (треугольник)");

         Treug x = new Treug();

X.Vvod();

         double s = x.Pl();

         Console.WriteLine("Площадь треугольника s={0}", s);

         Console.Write("Press any key to continue . . . ");

         Console.ReadKey(true);

      }

   }

}

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

Спецификатор

Описание

1

new

Используется для вложенных классов. Задает новое описание класса взамен унаследованного от предка. Применяется в иерархиях объектов

2

public

Доступ не ограничен

3

protected

Используется для вложенных классов. Доступ только из элементов данного и производных классов

4

internal

Доступ только из данной программы (сборки)

5

protected internal

Доступ только из данного и производных классов или из данной программы (сборки)

6

private

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

7

abstract

Абстрактный класс. Применяется в иерархиях объектов, рассматривается в главе 8

8

sealed

Бесплодный класс. Применяется в иерархиях объектов, рассматривается в главе 8

9

static

Статический класс. Введен в версию языка 2.0. Рассматривается в разделе «Конструкторы»

Спецификаторы 2–6 называются спецификаторами доступа. Они определяют, откуда можно непосредственно обращаться к данному классу. Спецификаторы доступа могут присутствовать в описании только в вариантах, приведенных в таблице, а также могут комбинироваться с остальными спецификаторами.

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

  • Константы класса хранят неизменяемые значения, связанные с классом;

  • Поля содержат данные класса;

  • Методы реализуют вычисления или другие действия, выполняемые классом или экземпляром;

  • Свойства определяют характеристики класса в совокупности со способами их задания и получения, то есть методами записи и чтения;

  • Конструкторы реализуют действия по инициализации экземпляров или класса в целом;

  • Деструкторы определяют действия, которые необходимо выполнить до того, как объект будет уничтожен;

  • Индексаторы обеспечивают возможность доступа к элементам класса по их порядковому номеру;

  • Операции задают действия с объектами с помощью знаков операций;

  • События определяют уведомления, которые может генерировать класс;

  • Типы — это типы данных, внутренние по отношению к классу.

  1. Создание объектов. Понятие ссылки.

Объект — это конкретная сущность, основанная на классе и иногда называемая экземпляром класса. Объекты можно создавать с помощью ключевого слова new, за которым следует имя класса, на котором будет основан объект:

Customer object1 = new Customer();

При создании экземпляра класса ссылка на этот объект передается программисту. В предыдущем примере object1 является ссылкой на объект, основанный на Customer. Эта ссылка указывает на новый объект, но не содержит данные этого объекта. Фактически, можно создать ссылку на объект без создания самого объекта:

Customer object2;

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

Customer object3 = new Customer();

Customer object4 = object3;

В данном коде создаются две ссылки на объекты, которые указывают на один объект. Поэтому любые изменения объекта, выполненные посредством object3, будут видны при последующем использовании object4. Поскольку на объекты, основанные на классах, указывают ссылки, классы называют ссылочными типами.

Как это ни покажется странным, но в С# допускается объявлять переменные ссылочного интерфейсного типа, т.е. переменные ссылки на интерфейс. Такая переменная может ссылаться на любой объект, реализующий ее интерфейс. При вызове метода для объекта посредством интерфейсной ссылки выполняется его вариант, реализованный в классе данного объекта. Этот процесс аналогичен применению ссылки на базовый класс для доступа к объекту производного класса.

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

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

  • Class;

  • Interface;

  • Deleg.

  1. Массивы: одномерные, многомерные, невыровненые, массивы объектов.

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

Индексный массив — именованный набор однотипных переменных, расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу.

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

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

Одномерный массив объектов объявляется следующим образом:

тип_элемента[] имя_массива;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]