Розробка власного класу STRING

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

? операції "помістити в потік" і "взяти з потоку"

Цей виклик міг би потім повернути посилання на cin як значення cin " phonel, так що частина, що залишилася, вираження була б інтерпретована просто як cin " phone2. Це було б виконане шляхом виклику

 

operator" (cin, phone2);

 

Операція помістити в потік одержує як аргументи посилання output типу ostream і посилання пшп на певний користувачем тип PhoneNumber і повертає посилання типу ostream. Функція operator" виводить на екран обєкти типу PhoneNumber. Коли компілятор бачить вираження

 

cout << phone

 

в main, він генерує виклик функції

 

operator<< (cout, phone);

 

Функція operator" виводить на екран частини телефонного номера як рядка, тому що вони зберігаються у форматі рядка (функція-елемент getline класу istream зберігає нульовий символ після завершення введення).

Помітимо, що функції operator" і operator" обявлені в class PhoneNumber не як функції-елементи, а як дружні функції. Ці операції не можуть бути елементами, тому що обєкт класу PhoneNumber зявляється в кожному випадку як правий операнд операції; а для перевантаженої операції, записаної як функція-елемент, операнд класу повинен зявлятися ліворуч. Перевантажені операції помістити в потік і взяти з потоку повинні обявлятися як дружні, якщо вони повинні мати прямий доступ до закритих елементів класу з міркувань продуктивності.

2. Розробка власного класу clsString

 

2.1 Загальний алгоритм вирішення

 

Створимо базовий клас TPString у якому розмістимо мінімальнонеобхідні компоненти, але при цьому цей клас вже буде функціональною одиницею. На основі класу TPString створимо два нащадки TPStrThread-відповідатиме за потокову обробку рядка, а клас TPStrCompare-відповідатиме за порівнння. Обидва класи будуть абстрактними, так як представляють логічно незавершений результат виконання завдання. Використовуючи множинне успадкування створимо результуючий клас clsString, додавши іще декілька методів.

Загальна UML діаграма пропонованого варіанту

 

2.2

 

TPString. , ( ), . . :

 

TPString (const char * = "");

 

.

 

TPString:: TPString (const char *s)

{

len=strlen (s);

BuffLen=0;

symb=NULL;

setString (s);

}

 

len , BuffLen , symb. setString .

, , TPString.

 

TPString:: TPString (TPString & copy)

{

len (copy. len)

BuffLen=0;

symb=NULL;

setString (copy. symb);

}

 

- , .

 

TPString:: ~TPString ()

{

delete [] symb;

}

 

2

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

(14) char&TPString:: operator [] (int index)

{

if ( (index=len))

FatalError ();

return * (symb+index);

}

const char &TPString:: operator [] (int index) const

{

if ( (index=len))

{

FatalError ();

}

return symb [index];

}

(1) , . , , , &