Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Параграф 3 - дружественные функции (файл op2) (стр 294)




ООП - объектно-ориентированное программирование

Шилдт Базовый курс стр 27

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

Инкапсуляция – механизм программирование связывающий воедино код и данные, которые он обрабатывает

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

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

три различных способа наследования: (стр 361)

public (наиболее частое), private and protected

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

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

Если базовый класс наследуется как private –класс, его public – члены становятся private -членами производного класса.

Если базовый класс наследуется как prodected –класс, то все его открытые и закрытые члены становятся защищенными членами производного класса

Пример паблик наследования:

class A{

int a,

//тут еще чего-нибудь;}

 

class B: public A{ //В - производный класс А

int b;

B(int bb): b(b){};

 

Язык программирование - C++ (С with classes)

 

ООП основано на понятии класса и объекта

Шилдт Базовый курс стр 266

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

Объекты – экземпляры класса.

Класс объединяет в себе слeдующие компоненты - данные(date members), функции-члены (методы класса, member funсtions)

Особенность класса - класс может скрывать данные и часть методов от пользователей - Механизм защиты данных

Классы - абстрактные типы данных (АТД), класс реально не существует до тех пор, пока не создан хотя бы 1 объект этого класса. Примеры классов: класс телевизоров, группы студентов, книг...Вещественные числа, класс комплексных чисел)

класс - «группа»

объект - «110 группа»

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

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

 

Параграф 1 - определение класса.

Общий формат объявления класса:

class имя_класса

{

private: данные, методы;

public: данные, методы;

protected: данные, методы;

};

Список объектов;

 

private, public, protected - спецификаторы (маркеры) доступа, определяют где данные методы могут быть доступны (в какой части программы), по умолчанию private.

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

никакие функции из вне не могут получить доступ к данным класса. (только методы класса)

public - открытый интерфейс класса (открытая часть класса). Доступ к классам и методам можно получить отовсюду, именно поэтому программист может пользоваться этим классом.

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

Отличие структуры от класса - в структуре нет понятий public, private, protected - в структуре только public.

 

Оператор разрешения области видимости::

Благодаря этому оператору компилятор определяет к какому классу принадлежит функция.

Тип_возвр_знач имя_класса:: имя_метода (список, параметров)

{реализация метода}

 

Директивы препроцессора (Шилдт 570)

#ifndef ИМЯ_ФАЙЛА - если не определено определить (проверка что не было повторного переопределения)

Общий вид:

#ifdef макроимя // если определено выполнить инструкции

Последовательность инструкций

#endif

 

#define ИМЯ_ФАЙЛА - определить все что лишнее (вставить)

Используется для определения последовательности которая будет подставляться везде, где будет найден идентификатор (макроимя)

В общем виде: #define макроимя последовательность символов

#endif - завершение того, что надо вставить (завершение последовательности символов)

ПАРАГРАФ 2 Конструкторы и деструкторы (стр 272)

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

Конструкторов может быть несколько, их можно перегружать (стр 298)

Деструктор - метод класса, предназначенный для освобождения памяти при уничтожении объекта. Имеет то же имя, что и класс, нет параметров ни вводных ни возвращаемых значений. Деструктор может быть только 1, перед именем пишется волна.

Метод const является константным методом, он не может изменять состояние объекта.

Встраиваемые функции (inline functions) (стр 283)

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

Два способа создания встраиваемой функции:

1) с помощью модификатора inline

2) определение кода для функции-члена в самом объявлении класса. Любая функция, которая определяется в объявлении класса автоматически является встраиваемой.

 

Параграф 3 - ДРУЖЕСТВЕННЫЕ ФУНКЦИИ (файл OP2) (стр 294)

Дружественность может быть от классов и от функций.

рассмотрим только от функций

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

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

Объявление:

Public:

friend type name_function (data);

Функция может быть дружественной сразу к нескольким классам.

 

  Методы класса Вне класса Друзья
Private + - +
Pablic + + +

 

программа демонстрирует дружественные функции, изменяет значение объекта

#include <iostream>

using namespace std;

 

 

class A

{

int x; public:

A () {x=0;};

void print () {cout <<”x=”<< x <<endl;}

friend void set_x (A &,int); // это дружественная функция! int - значение на которое изменим х

 

};

 

void set_x (A & object, int n)

{ object.x =n; }

int main ()

{

A obj;

obj.print();

set_x(obj,10);

obj.print();

 

system (“pause”);

return 0;

}}

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...