Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpora_oop.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
258 Кб
Скачать
☆
  1. Указатель this.

Каждому объявляемому объекту соответствует свой скрытый this-указатель; this м.б. использован только для нестатических функций; this указывает на начало своего объекта в памяти; this не надо дополнительно объявлять; this передаётся как скрытый аргумент во все нестатические компоненты-функции своего объекта: this – локальная переменная и недоступна за пределами объекта.

Пример: Упорядочивание чисел в массиве.

class Mass

{int a[3];

public:

Mass sort();

Mass *input();

void out();

};

Mass Mass::sort()

{ for(int i = 0; i < 2; i++)

for(int j = i; j < 3; j++)

if (a[i]>a[j])

{ a[i] = a[i] + a[j]; a[j] = a[i] - a[j]; a[i] = a[i] - a[j]; }

return *this; //возврат содержимого объекта

}

Mass *Mass::input()

{

for (int i = 0; i < 3; i++) cin>>a[i];

return this; //возврат адреса начала объекта

}

void Mass::out()

{

cout<<endl;

for(int i = 0; i<3; i++)

cout<< a[i] << ' ';

}

void main()

{

Mass o1;

o1.input()->sort().out();

}

Вызывается функция input для ввода инфо в массив объекта o1; эта функция возвращает адрес памяти, где расположен объект o1; вызывается функция сортировки, возвращающая содержимое объекта о1; функция вывода инфо.

  1. Абстрактные типы данных.

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

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

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

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

class A

{ private: int a;

public:

void set_a(int num);

int get_a();

};

void A::set_a(int num)

{ a = num;}

int A::get_a()

{ return a;}

void main()

{

A ob1, ob2;

ob1.set_a(10);

ob2.set_a(99);

//ob1.a = 10;//ERROR

cout << ob1.get_a() << endl;

cout << ob2.get_a() << endl;

}

  1. Организация простейшего ввода/вывода в С++.

В С++ ввод и вывод данных производится потоками байт. Поток (последовательность байт) − это логическое устройство, которое выдает и принимает информацию от пользователя и связано с физическими устройствами ввода-вывода. При операциях ввода байты направляются от устройства в основную память. В операциях вывода – наоборот.

cin [>>имя_переменной]; Объект cin имеет некоторые недостатки. Необходимо, чтобы данные вводились в соответствии с форматом переменных, что не всегда может быть гарантировано.

сout << data [ << data];

data − это переменные, константы, выражения или комбинации всех трех

типов.

Простейший пример применения cout − это вывод, например, символьной

строки:

cout << ”объектно-ориентированное программирование ”;

  1. Использование манипуляторов для ввода/вывода в С++.

cout << setw(10) << setfill('*') << a << endl;

setw(количество_позиций_для_вывода_числа)

setfil(символ_для_заполнения_пустых_позиций)

setprecision (точность_при_выводе_дробного_числа

int main()

{ int a=0x11, b=4, // целые числа: шестнадцатеричное и десятичное

c=051, d=8, // восьмеричное и десятичное

i,j;

i=a+b;

j=c+d;

cout << i <<' ' <<hex << i <<' '<<oct << i <<' ' <<dec << i <<endl;

cout <<hex << j <<' ' << j <<' '<<dec << j <<' ' << oct << j <<endl;

return 0;

}

#include <iostream>

#include <iomanip>

using namespace std;

int main()

{ int a=0x11;

double d=12.362;

cout << setw(4) << a << endl;

cout << setw(10) << setfill('*') << a << endl;

cout << setw(10 ) << setfill(' ') << setprecision(3) << d << endl;

return 0;

}

Результат работы программы:

17

********17

12.4

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]