Державне освітня установа вищої професійної освіти В«Московський державний технічний університет ім. Н.Е. Баумана В»
Калузький філія
Факультет "Фундаментальних Наук"
Кафедра "Програмного забезпечення ЕОМ, інформаційних технологій і прикладної математики " (ФН1-КФ)
Курсова робота
ПО КУРСУ: В«ПРОГРАМУВАННЯ НА С + +В»
На тему: В«Робота зі спискамиВ»
Калуга - 2008
АНОТАЦІЯ
Список - це динамічна структура, іншими словами, масив даних деякого типу, розміри якого можуть змінюватися у процесі виконання програми. Списки дуже широко використовуються в інформаційних технологіях. У тому числі, в області машинної графіки для опису графічних примітивів. Так, наприклад, деяка геометрична модель може бути представлена ​​списком вершин, ліній або інших об'єктів будь-якої складності.
Дана програма являє собою редактор зображень, дозволяє створювати графічні зображення, в основі яких лежать деякі графічні примітиви, такі як лінії, прямокутники і криві Безьє, а також виділяти і видаляти частини об'єктів і міняти колір об'єктів. Всі графічне зображення представляється списком ліній. Всі можливі в програмі операції з об'єктами - це наочне уявлення операцій зі списками, які здійснюються за допомогою декількох класів для роботи з ними.
ДОСЛІДНА ЧАСТИНА
1.1 Постановка завдання
Створити кілька класів, що реалізують роботу зі списками та застосувати ці класи до задачі побудови геометричних фігур, тим самим продемонструвавши їх працездатність.
1.2Способи реалізації
Для реалізації поставленого завдання використовується стек (він представляє собою список типу LIFO, в якому останній доданий елемент зчитується першою), а також зворотна стеку динамічна структура - чергу (FIFO). У програмі використовуються методи об'єктно-орієнтованого програмування для полегшення способу вирішення завдання: шаблони класів (для запису в список елементів різного типу), спадкування (для скорочення обсягу програмного коду), віртуальні функції (Для коректного перевизначення методів різних класів), абстрактний клас (Для загального опису основних функцій).
1.3Ісследованіе поставленого завдання
1.3.1 Створення стека
Стек являє собою список типу LIFO, в якому останній доданий елемент зчитується першим. Для створення стека в програмі використовується структура List, що містить поле посилання на наступний елемент і шаблонний тип даних в якості інформаційного поля. Для програмної реалізації стека необхідно описати 2 змінні зазначеного вище типу List: p (Покажчик на поточний елемент) і top (покажчик на вершину списку). При додаванні елемента в стек, новому елементу присвоюється посилання на вершину стека, а потім і він сам стає вершиною. Таким чином, стек росте як би назад:
p = new list;
p-> next = top;
p-> inf = value;
top = p;
1.3.2 Створення черзі
Черга дуже схожа на стек за винятком того, що елементи в ній розташовуються в нормальному порядку, а не в зворотному. Обхід черги і обхід стека ідентичні. Враховуючи це подібність, можна створити клас черзі як спадкоємця класу стека, перевизначивши в ньому тільки функції створення і додавання елемента. Так як в черзі перший елемент повинен бути створений заздалегідь, то заносимо його створення в конструктор класу:
top = new list;
top-> next = NULL;
p = top;
Додавання елемента в чергу теж відрізняється від додавання елемента в стек. Тут вершина списку залишається на своєму місці, змінюється тільки положення поточного покажчика, а елементи заносяться в прямому порядку, і посилання на новий елемент створюється з поточного, а не навпаки, як було в стеку, після чого новий елемент стає поточним:
p-> next = new list;
p-> next-> next = NULL;
p-> inf = value;
p = p-> next;
1.4 Актуальність поставленої завдання
Досліджувані алгоритми застосовуються для вирішення багатьох прикладних завдань, особливо в області машинної графіки. Робота зі списками дуже важлива при побудові графічних моделей, моделюванні графічних додатків, створенні відеоігор, а також для організації пам'яті під дані користувацьких типів і так далі. Списки - це основна динамічна структура, на якій базуються інші.
2. КОНСТРУКТОРСЬКА ЧАСТИНА
2.1 Обгрунтування вибору засобу програмування
Для написання даної курсової роботи був використаний мову Borland C + + Builder 6. C + + Builder дозволяє швидку візуальну розробку додатків на мові C + +. Професійні засоби мови C + + інтегровані в візуальне середовище розробки. Інтегроване середовище розробки об'єднує редактор форм, інспектор об'єктів, палітру компонент, адміністратор проекту і повністю інтегровані редактор коду і відладчик - інструменти швидкої розробки програмних додатків, що забезпечують повний контроль над кодом і ресурсами. C + + Builder втілює найважливіші аспекти об'єктно-орієнтованого програмування в зручному для користування інструменті візуального проектування, що найкраще підходить для реалізації і відображення результатів роботи програми.
Для зручної роботи зі списком необхідно представити його як окремий тип даних. C + + дозволяє визначати користувальницькі типи, а також визначати набір операцій, вироблених над екземплярами цього типу. Ключовим поняттям C + + є клас. Клас - це тип даних, визначається користувачем, змінні якого є об'єктами. Т.ч., в програмі, створеній на C + +, визначення класу повинно бути визначенням типу даних, що містить інформацію про значення, які можуть зберігатися в його змінних, а також про функції-членах цього класу.
Механізм успадкування дозволяє визначати нові класи на основі вже наявних. Клас, на основі якого створюється новий клас, називається базовим (батьківським) класом, а новий - похідним (Спадкоємцем). Безпосереднім базовим класом називається такий клас, який входить в список базових класів при визначенні класу. Будь похідний клас може в свою чергу стати базовим для інших створюваних класів. Т.ч. формується спрямований граф ієрархії класів, а при оголошенні об'єктів і ієрархія об'єктів. В ієрархії об'єктів похідний об'єкт має можливість доступу до елементів даних і методам об'єктів, типізованих базовим класом.
У мові існує можливість одиночного і множинного спадкування. При одиночному спадкуванні базовим є один клас, а при множині спадкування базовими класами повинні бути декілька класів.
Віртуальні функції є засобом пізнього зв'язування в мові С + +.
Віртуальної функцією називається функція, яка ще, не будучи певної яким-небудь чином, може використовуватися. Ця технологія, коли визначення реалізації процедури відкладається до часу виконання програми, називається пізнім або динамічним зв'язуванням.
Для зручності роботи зі списком потрібно надати спеціальні функції, які дають можливість без змін у реалізації та описі класів отримати додаткову інформацію про нього. З цією метою може бути використаний реалізований в С + + механізм дружності і створений дружній клас, який, оперуючи внутрішніми методами абстрактного типу даних, повертає додаткову інформацію, корисну при роботі зі структурою.
Т.ч. мову С + + містить всі необхідні можливості для реалізації списковому структури, а також можливість роботи з нею як з вбудованим типом даних, який до того ж може бути з часом перетворений і розширено.
2.2 Функціональне призначення
Програма може застосовуватися для створення графічних зображень
Для реалізації цього завдання необхідно створити список, в який заноситимуться об'єкти різних користувацьких типів (наприклад, лінії). Список повинен володіти всіма необхідними методами, використовуваними для обробки знаходяться в ньому даних: додавання, видалення, пошук, зміна і вибірка елементів.
Корист...