Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP Answers (selectively).docx
Скачиваний:
11
Добавлен:
02.08.2019
Размер:
30 Кб
Скачать
☆
  1. Класс. Синтаксис объявления класса. Ссылка на самого себя.

Классы в языке C# определяются следующим образом:

public class A

{

public A()

{

// Определение конструктора

}

public int k;

// Член, доступный любому классу программы

internal int l;

// Член, доступный любому классу в том же модуле программы

protected internal int m;

// Член, доступный любому классу в том же модуле программы либо только текущему классу и всем его подклассам в другом модуле

protected int n;

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

private int p;

// Член, доступный только из текущего класса (по умолчанию)

}

Виды классов:

  • Базовый класс (суперкласс / родитель) — класс, на основе которого создаются другие классы.

  • Производный класс (дочерний / потомок) — класс, наследуюший поля и методы другого класса.

  • Абстрактный класс — класс, не предполагающий создания экземпляров (объектов класса).

  • Интерфейс — семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом.

  1. Конструкторы и деструкторы. Функциональное назначение. Виды конструкторов.

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

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

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

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

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

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

Если конструктор не определен вообще, он наследуется от класса “obj”.

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

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

  1. Объекты и их жизненный цикл. Создание и уничтожение объектов.

В качестве оператора, “new” используется для создания объектов и вызова конструкторов.

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

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

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

  1. Инкапсуляция. Определение. Функциональное назначение. Реализация. Примеры применения.

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

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

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

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

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

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

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

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

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