Розробка власного класу STRING - Курсовая работа

бесплатно 0
4.5 51
Поняття об’єктно-орієнтовного програмування, поява відносин класів. Структури як складені типи даних, побудовані з використанням інших типів. Область дії класу і доступ до його елементів. Конструктор та деструктор класу. Розробка базового класу STRING.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
В класі повинні бути визначені методи присвоєння рядків, додавання рядків, вставки рядка в рядок з заданого місця та вилучення певної кількості символів з рядка, звертання до окремого елементу рядка, операції відношень для порівняння рядків (більше, менше, рівно, нерівно), операції вставки рядка в потік введення/виведення та його вилучення з потоку, метод визначення довжини рядка, тощо.Куди б ви не подивились завжди знаходяться обєкти! Як би ми не класифікували ці обєкти, всі вони мають спільні атрибути: форма, колір, маса тощо. Людство пізнає обєкти шляхом вивчення їх атрибутів. Це означає, що хоча обєкти можуть знати, як звязатися один з одним за допомогою добре визначених інтерфейсів, вони не знають, як реалізовані інші обєкти - деталі реалізації заховані всередині самих обєктів. У С та інших мовах процедурного програмування програмування має тенденцію бути орієнтованим на дії, тоді як в C програмування прагне бути орієнтованим на обєкти.Елементи однієї й тієї ж структури повинні мати унікальні імена, але дві різні структури можуть містити не конфліктуючі елементи з однаковими іменами. Визначення Time містить три елементи типу int - hour, minute і second (годинники, хвилини й секунди). Елементи структури можуть бути будь-якого типу й одна структура може містити елементи багатьох різних типів. Наприклад, елемент типу Time не може бути оголошений у визначенні структури Time. Структура, що містить елемент, котрий є вказівником на такий же структурний тип, називається структурою із самоадресацією.Для доступу до елементів структури (або класу) використовуються операції доступу до елементів - операція крапка () і операція стрілка (->). Операція крапка звертається до елемента структури (або класу) по імені змінної обєкта або по посиланню на обєкт. Наприклад, щоб надрукувати елемент hour структури TIMEOBJECT використається оператор cout << TIMEOBJECT. hour;Програма на мал.1 створює визначений користувачем тип структури Time із трьома цілими елементами: hour, minute і second. Програма визначає єдину структуру типу Time, названу DINNERTIME, і використовує операцію крапка для присвоєння елементам структури початкових значень 18 для hour, 30 для minute і 0 для second. Це є причиною того, що структури Time передаються друкуючим функціям по посиланню - цим виключаються накладні витрати на копіювання, повязані з передачею структур функціям за значенням, а використання const запобігає зміні структури типу Time функціями друку. У наступному розділі ми знову використаємо нашу структуру Time, але вже як клас, і продемонструємо деякі переваги створення таких, так званих абстрактних типів даних, як класи. Визначення нашого класу Time, як і нашої структури Time, містить три цілих елементи hour, minute і second.Дані-елементи класу (змінні, об’явлені у визначенні класу) і функції-елементи (функції, об’явлені у визначенні класу) мають областю дії клас. При області дії клас елементи класу безпосередньо доступні всім функціям-елементам цього класу й на них можна посилатися просто по імені. Поза областю дії клас до елементів класу можна звертатися або через імя обєкта, або посиланням на обєкт, або за допомогою вказівника на обєкт. Функції-елементи мають всередині класу область дії функцію: змінні, об’явлені у функції-елементі, відомі тільки цій функції. Якщо функція-елемент об’являє змінну з тим же імям, що й змінна в області дії клас, остання робиться невидимої в області дії функції.Тоді ми повинні дозволити ініціализувати два члени, що залишилися _name і _balance: Account (const char *name, double open_balance); Обєкт класу Account, ініціалізуємий конструктором, можна об’явити в такий спосіб: Account NEWACCT ("Mikey Matz", 0); Інший спосіб - включити в конструктор із двома параметрами значення за замовчуванням, рівне нулю: Account (const char *name, double open_balance = 0.0); Наш конструктор із двома параметрами, з яких другий має значення за замовчуванням, надає повний інтерфейс для задання початкових значень тих членів класу Account, які можуть бути ініціалізовані користувачем: class Account {public: // конструктор за замовчуванням... Нижче наведені два приклади правильного визначення обєкта класу Account, де конструкторові передається один або два аргументи: int main ()Ініціалізація обєкта іншим обєктом того ж класу називається почленною ініціалізацією за замовчуванням. Копіювання одного обєкта в іншій виконується шляхом послідовного копіювання кожного нестатичного члена. Якщо він визначений, то викликається щоразу, коли один обєкт ініціалізується іншим обєктом того ж класу. У нашому класі Account це необхідно, інакше два обєкти будуть мати однакові номери рахунків, що заборонено специфікацією класу. Конструктор копіювання приймає як формальний параметр посилання на обєкт класу (рекомендовано зі специфікатором const).Ми вже бачили в прикладі із класом Account конструктор, де за допомогою оператора new виділяється память для масиву символів і привласнюється унікальний номер рахунку. Для цього необхідна сим

План
Содержание

Завдання

1. Теоретична частина

1.1 Введення в обєктно-орієнтовну технологію

1.2 Визначення структур

1.3 Доступ до елементів структури

1.4 Використання визначеного користувачем типу Time за допомогою Struct

1.5 Використання абстрактного типу даних Time за допомогою класу

1.6 Область дії клас і доступ до елементів класу

1.7 Конструктор класу

1.8 Конструктор копіювання

1.9 Деструктор класу

1.10 Явний виклик деструктора

1.11 Небезпека збільшення розміру програми

1.12 Константні обєкти й функції-елементи

1.13 Друзі

1.14 Ядро ООП: Успадкування та поліморфізм

1.4.1 Похідні класи

1.14.2 Функції-члени

1.14.3 Конструктори й деструктори

1.14.4 Ієрархія класів

1.14.5 Поля типу

1.14.6 Віртуальні функції

1.14.7 Абстрактні класи

1.14.8 Множинне входження базового класу

1.14.9 Вирішення неоднозначності

1.14.10 Віртуальні базові класи

1.14.11 Контроль доступу

1.14.12 Захищені члени

1.14.13 Доступ до базових класів

1.14.14 Вільна память

1.14.15 Віртуальні конструктори

1.15 Перевантаження операцій

1.15.1 Операторні функції

1.15.2 Бінарні й унарні операції

1.15.3 Операторні функції й типи користувача

1.15.4 Конструктори

1.15.5 Присвоювання й ініціалізація

1.15.6 Інкремент і декремент

1.15.7 Перевантаження операцій помістити в потік і взяти з потоку

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

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

2.2 Детальний анализ

2.3 Тестування

Висновки

Література

Додатки

Вывод
В ході виконання курсової роботи були отримані наступні результати.

Розроблено клас CLSSTRING, який призначений для розвязку задачі обробки рядків.

Розроблений клас включає 4 компонентів-даних та 29 компонентів-методів, серед яких 2 є захищеними, 29 можуть успадковуватися, а 27 є загальнодоступними. Клас включає 4 конструктори, 1 деструктор, 1 віртуальних функцій, надає можливості з використання найменувань стандартних операцій для виконання введення/виведення в потік, порівняння рядків.

Розроблений клас є похідним від класів TPSTRTHREAD та TPSTRCOMPARE, котрі є похідними від класу TPSTRING.

Особливостями розробленого класу є можливість ініціалізації, отримуючи дійсне чи ціле число, та пошук першого входження з вказаної позиції підстроки.

Результати тестування підтвердили працездатність і ефективність використання обєктів, створюваних на основі розробленого класу.

Розроблене програмне забезпечення функціонує під керуванням операційної системи Windows.

Список литературы
1. MSDN

2. Pohl, Ira C by Dissection. Addison-Winsley: New York, 2002.520p

3. Stroustrup, Bjarne The C Programing Language. Addison-Winsley: New York, 1997.912p

4. Дейтел Х.М. Дейтел П. Дж. Как программировать на С . М.: Бином, 2005.1244с

5. Липпман С.Б. С для начинающих. М.: Питер, 2002.1194с

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?