Создание объектов и задание их начальных состояний

2 Вопроса:

1) Какими средствами задаются объекты в классах С++?

2) Почему и как необходимо проектировать конструкторы?

Тезисы:

1) Общие сведения о конструкторах числятся известными (УВП).

2) В предстоящем изложении основное внимание будет уделено реализации модели ООП конструкторами С++.

Способности конструкторов класса С++ для реализации модели ООП

1. Для сотворения объектов в С++ есть средства, именуемые Создание объектов и задание их начальных состояний конструкторами, которые делают некие сути, именуемые экземплярами класса.

2. Суть, создаваемая конструктором, есть область памяти (С++ нацелен на память),

- разбитая на части для размещения членов класса

- наделенная правилами системы типов (функция либо данное принадлежит какому-либо типу)

- снабженное правилами доступа

3. Конструктор, создавая описанную суть, устанавливает для нее отношение "быть экземпляром класса".

4. Конструктор Создание объектов и задание их начальных состояний класса С++

- может задавать значение всех членов-данных, т.е. задавать состояние объекта вполне

- может задавать значение части членов-данных, т.е. задавать состояние отчасти

- может не задавать никаких значений членов-данных

5. Предоставленный компилятором по дефлоту конструктор не задает преднамеренно значений членов-данных.

6. Если конструктор задает значения всех членов-данных, то он делает Создание объектов и задание их начальных состояний объект в смысле модели ООП и устанавливает отношение «быть объектом класса».

7. Для реализации модели ООП программер сам должен определять один либо несколько конструкторов, задающих стопроцентно состояние объекта.

8. С++ позволяет программеру задать как состояние объекта, так и метод формирования этого состояния.

9. В классе С++ может быть определено несколько конструкторов Создание объектов и задание их начальных состояний, что обеспечивается имеющимися в С++ правилами переопределения функций.

24. Создание объектов прямым заданием значений членов-данных

10. Конструктор С++ позволяет создавать объекты с прямым заданием значений членов-данных.

11. Прямое задание реализуется:

- конкретным присвоением значений членам-данным, в теле конструктора без использования характеристик конструктора.

- задание значений членов-данных с внедрением характеристик конструктора

- списки инициализации

Задание значений членов-данных Создание объектов и задание их начальных состояний с внедрением перечня инициализации.

Ситуация прямого задания характеризуется:

1) Отсутствием объекта такого же либо другого класса

2) В теле конструктора либо в перечне инициализации программер показывает и член - данное, и требуемое для него значение.

Метод задания Применяемый объект Описание инфы о значениях атрибутов значений Вид конструктора, реализующего метод задания Метод вызова конструктора Создание объектов и задание их начальных состояний Ссылка на примеры
Прямое задание членов данных Отсутствует Единственный полный набор значений членов-данных Конструктор без характеристик с присваиванием значений набора в теле конструктора Без характеристик
Полный набор без приоритетных значений С параметрами без значений по дефлоту С параметрами
Полный набор значений характеристик, но для части значений заданы Создание объектов и задание их начальных состояний приоритетные значений С параметрами, часть которых, после некого, имеет приоритетные значения С параметрами, все из которых после некого имеют значения по дефлоту
Полный набор для всех имеется приоритетные значения С параметрами все имеют приоритетные значения С параметрами и без характеристик

25. Создание объектов копированием

12. Конструктор С++ может сделать объект Создание объектов и задание их начальных состояний класса методом сотворения четкой либо модифицированной копии объекта такого же класса.

13. Эта возможность реализуется методом сотворения программером конструктора копирования, при всем этом характеристик этого конструктора программер может достигнуть конфигурации приобретенной копии.

14. С++ позволяет программеру найти конструктор копирования с несколькими параметрами. При всем этом 1-ый параметр обязан иметь вид:

(1) имя_класса &имя_объекта

------------------ принадлежит Создание объектов и задание их начальных состояний тому же классу, что и конструктор

(2) const имя_класса &имя_объекта

