МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


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


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Перегрузка и переопределение методов класса. Разница и назначение каждого.





 

Перегрузка (англ. overloading) означает, что у вас в одной области видимости определено несколько функций с одинаковым именем. Например:

class A { void print(); void print(int i); void print(const A& a); };

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

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

class Base { public: // реализует некоторый алгоритм void doSomething() { prepare(); // сперва выполнить подготовку   // основная часть алгоритма не приведена для краткости } private: virtual void prepare() {} };   class Derived : public Base { private: virtual void prepare() { // выполнить подготовку std::cout << "hello world :)\n"; } };   Derived obj; obj.doSomething();

Поясню, что в последнем примере, при вызове функции doSomething будет работать функция prepare из производного класса Derived.

 

10Что такое класс. Структура класса. Как объявляются и специфицируется переменные экземпляра и методы класса. Конструкторы класса. Как обращаться к переменным экземпляра из программы.

Классы в С++ — это абстракция описывающая методы, свойства, ещё не существующих объектов. Объекты — конкретное представление абстракции, имеющее свои свойства и методы. Созданные объекты на основе одного класса называются экземплярами этого класса. Эти объекты могут иметь различное поведение, свойства, но все равно будут являться объектами одного класса.

 

Класс – это производный структурированный тип на основе уже существующих типов. Простейшим способом класс можно определить с помощью конструкции:

ключ_класса имя_класса {список_компонентов};

где ключ_класса – одно из служебных слов class, struct, union;

имя_класса – произвольно выбираемый идентификатор;

список_компонентов – определения и описания типизированных данных и принадлежащих классу функций.

Компоненты определяют состояние объекта и обуславливают поведение объекта класса. Компонентами класса могут быть данные, функции, классы, перечисления, битовые поля, дружественные функции, дружественные классы и имена типов. Например:

 

class Classid // класс с именем Classid

{int k;

double x,y; //x,y,k - закрытые члены –данные по умолчанию

public:

charlit,ch;

int f3(int, int); //lit, ch – открытые члены-данные

int getx(void)

{return x;}

private:

void f1(void); //закрытые члены-методы класса

int f2(int);

};

 

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

Проектируя класс, необходимо тщательно продумать, какие его члены сделать открытыми, а какие – закрытыми. В большинстве случаев определение класса не локализовано в блоке и областью действия имени класса является весь файл. Если же класс определен внутри блока, то его называют локальным классом, методы которого должны быть подставляемыми (inline) и их определения должны обязательно помещаться в блоке определения класса.

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

Обычно, с целью повышения защищенности, члены_данные класса не делают общедоступными и к ним нельзя непосредственно обратиться из произвольной программной среды. Тем не менее, с ними можно работать и из произвольной программной среды, используя общедоступные (public:) методы класса. Для рассмотренного ранее примера таким методом является:

int getx(void) {return x;}

возвращающий значение закрытого члена-данного х.

Целесообразно «тощие» тела таких методов помещать внутрь определения класса, сделав их для повышения эффективности подставляемыми. В случае определения подставляемых методов вне определения класса, в заголовок методов добавляется спецификатор inline.

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

intClassid::f2(int x)

{ тело метода }

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

 

Classid obj1, obj2, obj-array[10];

 

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

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

Объект класса, который имеет только открытые члены и не имеет конструктора, может быть инициализирован подобно обычной структурной переменной при помощи списка значений.

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

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

Параметром конструктора не может быть его собственный класс, но может быть ссылка на него, как у конструктора копирования.

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

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

 

имя_класса* const this= адрес_обрабатываемого_объекта;

 

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

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

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

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

– для обращения к определенному элементу объединения программы используют оператор C++ точку.

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

– анонимное объединение представляет собой объединение, у которого нет имени (тэга).

Методы класса — это его функции.

Свойства класса — его переменные.

// Установка среднего балла

void set_average_ball(float ball)

{ average_ball = ball; }

 

 

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

 

Как обращаться к переменным экземпляра из программы.

Если public то просто напрямую. X = 5;

Если private то через созданные методы get set.

 

 

11 Идентификация и описание объектов реального мира. Определение объекта. Атрибуты и данные объекта. Идентификация вариантов поведения. Описание класса и диаграмма классов.

Подражание объектам реального мира можно реализовать с помощью определения классов на объектно-ориентированных языках программирования, таких как С++ или Java. Класс состоит из членов-данных и членов-методов. Данные-члены(data members) иногда называются полями(fields) и используются для хранения атрибутов объекта. Методы-члены(member methods) иногда называются функциями-членами(member functions) и определяют поведение объекта.

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

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

  • абстракция понятия: объект — это модель какого-то понятия предметной области;
  • абстракция действия: объект объединяет набор операций для выполнения какой-либо функции;
  • абстракция виртуальной машины: объект объединяет операции, которые используются другими, более высокими уровнями абстракции;
  • случайная абстракция: объект объединяет не связанные между собой операции.

Диаграмма классов (англ. Static Structure diagram) — диаграмма, демонстрирующая классы системы, их атрибуты, методы и взаимосвязи между ними. Входит в UML.

Существует два вида:

· Статический вид диаграммы рассматривает логические взаимосвязи классов между собой;

· Аналитический вид диаграммы рассматривает общий вид и взаимосвязи классов, входящих в систему.

 

12 Объектно-ориентированный анализ, проектирование и декомпозиция. Каким образом требования к системе выражаются в объектном подходе к разработке систем

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

Объектно-ориентированнаядекомпозиция- это разбиение системы на сущности, являющиеся какими-либо объектами действующими в той ситуации, которую как раз и моделирует система

 

 





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.