Professional Documents
Culture Documents
Intro in C Language
Intro in C Language
1. Цел на упражнението
Усвояване на практически умения за работа с производни
класове. Запознаване с графичната библиотека на С++.
1
Производният клас има достъп като към собствени членове до
всички членове от секции public и protected на основния клас.
При множествено наследяване всеки основен клас трябва да
притежава атрибут public или private. Ако атрибутът на основен клас е
public, то наследените от него членове запазват своето ниво на достъп
и в производния клас. В наследствена йерархия, при която всеки базов
клас е public, всеки клас от съответната верига на наследявания има
достъп до всички public и protected членове на предходните базови
класове. В наследствена йерархия, в която основните членове са
private, всеки наследен public или protected член става private член на
производния клас.
Конструкторът на основен клас получава стойности за параметрите
си чрез списък за инициализация, включен в дефиницията на
конструктора на производния клас. В случай на множествено
наследяване в списъка за инициализация може да присъства името на
всеки основен клас.
2
• getmaxcolor( int ) - връща максималната стойност на цвета.
• floodfill( int x, int y, int border ) - запълва затворен с цвят border
контур; x, y - координати на точка от областта.
• arc( int x, int y, int stangle, int endangle, int radius) - чертае дъга от
окръжност; x,y - координати на центъра; radius - радиус; stangle,
endangle - начален и краен ъгъл в градуси.
4. Задачи за изпълнение
Задача 1:
Да се разгледа, обсъди и изпълни програмата от фиг.5.1
Задача 2:
Да се добави друг обект от клас Vehicle, наречен велосипед
(bicycle) и да се тестват възможнитe за него методи. Да се добави обект
ford от клас Car и се извикат всички достъпни за обекта методи.
Задача 3:
Да се добавят два нови класа, луксозен автомобил (LuxCar) и
спортен автомобил (SportsCar) в йерархията от фиг. 5.1, наследяващи
класа Car. Да се добавят нови признаци, характеризиращи класовете и
съответни методи за използването им.
Задача 4:
Дадени са декларациите на класа Location и класа Point.
class Location
{
public:
Location( int, int );
~Location() { } // деструктор
int getX( void );
int getY( void );
protected:
int X; // хоризонтална координата на точката
int Y; // вертикална координата на точката
};
class Point : public Location
{
public:
Point( int, int );
~Point() { } // деструктор
void show( void );
void hide( void );
boolean isVisible( void );
void moveTo( int, int );
protected:
boolean visible; // флаг, показващ дали точката е визуализирана или скрита;
};
3
Да се дефинират следните методи, декларирани в клас Location:
• getX - връща текущата стойност на X;
• getY - връща текущата стойност на Y;
Да се дефинират следните методи, декларирани в клас Point:
• show - визуализира точката с цвета по подразбиране;
• hide - скрива точката;
• isVisible - връща стойността на visible;
• moveTo - премества точката на нови координати;
Направените дефиниции да се тестват за различни обекти.
Задача 5:
Дадени са декларациите на класа Circle.
class Circle : public Point
{
public:
Circle( int, int, int );
~Circle() { } // деструктор
void show( void );
void hide( void );
void moveTo( int, int );
void expand( int);
void contract( int );
private:
int radius; \\ радиус на окръжността
};
Да се дефинират следните методи, декларирани в клас Circle:
• show - чертае окръжност със зададени център и радиус;
• hide - скрива окръжността;
• moveTo - премества окръжността на нови координати на центъра;
• expand - разширява окръжността чрез увеличаване на радиуса;
• contract - свива окръжността.
Направените дефиниции да се тестват за различни обекти.
Задача 6:
Да се декларира клас Rectangle, наследяващ класа Point и
членове-данни "дължина" и "ширина". Да се дефинират методи,
аналогични на тези от клас Circle. Направените дефиниции да се тестват
за различни обекти.
4
#include <iostream.h>
class Vehicle
{
protected:
int wheels; // брой колела
float weight; // тегло
public:
void initialize( int inWheels, float inWeight);
int getWheels( void );
float getWeight( void );
float wheelLoading( void );
}; // end class Vehicle
5
<< 100.0 * zil.efficiency() << " процента.\n";
} // end main
Фиг. 5.1