Все следующие характеристики перечня должны должны непременно иметь значение по дефлоту.

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

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

Пример:

Class Point

{

int X; int Y;

//...

public:

Point () {X=1; Y=2;}

Point ( int X0, int Y0) {X=X0; Y=Y0;}

Point ( int X0): X(X0), Y(1) { }

Point ( const Point &Q, int Y0=0) {X=Q.X; Y=Q.Y;}

}

Метод задания Применяемый объект Описание инфы о значениях Создание объектов и задание их начальных состояний атрибутов значений Вид конструктора, реализующего метод задания Метод вызова конструктора Ссылка на примеры
Копирование Такого же класса Полный набор значений определяется копируемым объектов Конструктор копирования с одним значением – копируемым объектом С одним параметром
Полный набор значений часть из которых определяется копируемым объектом, а часть из которых имеет приоритетные значения Создание объектов и задание их начальных состояний Копирования, с первым – копируемое значение, а другие приоритетные значения С параметрами, 1-ый – копируемый объект, а другие со значениями по дефлоту.

26. Создание объектов преобразованием

15. Программер имеет возможность сделать объект класса методом преобразования объекта другого класса.

Пример: (очевидный) конструктор преобразования объекта типа int в объект типа Point

Class Point

{

int X; int Y;

public:

Point Создание объектов и задание их начальных состояний ( int X0, int Y0);

}

Пример: (не очевидный)

Class Point

{

int X; int Y;

public:

Point (Square S);

}

Class Square

{

Point P;

Unsigned int W;

Public:

Point GetP() { return P; }

}

Point :: Point (Square S) { X=S.GetP(); }

16. В конструкторе С++ можно выполнить защиту значений характеристик с внедрением спецификатора const.

17. Конструктор класса С++ не Создание объектов и задание их начальных состояний может иметь идентификатор const и не может иметь спецификатор static.

18. Конструктор класса С++ может иметь значение по дефлоту и в ООП это употребляется для задания приоритетных значений, определяемых содержанием задачки.

Метод задания Применяемый объект Описание инфы о значениях атрибутов значений Вид конструктора, реализующего метод задания Метод вызова конструктора Ссылка Создание объектов и задание их начальных состояний на примеры
Преобразование объекта другого класса Объект другого класса Полный набор значений, задаваемый преобразуемым объектом Конструктор преобразования с одним значением – преобразуемым объектом С одним параметром
Полный набор: часть значений задано преобразуемым объектом, часть по дефлоту Преобразования, с первым – модифицирующее значение, а другие приоритетные значения С параметрами, 1-ый – преобразуемый объект Создание объектов и задание их начальных состояний, а другие со значениями по дефлоту.
Полный набор значений: часть задана преобразуемым объектом, часть без приоритетных значений, часть с приоритетными значениями Преобразования, первым параметром – преобразуемое значение, часть без приоритетных значений, часть со значениями по дефлоту. С параметрами: 1-ый - преобразуемый объект, часть со значениями характеристик, другие со значениями по дефлоту Создание объектов и задание их начальных состояний.
Полный набор: преобразуемый объект, другие не имеют приоритетных значений Преобразования, первым параметром – преобразуемое значение, другие приоритетных значений С параметрами: 1-ый - преобразуемый объект, другие со значениями характеристик.

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

В принципе, членом-данным класса может являться другой класс, указатель Создание объектов и задание их начальных состояний на другой класс либо ссылка на другой класс. С указателями заморочек не появляется вообщем. С ссылками неувязка имеется, так как неважно какая ссылка – константа. Её необходимо инициализировать в заголовке конструктора при помощи c-tor инициализации. С реальным объектом ещё большая неудача – для него в заголовке конструктора включающего класса должен быть очевидно Создание объектов и задание их начальных состояний вызван конструктор с параметрами. Но, если включаемый класс имеет конструктор по дефлоту, очевидного вызова в заголовке включающего класса можно не делать. И ещё: если класс содержит другие классы, то поначалу создаются объекты включаемых классов в порядке объявления, а потом – объект включающего класса.

