История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2017-11-15 | 470 |
5.00
из
|
Заказать работу |
|
|
Декомпозиция: Научный метод, использующий структуру задачи и позволяющий заменить решение одной большой задачи решением серии меньших задач.
Функциональная декомпозиция: Фокусировка на структурах данных и функциях их обработки.
Объектная декомпозиция: Фокусируется на объектах и их отношениях друг с другом.
ООП возникло в результате развития идеологии процедурного программирования, где данные и подпрограммы (процедуры, функции) их обработки формально не связаны.
Класс – это производный тип, введенный программистом на основе уже существующих типов. Механизм классов позволяет создавать типы, с наибольшей полнотой отображающие особенности решаемой задачи. Класс задает некоторую структурированную совокупность типизированных данных и позволяет определить набор операций над этими данными.
Объект - это конкретный экземпляр класса, располагающийся в памяти компьютера.
13. Основы ООП. Сравнение класса и структуры в С++. Модификаторыдоступаprivate, protected, public. Примеры.
Структура | Класс |
structbooks { intnomer; string name; string author; int page; int cost; books* next; }; | class books { public: intnomer; string name; string author; int page; intcost; books* next; }; |
Модификатор доступа public (открытый): К членам класса (функциям и данным), объявленным с модификатором public можно получить доступ из любого места программы.
Модификатор доступа private (закрытый): К членам класса (функциям и данным), объявленным с модификатором private можно получить доступ только из функций самого класса (а также из функций и классов друзей).
Модификатор доступа protected (защищенный): К членам класса (функциям и данным), объявленным с модификатором protected можно получить доступ только из функций самого класса, из функций потомков класса, (а также из функций‐друзей и классов‐ друзей).
|
Наследование – это использование ранее определенного класса. Язык С++ позволяет классу наследовать данные и функции члены одного или нескольких других классов. Другими словами, новый класс может получать атрибуты и поведение от уже существующего класса. Новый класс называют производным классом. Класс, элементы которого наследуются производным классом, называется базовым классом.
14. Основы ООП. Понятие инкапсуляции. Способы ее реализации в С++. Перегрузка операторов.
Инкапсуляция:
• Свойство языка программирования, позволяющее объединить и защитить данные и код в объект и скрыть реализацию объекта от пользователя (прикладного программиста). При этом пользователю предоставляется только спецификация (интерфейс) объекта.
• Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью директив: public, private, protected.
• Пользователь не может влиять на работу объекта, кроме как через интерфейс. Реализуется с помощью использования закрытых данных и методов, значения которых берутся из открытого
интерфейса при создании объекта.
Примеринкапсуляции:
class Student
{
public:
voidsetName(constchar* name)
{
if (name!= NULL &&strlen(name) < 80)
{
strcpy(_name, name);
}
}
constchar* getName()
{
return _name;
}
private:
char _name[80];
};
Пример использования класса:
Student s;
s.setName("Вася");
Перегрузка функций: Перегрузка (англ. «overloading») – возможность использования функций, имеющих одинаковые имена, но отличающихся друг от друга списком параметров (количеством и /или типом параметров).
Перегрузка операторов:
• Иногда возникает потребность описывать и применять к созданным программистом типам данных операции, по смыслу эквивалентные уже имеющимся в языке.
• Классический пример — библиотека для работы с комплексными числами. Они, как и обычные числовые типы, поддерживают арифметические операции, и естественным было бы создать для
данного типа операции «плюс», «минус», «умножить», «разделить», обозначив их теми же самыми знаками операций, что и для других числовых типов.
|
Перегрузка оператора присваивания:
Для класса Т1 оператор присваивания из типа Т2, являющийся членом класса, может иметь следующий вид.
Передача параметра по ссылке: T1&operator=(T2&source);
Передача параметра по значению: T1&operator=(T2 source);
Пример:
ClassMyInt
{
public:
MyInt&operator=(MyInt& source)
{
_value = source._value;
Return*this;
}
MyInt&operator=(int value)
{
_value = value;
Return*this;
}
private:
int _value;
};
MyInt a, b;
b = 25;
a = b;
15. Основы ООП. Конструкторы и деструкторы. Определения, примеры реализации. Перегрузка конструкторов.
Инициализация и де‐инициализация
• Для инициализации объекта класса используется специальная функция «конструктор класса»
• Для де‐инициализации класса используется специальная функция «деструктор класса»
Конструктор класса
• Функция - конструктор класса вызывается автоматически в момент создания экземпляра класса (объекта).
• Конструктор является хорошим местом для инициализации объекта.
• Имя функции конструктора должно совпадать с именем класса.
• Функция‐конструктор ничего не возвращает (даже void).
Деструктор класса
• Функция ‐ деструктор класса вызывается автоматически в момент перед разрушением экземпляра класса (объекта).
• Деструктор является хорошим местом для освобождения выделенных ресурсов (например, выделенной памяти).
• Имя функции деструктора должно начинаться с символа «тильда» ~, а в остальном совпадать с именем класса.
• Функция‐деструктор ничего не возвращает (даже void).
Пример конструктора и его перегрузки:
classbooks
{
public:
intnomer;
string name;
string author;
int page;
int cost;
books* next;
books()
{
nomer = 0;
name = "";
author = "";
page = 0;
cost = 0;
};
books(string name1, string author1, int page1, int cost1)
{
name = name1;
author = author1;
page = page1;
cost = cost1;
};
~books() {};
};
Примердеструктора:
class list
{
private:
books* start;
books* current;
books* tmp;
public:
list();
~list();
};
list::list()
{
start = NULL;
current = NULL;
tmp = NULL;
}
list::~list()
{
if (start!= NULL)
{
while (start!= NULL)
{
tmp = start->next;
delete start;
start = tmp;
}
}
if (tmp!= NULL)
deletetmp;
}
16. Основы ООП. Решение задачи создания списочной структуры средствами ООП (задача о списке студентов).
class Student
{
public:
Student() // Конструктор
{
_id = 0;
_name = _T("");
_avgMark = 0;
}
~Student() {} // Деструктор
voidSetId(intn) // Записать "Номер"
|
{
if (n> 0)
_id = n;
}
intGetId() // Прочитать "Номер"
{
return _id;
}
voidSetName(string name) //ЗаписатьИмя
{
_name = name;
}
stringGetName() //ПрочитатьИмя
{
return _name;
}
voidSetMark(float n) // Записатьоценку
{
if (n > 0)
_avgMark = n;
}
floatGetMark() // Прочитатьоценку
{
return _avgMark;
}
void Print()
{
cout<< _id <<". "<< _name;
cout<<" ("<< _avgMark<<")"<<endl;
}
private:
int _id; //Номер
string _name; //Имя
float _avgMark; //Оценка
};
int _tmain(int argc, _TCHAR* argv[])
{
Student s1;
cout<<"Созданные элементы:\n";
s1.Print();
s1.SetId(1);
s1.SetName("Иван Петров");
s1.SetMark(75);
cout<<"\n\nЗаполненные элементы:\n";
s1.Print();
return 0;
}
|
|
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!