Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Роль наследования






Н аследование – касается способности языка позволять строить новые определения классов на основе определений существующих классов. По сути, наследование позволяет расширять поведение базового класса, наследуя основную функциональность в производном подклассе.

Т.е. наследование представляет собой процесс, в ходе которого один объект приобретает свойства другого объекта. Это очень важный процесс, поскольку он обеспечивает принцип иерархической классификации. Если вдуматься, то большая часть знаний поддается систематизации благодаря иерархической классификации по нисходящей.

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

 

Роль полиморфизма

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

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

Контрольные вопросы:

1. Что понимается под термином «ООП»?

2. Роль инкапсуляции

3. Роль наследования

4. Роль полиморфизма

Лекция 10-11. Классы и объекты

План:

1. Основные понятия

2. Функциональные элементы класса

2.1. Данные: поля и константы

2.2. Методы

2.3. Конструкторы

2.4. Деструкторы

2.5. Свойства

2.6. Индексаторы

3. «Один класс – один файл»

Основные понятия

Класс – это обобщенное понятие, определяющие характеристики и поведение некоторого множества объектов, называемых экземплярами класса. «Классический» класс содержит данные, определяющие свойства объектов класса, и методы, определяющие их поведение. Для Windows-приложений в класс добавляется третья составляющая – события, на которые может реагировать объект класса. Все классы библиотеки.Net, а также все классы, которые создает программист в среде.Net, имеют одного общего предка – класс object.

Все программы, рассмотренные ранее, состояли из одного класса с одним методом main и несколькими вспомогательными статическими методами.

Теперь рассмотрим понятие «класс» более подробно.

Описание класса содержит ключевое слово class, за которым следует его имя, а да­лее в фигурных скобках – тело класса. Кроме того, для класса можно задать его базовые классы (предки) и ряд необязательных ат­рибутов и спецификаторов, определяющих различные характеристики класса:

[ атрибуты ] [ спецификаторы ] class имя_класса [: предки ]

{тело_класса}

Простейший пример класса: class Demo{}

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

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

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

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

Demo a = new Demo (); // Создается экземпляр класса Demo

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

В общем случае класс может содержать следующие функциональные элементы:

1. Данные (переменные или константы)

2. Методы (реализующие не только вычисления, но и другие действия, выполняемые классом или его экземпляром)

3. Конструкторы (реализуют действия по инициализации экземпляров или клас­са в целом)

4. Свойства (определяют характеристики класса в соответствии со способами их задания и получения)

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

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

7. Операции (задают действия с объектами с помощью знаков операций)

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

9. Типы (типы данных, внутренние по отношению к классу)

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

Рисунок 3.1 – Механизм выполнения присваивания

Пусть были созданы три объекта а, b и с, а за­тем выполнено присваивание b = с. Теперь ссылки b и с указывают на один и тот же объект. Старое значение b становится недоступным и очищается сборщиком мусора.

Аналогичная ситуация с операцией проверки на равенство. Величины значимого типа равны, если равны их значения. Величины ссылочного типа равны, если они ссылаются на одни и те же данные. Так, объекты b и с равны, т.к. они ссылаются на одну и ту же область памяти. Но а не равно b даже при равенстве их значений.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.