Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Интересное:
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2017-06-11 | 475 |
5.00
из
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
Абстрактные классы используются в качестве обобщенных концепций, на основе которых можно создавать более конкретные производные классы. Невозможно создать объект типа абстрактного класса; однако можно использовать указатели и ссылки на типы абстрактного класса.
Класс, содержащий хотя бы одну чисто виртуальную функцию, считается абстрактным. Классы, производные от абстрактного класса, должны реализовать все его чисто виртуальные функции, иначе они также будут абстрактными классами.
Виртуальная функция объявляется как "чистая" с помощью синтаксиса спецификатора-чистоты (рассмотренного в разделе Реализация протокола класса). Рассмотрим пример, представленный в разделе Виртуальные функции. Класс Account создан для того, чтобы предоставлять общие функции, но объекты типа Account имеют слишком общий характер для практического применения. Таким образом, класс Account является хорошим кандидатом в абстрактный класс:
// deriv_AbstractClasses.cpp
// compile with: /LD
class Account {
public:
Account(double d); // Constructor.
virtual double GetBalance(); // Obtain balance.
virtual void PrintBalance() = 0; // Pure virtual function.
private:
double _balance;
};
Единственное различие между этим и предыдущим объявлениями состоит в том, что функция PrintBalance объявлена со спецификатором чисто виртуальной функции pure (= 0).
Абстра́кция — в объектно-ориентированном программировании это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, как функциональная абстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций, таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня. Такой подход является основой объектно-ориентированного программирования. Это позволяет работать с объектами, не вдаваясь в особенности их реализации. В каждом конкретном случае применяется тот или иной подход: инкапсуляция, полиморфизм или наследование. Например, при необходимости обратиться к скрытым данным объекта, следует воспользоваться инкапсуляцией, создав, так называемую, функцию доступа или свойство. Абстракция данных — популярная и в общем неверно определяемая техника программирования. Фундаментальная идея состоит в разделении несущественных деталей реализации подпрограммы и характеристик существенных для корректного ее использования. Такое разделение может быть выражено через специальный «интерфейс», сосредотачивающий описание всех возможных применений программы. С точки зрения теории множеств, процесс представляет собой организацию для группы подмножеств своего множества.
|
4.7. Реализация объектно-ориентированного программирования на языке С++.
//В программе объявлен класс простых дробей,
//описана переменная этого класса, выполнена
//обработка переменной
#include <iostream.h>
#include <math.h>
struct Frac{int P; int Q;};
Frac F;
//Объявление класса
class Drob{
Frac A;
public:
void Vvod(void);
int NOD(void);
void Sokr(void);
void Stepen(int N);
void Print(void);
};
//Описания функций — членов класса
void Drob::Vvod(void)
{ сои!«"Числитель?"; cin»A.P;
cout«"Знаменатель?"; cin»A.Q;
}
int Drob::NOD(void)
{ int M,N;
M=abs(A.P); N=A.Q;
while(M!=N)
{ if(M>N)
if(M%N!=0) M=M%N; else M=N;
else if(N%M!=0) N=N%M; else N=M;
}
return M;
}
void Drob::Sokr(void)
{ int X;
X=NOD();
if(A.P!=0)
{ A.P=A.P/X; A.Q=A.Q/X;}
else A.Q=1;
}
void Drob::Stepen(int N)
{ int i;
F.P=F.Q=1;
for(i=l;i<=N;i++)
{ F.P*=A.P; F.Q*=A.Q;}
}
void Drob::Print(void)
{ cout«"\n"«A.P«"/"«A.Q«"\n"; }
//Основная функция
void main(void)
{ Drob Y; //Объявление объекта
cout«"Вводите дробь! "<<"\n";
Y.VvodO;
Y.Sokr ();
cout«"flpo6b после сокращения:"<<"\n";
Y. P r i n t ();
Y.Stepen(2);
cout<<"flpo6b, возведенная в
квадрат:"<<"\п";
c o u t «F. P «" / " «F. Q «" \ n ";
Данная программа наглядно показывает пример реализации объектно-ориентированного программирования на языке С++.
|
|
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!