28. Проектирование конструкторов класса языка С++

  1. Язык Создание объектов и задание их начальных состояний С++ позволяет для класса сделать набор конструкторов.
  2. Набор конструкторов м.б. задан для класса, определяется:

ü Информацией о методах сотворения и задания исходных значений.

ü Методы автоматического вызова конструкторов в программках на С++

ü Механизм переопределения функций на языке С++

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

Пример.

Class Point

{

int x; int y Создание объектов и задание их начальных состояний;

public:

Point (int x0; int y0)

{x=x0; y=y0;}

}

class Square

{

Point P; //требуется конструктор без характеристик

unsigned int w;

public:

Square (Point Q; unsigned int w0)

{P=Q; w=w0}

}

// основная программка

Point P(4,2);

Square (p,10);

Вывод: некорректность композиции класс Point и класс Square не обеспечивает вызов конструктора без Создание объектов и задание их начальных состояний характеристик, который требуется при разработке подобъекта точка при разработке объекта Квадрат.

  1. Автоматический вызов конструктора класса С++ реализуется в последующих случаях:

ü При объявлении объектов в неких формах и задании их исходных состояний.

Пусть Т – класс

x- объект класса Т

а – объект класса Т либо другого класса

Т х

Т х(а)

Т х=а

Т х Создание объектов и задание их начальных состояний=Т(а)

ü При передаче объектов в качестве характеристик в тело функции.

ü При возврате значения функции с внедрением ее имени.

ü При разработке объектов при помощи оператора new

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

  1. В рассмотренном примере вероятны последующие случаи обеспечения его корректости:

4.1. Убрать из Создание объектов и задание их начальных состояний класса Point имеющийся там конструктор и добавить конструктор без характеристик

4.2. Убрать конструктор с параметрами и пользоваться конструктором предоставляемы компилятором.

4.3. Добавить в конструктор значения по дефлоту.

Задание 16. На теоретическом уровне, фактически и экспериментально ответить на вопрос: если в классе объявлена функция без значений по дефлоту, можно ли добавить значения по Создание объектов и задание их начальных состояний дефлоту в 1) файле реализации

2) в файле использующем функцию

4.4. С технологической позиции предоставляется целесообразным сделать последующее: необходимо задать вызов подходящего конструктора до выполнения функции Квадрат. В С++ существует перечень инициализации.

Формат перечня инициализации:

Имя_класса (список_параметров): имя_члена_данного (перечень выражений)

{

//тело конструктора

}

Пример:

// реализация способности 4.4

Square (Point Q, unsigned int w0): P(Q1), w Создание объектов и задание их начальных состояний(w0)

{}

Примечание: С++ позволяет защитить передаваемые значения.

29. Принципы проектирования классов.

  1. Создание класса является задачей проектирования, решение которого находится в зависимости от:

ü Точного и полного осознания содержания предметной области.

ü Представления о вероятном развитии решаемых задач

ü От опыта, интуиции и познаний проектировщика

  1. Серьезных формальных методов проектирования класса не существует.
  2. Мастера определяют Создание объектов и задание их начальных состояний советы по построению классов, учитывающих опыт, средства реализации, тенденции развития.

Принципы проектирования классов.

  1. Принцип очевидного отображения объекта в предметной области.

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

  1. Принцип прямого Создание объектов и задание их начальных состояний (конкретного) отображения объектов в проблемной(предметной) области.

Square

{Point P;

Unsigned int w;

}

Square

{

Int x; int y; /*координаты левой верхней верхушки*/

MoveToPoint (PointQ);

}

  1. Принцип отсутствия дублирования.

Point

{

int x;

int y;

MoveToPoint(PointQ);

}

Члены-данные и члены-функции должны быть заданы так, чтоб исключить наличие членов-данных схожих по смыслу и Создание объектов и задание их начальных состояний форме.

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

  1. Принцип ограничения доступа для юзеров класса.

Юзер класса должен знать о классе только то, что позволяет его использовать.

