Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
voprosy_NEW.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать

33. Объектно-ориентированное программирование. Абстрактные типы и классы.

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

Поля

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

константы

Константы — это поля или свойства, значения которых устанавливаются во время компиляции и не изменяются.

свойства

Свойства — это методы класса. Доступ к ним осуществляется так же, как если бы они были полями этого класса. Свойство может защитить поле класса от изменений (независимо от объекта).

методы

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

события

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

операторы

Перегруженные операторы рассматриваются как члены класса. При перегрузке оператора его следует определить как открытый статический метод в классе. Предопределенные операторы (+*< и т. д.) не считаются членами.

индексаторы

Индексаторы позволяют индексировать объекты аналогично массивам.

конструкторы

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

деструкторы

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

Вложенные типы

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

Модификаторы доступа: private (закрытый, внутренний член класса) — обращения к члену допускаются только из методов того класса, в котором этот член определён. protected (защищённый, внутренний член иерархии классов) — обращения к члену допускаются из методов того класса, в котором этот член определён, а также из любых методов его классов-наследников. public (открытый член класса) — обращения к члену допускаются из любого кода. Конструктор представляет собой специальную функцию, которую автоматически вызывает каждый раз при создании объекта. class CoOrds

{ public int x, y;

// constructor

public CoOrds()

{ x = 0; y = 0; }}

Обычное назначение конструктора заключается в инициализации элементов данных объекта. Конструктор имеет такое же имя, как и класс. Конструктор не имеет возвращаемого значения. Когда вы позже объявляете объект, вы можете передавать параметры конструктору, как показано ниже: class_name object(valuel, value2, value3). Деструктор представляет собой функцию, которую автоматически запускает, когда он или ваша программа уничтожает объект. Деструктор имеет такое же имя, как и класс объекта; однако вы предваряете имя деструктора символом тильды (~), например ~employee. Насле́дование — механизм объектно-ориентированного программирования, позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом. Мно́жественное насле́дование — свойство, поддерживаемое частью о-о языков программирования, когда класс может иметь более одного непосредственного класса-родителя. Полиморфи́зм возможность объектов с одинаковой спецификацией иметь различную реализацию. Когда переменная базового класса может использоваться для хранения переменних производных классов. Но при этом мы не сможем использовать методы из производного класса. Как эту неприятность можно обойти? Для этого как раз и служит механизм виртуальных функций(virtual public void имя(int …){…}). Если в родительском классе некоторая функция объявлена как виртуальная, то в производном классе ее можно переопределить. В этом, собственно говоря, ничего нового нет – это мы могли делать и без всяких виртуальных функций. Новое заключается в том, что если мы запишем в переменную типа родительского класса экземпляр проиводного, то для такого экземпляра мы сможем вызывать переопределенную функцию производного класса. Абстрактный класс— базовый класс, который не предполагает создания экземпляров. Абстрактные классы реализуют на практике один из принципов ООП - полиморфизм.

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