МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Варіанти індивідуальних завдань





1. Створити клас – вектор, який має у закритій частині вказівник на дані цілого типу та кількість елементів. Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення елементів вектора, операції + , – , * , = та [ ] .

2. Створити клас – матриця, який у закритій частині містить вказівник на дані цілого типу, кількість рядків і стовпців. Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення елементів матриці, операції + , – , * та = .

3. Створити клас – дата з полями у закритій частині: день (1-31), місяць (1-12), рік (ціле число). Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції + (збільшення на n днів) , – (різниця між двома датами), < та >= .

4. Створити клас – час з полями у закритій частині: година (0-23), хвилини (0-59), секунди (0-59). Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції += (збільшення на n секунд), – (різниця між двома часами), <= та > .

5. Створити клас – прямокутник. У закритій частині описати поля – висоту і ширину. Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції порівняння за площею < , > та == .

6. Створити клас – велике ціле число, яке не може бути зображене одним значенням вбудованих типів і умовно може бути утворене з декількох таких значень. У закритій частині визначити поля – вказівник на дані цілого типу та кількість елементів. Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції + , – , < , > та == .

7. Створити клас – двозв’язний список. Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції + (додавання елемента в початок списку), += (додавання елемента в кінець списку), – (вилучення заданого елемента зі списку), ++ (перехід до наступного елемента), -- (перехід до попереднього елемента).

8. Створити клас – однозв’язний список. Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції + (додавання елемента в початок списку), += (додавання елемента в кінець списку), – (вилучення заданого елемента зі списку), ++ (перехід до наступного елемента), -- (перехід до попереднього елемента), [ ] (одержання елемента списку).

9. Створити клас – коло. У закритій частині описати поля – координати центру та радіус. Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції + (збільшення радіусу), – (зменшення радіусу), порівняння за площею < , > та == .

 

10. Створити клас – ціле число. У закритій частині визначити поля – система числення і рядок символів, що відповідає числу. Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, вважаючи що слід вводити десяткові числа і систему числення, а виводити – число у обраній системі.

11. Створити клас – квадрат з полями у закритій частині: координати головної діагоналі. Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції + (збільшення головної діагоналі), – (зменшення головної діагоналі), порівняння за периметром < , > та == .

12. Створити клас – стек. Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції + (додавання елемента у стек), – (вилучення елемента зі стеку), == та != .

13. Створити клас – рядок символів. У закритій частині описати вказівник на символьний тип (на початок рядка). Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції + (конкатенації рядків), * (пошуку входження підрядка у рядок), – (вилучення підрядка з рядка).

14. Створити клас – квадратна матриця. У закритій частині описати поля: розмір матриці та вказівник на її початок в області динамічної пам’яті. Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, порівняння за слідом < , > , == та !=.

15. Створити клас – множина цілих чисел. У закритій частині описати вказівник на цілий тип (на елементи множини). Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення елементів множини, + (об’єднання), – (різниці) та * (перетину) множин.

16. Створити клас – вектор, який має у закритій частині вказівник на дані дійсного типу та кількість елементів. Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення елементів вектора, операції унарний + (сортування елементів за зростанням), унарний – (сортування елементів за спаданням).

17. Створити клас – дата з полями у закритій частині: день (1-31), місяць (1-12), рік (ціле число). Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції ++ (збільшення на 1 день) , –= (зменшення на n днів) та == .

18. Створити клас – час з полями у закритій частині: година (0-23), хвилини (0-59), секунди (0-59). Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції ++ (збільшення на 1 хвилину) , -- (зменшення на 1 хвилину) та != .

19. Створити клас – цифровий лічильник. Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції ++, --, == та !=.

20. Створити клас – дріб (раціональне число, що є відношенням двох цілих чисел). Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції +, –, * , / .

21. Створити клас – трикутник. У закритій частині описати поля – довжини сторін. Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції порівняння за периметром < , > , та ==, за площею <= , >= та != .

22. Створити клас – поліном. У закритій частині визначити поля – степінь полінома та вказівник на дані дійсного типу (масив коефіцієнтів). Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції + (додавання поліномів), – (віднімання поліномів), * (обчислення значення полінома для заданого аргументу).

23. Створити клас – ціле число. У закритій частині визначити поле – значення цілого типу. Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції + (додавання), – (віднімання), * (множення), / (цілочислове ділення), ~ (перевірка, чи число є простим).

24. Створити клас – дійсні числа. У закритій частині описати поле – значення дійсного типу. Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції ( ) (ціла частина числа) [ ] (дробова частина числа).

25. Створити клас – множина цілих чисел. У закритій частині описати поле – вказівник на цілий тип (елементи множини). Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції <= (підмножина), >= (надмножина), == (тотожність), != (нетотожність), ^ (визначення входження елемента у множину).

26. Створити клас – черга. Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції ++ (додавання елемента у чергу), -- (вилучення елемента з черги), ! (перевірка наявності елементів у черзі).

27. Створити клас – рядок символів. У закритій частині описати вказівник на символьний тип (на початок рядка). Визначити необхідні конструктори, деструктор. Перевантажити потокові операції введення і виведення, операції порівняння рядків == , != , < , <= , > , >= .

28. Створити клас – матриця, який у закритій частині містить вказівник на дані дійсного типу, кількість рядків та стовпців. Визначити необхідні конструктори, методи доступу, деструктор. Перевантажити потокові операції введення і виведення, операції = , + , – , += , –= , *= .

 

Лабораторна робота № 3

Тема роботи: Наслідування класів

Мета роботи: ознайомитись зі способами та механізмами наслідування класів та навчитись використовувати їх для побудови об’єктно-орієнтованих програм.

Послідовність роботи:

1. Ознайомитись з теоретичним матеріалом про наслідування класів.