Ограничение доступа организуется 2-мя действиями:

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

ü Ведение особых функций для работы с членами закрытой части по правилам, установленных классом.

  1. Принцип многофункциональной структурности класса.

Определение класса должно содержать функции 4-х видов:

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

ü деструкторы

ü селекторы

ü модификаторы

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

Реализация: конструкторы Создание объектов и задание их начальных состояний должны стопроцентно задавать экземпляр объекта.

  1. Принцип общей простоты и наглядности.

Определение класса должно быть обычным для осознания.

Общая простота для осознания обеспечивается организацией текста определения направленной на осознание.

Средства организации:

ü приятные имена классов и членов;

ü компактность;

ü обоюдное размещение и членов-данных и членов-функций

  1. Принцип локальной простоты и наглядности Создание объектов и задание их начальных состояний.

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

  1. Принцип модульности.

Части описания класса должны быть разбиты на части так, чтоб любая эта часть могла быть оформлена в виде 1-го файла.

Задание 17. Для каждого принципа привести примеры реализации принципа.

30. Проектирование класса по договору.

  1. Основное предназначение договора Создание объектов и задание их начальных состояний это найти строго условие использования его потребителем.
  2. Условия внедрение задаются правами и обязательствами сторон.
  3. Класс предоставляет юзеру некие способности определенные при каких-либо критериях и гарантирует компанию этих способностей при выполнении этих критерий.
  4. Юзер класса должен выполнить условия, которые выдвигает класс для реализации способностей.
  5. Способности класса и условия их реализации Создание объектов и задание их начальных состояний описываются при помощи утверждений.
  6. Структуру договора образуют

ü Предусловия для всех членов-функций

ü Постусловия для всех членов-функций

ü Инвариант для класса

  1. Предусловие для члена-функции класса – это выражение о свойстве характеристик и членов-данных, которые нужны для выполнения ее предназначения.
  2. Постусловие – это выражение, описывающее свойство возвращаемое функцией значения, параметрах и членов-данных нужных для Создание объектов и задание их начальных состояний реализации функции собственного предназначения.
  3. Инвариант класса определяет те характеристики членов данных, которые присущи все объектам класса.

Инвариант класса – это утверждение, которое имеет значение "правда" и тогда только тогда, когда хоть какой способ класса, вызванный

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

  1. Договор для класса – это утверждение, включающее пред и постусловия для всех функций + инвариант класса.
  2. Договор предназначен для проверки критерий, порождаемых задачей и структурой программки, разработанной для ее решения. Эти условия могут быть нарушены программкой.
  3. Процесс составления договора был тщательно на практических Создание объектов и задание их начальных состояний упражнениях и должен быть реализован при выполнении л/р.

31. Отношение наследования в концептуальной модели ООП. Графическое представление наследования.

  1. Ранее внедрение одним классом другого в форме дела включения. Класс как модуль включал объект другого класса.
  2. Концептуальная модель ООП предоставляет вторую возможность использования другим классам. Другой класс заходит Создание объектов и задание их начальных состояний в 1-ый в качестве подмодели.

Наследование в концептуальной модели ООП.

  1. Мысль наследования состоит в заимствовании одним классом другого класса. Сам класс – модель, он заимствует другой класс как подмодель.
  2. Пусть есть два класса В и Д. В связан с Д отношением наследования, и тогда только тогда, когда имя Д имеет в Создание объектов и задание их начальных состояний собственном составе все атрибуты, способы и уровни доступа В.
  3. Когда Д имеет свои собственные атрибуты, способы и уровни доступа, хорошие от В.
  4. Хоть какой объект класса Д ведет себя также, как объект класса В и может быть применен заместо него в соответственных местах программки => правило подстановки.
  5. Отношение наследования ориентировано от Создание объектов и задание их начальных состояний В к Д, т.к. базисный класс порождает.
  6. Выполнить 1-ые 2 условия можно и без наследования: переписав В в Д., объект Д м..б. подставлен во куски. Объект класс Д м.б. применен во всех местах, где описан класс В.
  7. Возможность подстановки фрагментов Д в В обосновано:

