Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_OOP.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
302.59 Кб
Скачать
  1. Проектирование классов с методами без побочных эффектов.

Побочный эффект – селнктор изменяет состояние:

function f(n: integer): integer;

var I,a: integer;

begin

for i := 1 to n do

a := 3 * a – 2;

Result := a

end;

  1. Проектирование по контракту: пред и постусловия, инвариант класса.

Контракты класса:

  1. Предусловие программы может включать начальное состояние и аргументы.

  2. Постусловие может включать только заключительное состояние, начальное состояние, (используя нотацию old) и, в случае функций, возвращаемое значение, заданное предопределенной сущностью Result.

  3. Экземпляры класса обладают также глобальными свойствами. Их принято называть инвариантами класса. Инвариант класса C это множество утверждений (Inv), которым удовлетворяет каждый экземпляр класса во все "стабильные" времена. Инвариант может включать только состояние.

  1. Понятие метаклассов.Поддержка метаклассов в различных языках программирования.

Метакласс (англ. Metaclass) — в объектно-ориентированном программировании это класс, экземпляры которого в свою очередь являются классами

Чтобы представить себе, что такое метакласс, рассмотрим пример некой бюрократической организации. Будем считать, что все классы в такой системе представляют собой строгие инструкции, которые описывают, что нужно сделать, чтобы породить новый объект (например, нанять нового служащего или открыть новый отдел). Как и полагается классам, они описывают все свойства новых объектов (например, зарплату и профессиональный уровень для сотрудников, площадь и имущество для отделов) и их поведение (обязанности служащих и функции подразделений). В свою очередь, написание новой инструкции можно строго регламентировать. Скажем, необходимо использовать специальный бланк, придерживаться правил оформления и заполнить все обязательные поля (например, номер инструкции и фамилии ответственных работников). Такая "инструкция инструкций" и будет представлять собой метакласс в ООП.

Итак, объекты порождаются от классов, а классы — от метакласса. Он, как правило, в системе только один. Но существуют языки программирования, в которых можно создавать и использовать собственные мета- классы, например язык Python. 

В языке Java также есть метакласс. Это класс, который так и называется — Class (описывает классы), он располагается в основной библиотеке java.lang. 

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