Курсовая работа: Технологія складу програм. Базові засоби мови C++

point where () { return center; }

void move ( point to ) { center = to; draw(); }

virtual void draw ();

virtual void rotate ( int );

// ...

};

Ті функції, для яких визначаємо заявлений інтерфейс, але реалізація яких (тобто тіло з операторною частиною) можлива тільки для конкретних фігур, відзначені службовим словом vіrtual (віртуальні). У Симуле і С++ віртуальність функції означає: "функція може бути визначена пізніше в класі, похідному від даного". З урахуванням такого визначення класу пишу загальні функції, що працюють з фігурами:

void rotate_all ( shape v [], int size, int angle )

// повернути всі елементи масиву "v" розміру "size"

// на кут рівний "angle"

{

int i = 0;

while ( i<size )

{

v [ i ] . rotate ( angle );

i = i + 1;

}

}

Для визначення конкретної фігури варто вказати, насамперед , що це - саме фігура і задати її особливі властивості (включаючи і віртуальні функції):

class circle : public shape

{

int radius;

public:

void draw () { /* ... */ };

void rotate ( int ) {} // да, поки функція порожня

};

У мові С++ клас cіrcle називається похідним стосовно класу shape, а клас shape називається базовим для класу cіrcle. Можлива інша термінологія, що використовує назви "підклас" і "суперклас" для класів cіrcle і shape відповідно. Тепер парадигма програмування формулюється так: Визначите, який клас вам необхідний; надайте повний набір операцій для кожного класу; спільність класів виразите явне за допомогою спадкування. Якщо спільність між класами відсутня, цілком достатньо абстракції даних. Наскільки застосовне об’єктно-орієнтоване програмування для даної області додатка визначається ступенем спільності між різними типами, що дозволяє використовувати спадкування і віртуальні функції. У деяких областях, таких, наприклад, як інтерактивна графіка, є широкий простір для об’єктно-орієнтованого програмування. В інших областях,

у яких використовуються традиційні арифметичні типи й обчислення над ними, важко знайти застосування для більш розвитих стилів програмування, чим абстракція даних. Цей засіб, що підтримує об’єктно-орієнтоване програмування, мабуть, надлишковий. Перебування спільності серед окремих типів системи являє собою нетривіальний процес. Ступінь такої спільності залежить від способу проектування системи. У процесі проектування виявлення спільності класів повинне бути постійною метою. Вона досягається двома способами: або проектуванням спеціальних класів, використовуваних як "цеглини" при побудові інших, або пошуком схожих класів для виділення їхньої загальної частини в один базовий клас. Отже, ми вказали, яку мінімальну підтримку повинна забезпечувати мова програмування для процедурного програмування, для заховування даних, абстракції даних і об’єктно-орієнтоване програмування.


ВИСНОВКИ

К-во Просмотров: 231
Бесплатно скачать Курсовая работа: Технологія складу програм. Базові засоби мови C++