Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен в гаи redacted.doc
Скачиваний:
5
Добавлен:
27.09.2019
Размер:
676.35 Кб
Скачать

3. Каков результат компиляции и выполнения приведенного ниже кода?

static void Main(string[] args)

{

Console.WriteLine(GetSomeResult(10000));

}

static long GetSomeResult(long someValue)

{

long value1 = 10 * 1000 * 10000 * someValue;

long value2 = 10 * 1000 * 10000 * 100000;

return value2 / value1;

}

Ответ: из-за строчки long value2 = 10 * 1000 * 10000 * 100000 возникает ошибка компиляции (переполнение int), поскольку вычисления производятся в int арифметике до присвоения значения переменной value2. Чтобы ошибки не возникало, нужно использовать один из параметров типа long, для этого можно явно указать литеру L у одного из чисел long value2 = 10 * 1000 * 10000 * 100000L;

Экзаменационный билет №2

1. Основные понятия ооп - инкапсуляция, наследование, полиморфизм.

Наследование – способность классов порождать себе подобные классы-наследники. Наследник получает от родительского класса все его сущности (поля, методы, свойства, делегаты) и может дополнять их своими, придающими наследнику дополнительную функциональность по сравнению с родительским классом. Такой подход способствует поэтапному созданию новых классов.

Полиморфизм – способность родственных (то есть имеющих общий родительский класс) объектов решать схожие по смыслу проблемы разными способами. Для этого в каждом классе-потомке следует переопределить нужный родительский метод. Например, для классов Circle, Line или Rectangle, являющихся наследниками класса GeomethricShape, следует переопределить родительский метод Draw(), ответственный за отрисовку фигур, чтобы нарисовать, соответственно, окружность, линию или прямоугольник.

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

2. Отношение между объектами. Включения и коллекции.

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

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

Коллекции. Один класс выступает в роли контейнера для нескольких экземпля­ров другого класса. Эти отношения напоминают те, что образуются при созда­нии массивов объектов, но предусматривают дополнительные функциональные возможности, наподобие индексации, поиска, изменения размера, также могут быть реализованы методы Add() и Remove() и т.д.

Рис. 2.2.1