ü Модель класса В обладает Создание объектов и задание их начальных состояний теми же способностями, заходит как подмодель в класс Д.

ü Модель В заходит в класс Д на сто процентов.

ü Действует правило подстановки.

  1. При построении Д употребляется две способности:

ü Класс Д добавлен в В только способы (атрибуты не добавляются)

ü Класс Д добавлен в В и атрибуты и способы.

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

  1. Семантика дела наследования: модель класса Д включает стопроцентно модель класса В. Класс Д получает все атрибуты и способы В. Класс Д может добавить свои атрибуты и способы в различных пропорциях. Объект класса Д может употребляться в тех участках программки, которые написаны для класса В Создание объектов и задание их начальных состояний.
  2. Существует два метода установления наследования.

ü Добавление новых атрибутов и способов (специализация)

ü Обобщение, т.е. выделение у нескольких классов общих атрибутов и способов для образования нового класса.


Пример.

class Point

{}

class Square

{

Point P;

}

Class Square: Point

{

// собственные для Square члены (атрибуты и способы)

}

Класс Квадрат – специализация класса Точка (больше деталей – более непосредственно Создание объектов и задание их начальных состояний)


Все фигуры находятся в наследовании класса Точка


Обобщаем – выделяем отдельный класс.

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

  1. Класс может заимствовать модели или от 1-го, или от нескольких классов.

В первом случае наследование обычное, во 2-м – множественное.

Графическое представление наследование (язык UML)

Класс В

Класс Д

Ориентировано в сторону более общего.


32. Задание дела наследования Создание объектов и задание их начальных состояний в языке С++

  1. В С++ класс, который служит для построения нового именуется базисным, а класс который выходит – производным.
  2. Смысл дела наследования в С++ отличается от наследования в концептуальной модели. В С++ еще больше способностей, чем в концептуальной модели ООП.

Вопросы:

В1. Какие классы могут выступать в Создание объектов и задание их начальных состояний качестве базисных?

В2. Как синтаксически задается отношение наследования?

В3. Что получает производный класс от базисного?

В4. Что добавляет производный класс к базисному?

В5. Что может поменять производный класс в использовании модели базисного класса в производном?

В6. Зависит ли структура и способности (характеристики) базисного класса от наличия производного?

В7. Каковы Создание объектов и задание их начальных состояний способности и методы доступа к членам базисного класса из производного класса?

В8. Как производится конструктор базисного класса?

В9. Как д.б. организованы конструкторы производного класса и как будут инициализироваться члены базисного класса.

В10. Как производится конструктор производного класса?

В11. Как д.б. организован деструктор?

  1. Базисными м.б. классы, определенные либо объявленные Создание объектов и задание их начальных состояний как классы. Объявленные классы – хотя бы одна функция не определена.
  2. Для определения либо объявления класса при помощи наследования м.б. построен производной класс.
  3. Формат задания дела наследования.

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

Спецификатор доступа: public, private, protected. Спецификатор может быть не указан, тогда по дефлоту употребляется private.

Пример.

class Point

{

Int x; int y;

public:

MoveToPoint(Point Q);

}

class Square: public Point

{

}

  1. Производный класс может добавить свои члены-данные и свои члены функции.

class Square: private Point

{

unsigned int Создание объектов и задание их начальных состояний w;

public:

unsigned int Area();

}

  1. Область видимости имен производного класса вложена в область видимости базисного класса.

  1. В производном классе могут употребляться имена, совпадающие с именами в базисном классе.

Пример.

class Square: private Point

{

unsigned int w;

public:

void MoveToPoint(Point Q);

// имя MoveToPoint класса Point укрыто таким же Создание объектов и задание их начальных состояний именованием класса Square

}

  1. На структуру базисного класса может оказывать влияние факт, что у него уже есть либо планируется производный класс.

Реализация воздействия:

ü в базисном классе есть секция protected