2. Проаналізувати результати роботи програми у наведеному прикладі.

3. Для заданого варіанта завдання написати програму з використанням наслідування.

4. Оформити звіт про роботу за такою структурою:

• назва роботи;

• мета роботи;

• послідовність роботи;

• індивідуальне завдання;

• текст програми;

• контрольний приклад та результати роботи програми;

• висновки.

Приклад програми

Створити клас ГЕОМЕТРИЧНА ФІГУРА з полями – координатами, кольором та стилем. Визначити конструктори, деструктор. Створити похідний клас КОЛО з полями: координати, колір, стиль, радіус. Визначити конструктори за замовчуванням і з різним числом параметрів, деструктор, функції малювання кола.

Примітка. У програмі використано функції Win32 API для консольної графіки (за Р. Лафоре).

 

#include <windows.h>

#include <conio.h>

#include <math.h>

 

enum fstyle { SOLID_FILL, X_FILL, O_FILL,

LIGHT_FILL, MEDIUM_FILL, DARK_FILL };

 

enum color {

cBLACK=0, cDARK_BLUE=1, cDARK_GREEN=2, cDARK_CYAN=3,

cDARK_RED=4, cDARK_MAGENTA=5, cBROWN=6, cLIGHT_GRAY=7, cDARK_GRAY=8, cBLUE=9, cGREEN=10, cCYAN=11,

cRED=12, cMAGENTA=13, cYELLOW=14,cWHITE=15 };

 

void init_graphics();

void clear_screen();

void set_cursor_pos(int x, int y);

void set_color(color fg, color bg = cBLACK);

void set_fill_style(fstyle);

void draw_circle(int x, int y, int rad);

 

HANDLE hConsole; // дескриптор консолі

char fill_char; // символ заповнення

 

///////////////////////////////////////////////////////////

 

void init_graphics()

{

COORD console_size = {80, 25};

// відкрити канал введення/виведення на консоль

hConsole = CreateFile(TEXT("CONOUT$"), GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0L, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0L);

// задати розмір екрану 80x25

SetConsoleScreenBufferSize(hConsole, console_size);

// текст білим по чорному

SetConsoleTextAttribute( hConsole, (WORD)((0 << 4) | 15) );

 

fill_char ='\xDB';//символ заповнення за замовчуванням

clear_screen();

}

//---------------------------------------------------------

void clear_screen()

{

set_cursor_pos(1, 25);

for(int j=0; j<25; j++)

_putch('\n');

set_cursor_pos(1, 1);

}

//---------------------------------------------------------

void set_cursor_pos(int x, int y)

{

COORD cursor_pos; // початок у верхньому лівому куті

cursor_pos.X = x - 1; // Windows починає з (0, 0)

cursor_pos.Y = y - 1; // ми почнемо з (1, 1)

SetConsoleCursorPosition(hConsole, cursor_pos);

}

//---------------------------------------------------------

void set_color(color foreground, color background)

{

SetConsoleTextAttribute( hConsole, (WORD)((background << 4) | foreground) );

}

//---------------------------------------------------------

void set_fill_style(fstyle fs)

{

switch(fs)

{

case SOLID_FILL: fill_char = '\xDB'; break;

case DARK_FILL: fill_char = '\xB0'; break;

case MEDIUM_FILL: fill_char = '\xB1'; break;

case LIGHT_FILL: fill_char = '\xB2'; break;

case X_FILL: fill_char = 'X'; break;

case O_FILL: fill_char = 'O'; break;

}

}

//---------------------------------------------------------

void draw_circle(int xC, int yC, int radius)

{

double theta, increment, xF, pi=3.14159;

int x, xN, yN;

 

increment = 0.8 / static_cast<double>(radius);

for(theta=0;theta<=pi/2;theta+=increment)

{

xF = radius * cos(theta);

xN = static_cast<int>(xF * 2 / 1);

yN = static_cast<int>(radius * sin(theta) + 0.5);

x = xC-xN;

while(x <= xC+xN)

{

set_cursor_pos(x, yC-yN); _putch(fill_char); // верхня лінія

set_cursor_pos(x++,yC+yN); _putch(fill_char); // нижня лінія

}

}

}

 

///////////////////////////////////////////////////////////

 

class shape // базовий класс

{

protected:

int xCo, yCo; // координати фігури

color fillcolor; // колір

fstyle fillstyle; // стиль

public:

// конструктор без параметрів

shape () : xCo(0), yCo(0), fillcolor(cWHITE), fillstyle(SOLID_FILL)

{ }

// конструктор з параметрами

shape (int x, int y, color fc, fstyle fs) :
xCo(x), yCo(y), fillcolor(fc), fillstyle(fs)

{ }

// деструктор

~shape ()

{ }

// функція задання кольору і стилю

const void draw()

{

set_color (fillcolor);

set_fill_style( fillstyle );

}

};

///////////////////////////////////////////////////////////

class circle : public shape

{

private:

int radius; // радіус, а xCo і yCo будуть // координатами центру

public:

// конструктор без параметрів

circle() : shape()

{ }

// конструктор з параметрами

circle (int x, int y, int r, color fc, fstyle fs) : shape (x,y,fc,fs), radius(r)

{ }

// деструктор

~circle ()

{ }

// функція малювання кола

const void draw()

{

shape::draw();

draw_circle (xCo, yCo, radius);

}

};

 

int main ()

{

init_graphics (); // ініціалізуємо систему // відображення графіки

circle cir (40, 12, 5, cGREEN, X_FILL); // створюємо коло

 

cir.draw (); // малюємо

 

set_cursor_pos(1, 25); // переводимо курсор у низ // екрану

set_color (cLIGHT_GRAY);

return 0;

}

 

 





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.