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

Перегрузка операции присваивания копированием

Оценка алгоритма сортировки | Алгоритмы неустойчивой сортировки | Доказательство | Метод Insert класса AVLTree | Итераторы вывода | Виды исключительных ситуаций |


Читайте также:
  1. Аддитивная и мультипликативная операции коммутативны
  2. Активные операции коммерческого банка
  3. Атомарные операции
  4. Банковские операции.
  5. В дальнейшем изложении мы будем предполагать применение операции переименования во всех конфликтных случаях.
  6. Вложенные операторы If. Логические операции и выражения
  7. Вложенные операторы if. Сложное условие в операторе if. Логические операции

Когда нужно сделать глубокие копии объектов необходимо также принять во внимание и обработку исключений. Одним из способов избежать ошибки перемещения ресурсов является следующий:

1. Получаем новые ресурсы

2. Освобождаем старые ресурсы

3. Присваиваем объекту значения нового ресурса

class My_Array { int * array; int count; public: My_Array & operator = (const My_Array & other) { if (this!= &other) // защита от неправильного самоприсваивания { // 1: выделяем "новую" память и копируем элементы int * new_array = new int[other.count]; std::copy(other.array, other.array + other.count, new_array); // 2: освобождаем "старую" память delete [] array; // 3: присваиваем значения в "новой" памяти объекту array = new_array; count = other.count; } // по соглашению всегда возвращаем *this return *this; }... };

6. Основні елементі об’єктної моделі. Інкапсуляція, управління доступом до членів класу. Категорії методів класу. Приклад об’явлення класу.

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

Инкапсуля́ция — свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя (прикладного программиста). При этом пользователю предоставляется только спецификация (интерфейс) объекта. Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью директив: public, private, protected.

Свойства инкапсуляции:

• совместное хранение данных и функций;

• сокрытие внутренней информации от пользователя;

• изоляция пользователя от особенностей реализации.

class A { private: int a,b; //скрытые свойства void DoSomething(); //скрытый метод. public: int ReturnSomething(); //открытый интерфейс};

Класс А инкапсулирует свойства a, b и метод DoSomething, представляя внешний интерфейс ReturnSomething.

Доступ к членам класса

Управление доступом применяется единообразно к функциям-членам класса и данным-членам класса.

Член класса может быть:

Модификаторы доступа можно использовать несколько раз в одном и том же объявлении класса.

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

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

Различают простые методы и статические методы (методы класса):

§ простые методы имеют доступ к данным объекта (конкретного экземпляра данного класса),

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

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

В зависимости от того, какой уровень доступа предоставляет тот или иной метод, выделяют:

§ открытый (public) интерфейс — общий интерфейс для всех пользователей данного класса;

§ защищённый (protected) интерфейс — внутренний интерфейс для всех наследников данного класса;

§ закрытый (private) интерфейс — интерфейс, доступный только изнутри данного класса.

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

Определение (объявление) класса в языке C++ выглядит следующим образом:

class MyClass: public ParentClass // ParentClass — класс-предок, который должен быть определён ранее { public: // элементы в этой секции доступны из любой части программы MyClass(); // конструктор ~MyClass(); // деструктор int classmember; protected: // элементы в этой секции доступны из класса и его потомков private: // элементы в этой секции доступны только из класса; это область доступа по умолчанию };

 

7. Графи. Приклад реалізації находження найкоротшого шляху в графі на об’єктно-орієнтованій мові програмування.

Граф - это двойка <V, E>, где V - непустое множество вершин, а Е - множество ребер, соединяющих эти вершины попарно 2). Две вершины, связанные между собой ребром, равноправны, и именно поэтому такие графы называются неориентированными: нет никакой разницы между "началом" и "концом" ребра.


Дата добавления: 2015-11-16; просмотров: 45 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Множественное наследование| Нахождение кратчайших путей от заданной вершины до всех остальных вершин алгоритмом Дейкстры

mybiblioteka.su - 2015-2024 год. (0.006 сек.)