ü наличие виртуальных функций в базисном классе

Наличие секций protected вызвано рвением предоставить прямой доступ к функциям базисного класса со стороны производного класса.

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

33. Управление доступом в производном классе к членам базисного класса

  1. В этом разделе речь будет идти о прямом конкретном доступе функций производного класса к членам базисного класса
  2. У членов базисного класса существует список клиентов, которые "желали бы" иметь доступ к этим членам.

Этими членами являются:

ü Функции-члены базисного Создание объектов и задание их начальных состояний класса

ü Функции-члены производного класса

ü Функции вне базисного и вне производного классов

ü Функции, дружеские к базисному классу

Замечание. В рамках данного курса дружеские функции рассматриваться не будут.

  1. На возможность прямого доступа оказывают влияние последующие происшествия.

ü Размещение членов в секциях базисного класса

ü Вложение областей видимости базисного и производного классов

ü Воздействие спецификатора вида наследования

Способности Создание объектов и задание их начальных состояний прямого доступа к членам базисного класса, обусловленных ТОЛЬКО размещение в секциях базисного класса и вложением видимости.

Размещение чл. в секциях базисного класса Вид клиента Открытая секция Защищенная секция Закрытая секция
Функции-члены базисного класса имеют имеют имеют
Функции-члены производного класса имеют имеют не имеют
Функции вне базисного и вне производного классов Создание объектов и задание их начальных состояний имеют не имеют не имеют

  1. На способности прямого доступа к членам базисного класса существенное воздействие оказывают спецификаторы доступа.

Трансформация секций базисного класса, обусловленная видом наследования.

Размещение чл. в секциях базисного класса Спецификатор наследования Открытая секция Защищенная секция Закрытая секция
Открытое наследование открытая защищенное нет доступа
Защищенное наследование Создание объектов и задание их начальных состояний защищенное защищенное нет доступа
Закрытое наследование закрытое закрытое нет доступа

  1. С++ при наличии способности доступа к членам базисного класса и сокрытие его имени членами производного класса позволяет открыть доступ к этому члену с внедрением квалификационного имени.

Пример.

void Square:: MoveToPoint(Point Q)

{

Point::MoveToPoint(Q);

}

  1. Закрытые члены базисного Создание объектов и задание их начальных состояний класса не обеспечивают прямой доступ со стороны функций производного класса.
  2. Спецификатор наследования public сохраняет статус в производном классе членов открытых и защищенных секций базисного класса.
  3. Юзер производного класса может использовать вызов открытые члены базисного класса обращаться к объектам производного класса. Производный класс, рассматриваемый как тип, является практически подтипом типа Создание объектов и задание их начальных состояний базисного класса.

Тип является подтипом некого типа и тогда только тогда, когда объекты подтипа являются объектами типа.

В С++ указатель либо ссылка на объект производного класса м.б. автоматом преобразован в указатель либо ссылку базисного класса. Автоматом – без прямых действий программера по контексту использования.

Открытое наследование реализует правило подстановки Создание объектов и задание их начальных состояний на уровне указателей либо ссылок.

  1. Открытое наследование является более частым и обширно применяемым, так как просит для собственного использования познания наименьшего количества деталей.

Защищенное и закрытое наследование требуют большей квалификации программера.

Открытое наследование более соответствует модели ООП.

  1. Защищенное наследование переводит открытые и защищенные секции базисного класса в защищенные секции производного класса Создание объектов и задание их начальных состояний, тем обеспечивая прямой доступ таких секций базисного класса со стороны наследников, закрывая прямой доступ юзерам производного класса.
  2. Закрытое наследование переводит открытые и защищенные секции базисного класса в закрытые секции производного класса. Такое наследование оставляет прямой доступ членам производного класса и закрывает его для юзеров и наследников производного класса.
  3. Защищенное и Создание объектов и задание их начальных состояний закрытое наследование делает недействительным отношение подстановки объекта производного класса заместо объекта базисного класса.
  4. Уровень доступа к члену базисного класса со стороны производного класса м.б. восстановлен до уровня, установленного в базисном классе.

