Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_Answers_new_v_2_0-1(1).doc
Скачиваний:
22
Добавлен:
09.08.2019
Размер:
147.46 Кб
Скачать
  1. Конструкторы: понятие, назначение, примеры применения. Параметризованные конструкторы. Конструкторы «по-умолчанию». Скрытые (private) конструкторы. Полный.

Конструктор — метод, вызываемый при создании объекта.

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

Конструктор не имеет явным образом определенного типа возвращаемых данных.

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

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

Конструктор без параметров обычно переопределяется в классе-потомке.

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

Если конструктор не определен вообще, он автоматически наследует конструктор от класса “Object” (в C#).

Деструктор — метод, служащий для деинициализации (удалении) объекта (например, освобождение памяти).

Деструктор отличается от конструктора тем, что имеет символ ~ перед именем деструктора, которое также совпадает с именем класса.

Закрытый конструктор. Особый конструктор экземпляров.

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

  1. Инкапсуляция: понятие, назначение, примеры применения. Ограничение области видимости членов класса (private, public, protected, internal). Полный.

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

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

  • Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов (модификаторов): private, protected, internal.

Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием).

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

  • предельная локализация изменений при необходимости таких изменений,

  • прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.

Целью инкапсуляции является обеспечение согласованности внутреннего состояния объекта. В C# для инкапсуляции используются публичные свойства и методы объекта. Переменные, за редким исключением, не должны быть публично доступными.

Модификатор — средство ограничения доступа к членам класса.

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

  • public — обеспечение доступа из любого места программы.

  • internal — ограничение видимости внутри сборки (сборка — код программы после компиляции). // в C#

  • protected — обеспечение доступа наследникам, но запрет доступа пользователю.

  • private — обеспечение доступа только внутри класса.