class Point

{

Int x; int y;

public:

MoveToPoint(Point Q);

// эта функция будет нужна в производном классе, а Создание объектов и задание их начальных состояний другие не необходимы

}

class Square: private Point

{

unsigned int w;

public:

Point:: MoveToPoint;

}

Задание 17.

На теоретическом уровне и фактически ответить на вопрос: если базисный класс имеет несколько функций с одним именованием, о сколько восстановлений уровня доступа необходимо написать? А если функции находятся в разных секциях базисного класса?

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

  1. Уровень доступа, модифицированный спецификатором наследования, м.б. восстановлен, но не изменен.

34. Реализация сценариев наследования в классах языка С++.

  1. Наследование создано для сотворения нового класса на базе имеющихся, т.о. наследование является средством Создание объектов и задание их начальных состояний повторного использования.
  2. В концептуальной модели ООП в класс наследник передаются все атрибуты и все способы класса родителя. А так же м.б. добавлены в класс наследник свои способы и атрибуты. В С++ имеются огромные способности для сотворения нового класса методом наследования.
  3. Почти всегда новые классы создаются методом специализации Создание объектов и задание их начальных состояний имеющихся.
  4. При разработке новых классов при помощи наследования м.б. применены и фактически употребляются два подхода.

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

ü 2-ой Создание объектов и задание их начальных состояний: производный класс создается на базе базисного класса и при всем этом стремимся использовать куски программки предназначенной для объектов базисного класса для объектов производного класса.

  1. При построении производного класса на С++ можно управлять:

ü Набором применяемых членов базисного класса

ü Переопределением функций базисного класса

ü Доступом к членам базисного класса.

  1. Сценарием наследования именуется набор методов Создание объектов и задание их начальных состояний, которыми в производном классе управляется доступ к членам базисного класса.
  2. Обобщенные сценарии могут строиться с учетом:

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

№ секции Количество членов базисного класса применяемых в производном классе (все, часть, ни 1-го) Количество переопределенных функций (все, часть, ни одной Создание объектов и задание их начальных состояний) Количество модифицированных уровней доступа Ссылка на примеры
Для чего нужна эта таблица, я не знаю.

Виды сценариев наследования

Описание сценариев Реализация сценариев
Прямое внедрение членов базисного класса Переопределение членов базисного класса Изменение уровней доступа Виды наследования Дополнительные конструкции Ссылки на примеры
Всех/части/не использ. Всех/части/ не использ. Да/нет
Всех Создание объектов и задание их начальных состояний Не использ. Нет Открытое Нет
часть часть Нет Открытое Нет
Не использ. часть Нет Открытое Разрешение областей видимости для членов базисного класса
Не использ. часть да закрытое Восстановление уровня доступа для членов базисного класса

Задание 18. Дополнить таблицу ситуациями, появившимися в л/р 3 и к/р

35. Создание объектов производного класса и задание Создание объектов и задание их начальных состояний их исходных состояний: производный класс не имеет собственных членов-данных.

  1. Производный класс в С++ обязан иметь конструктор для сотворения объектов производного класса.
  2. Конструктор производного класса должен выполнить:

ü Сделать подобъект базисного класса и может быть обеспечить его инициализацию

ü должен сделать члены-данные производного класса и может быть обеспечить их инициализацию.

  1. Для Создание объектов и задание их начальных состояний сотворения подобъектов базисного класса в объекте производного класса конструктор производного класса вызывает конструктор базисного класса. Конструкторы базисных классов вызывается в порядке перечисления базисных классов в производном классе.
  2. На создание объекта производного класса оказывают влияние последующие происшествия:

ü структура производного класса

ü характеристики конструктора базисного класса

ü необходимость инициализации

  1. Таблица

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


sozdanie-strukturi-bazi-dannih-obekt-tablici.html
sozdanie-strukturi-tablic.html
sozdanie-svobodnoj-prostornoj-zhizni.html