Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive Объектно-ориентированное программирование на С++ - eDrive

edrive.narod.ru
from edrive.narod.ru More from this publisher
13.01.2015 Views

114 class VFunction { public: float Time (float R, float t) { return R*pow (sin (t), 2); } }; class VRectangle: public VFunction { public: float step; VRectangle (float tk) { step = tk / 100; } }; void MainVIntegral () { float j, tk = 0.8, t, sum; VRectangle myIntegral (tk); for (t=0, sum=0; t

115 void MainVEqu() { // x + 4y = 9; –x + 6y = 1 float member[] = { 1, 4, 9, –1, 6, 1 }; VEquX x (member); VEquY y (member); ShowMessage ("x = " + AnsiString (x.rx / x.re) + '\n' // x = 5 + "y = " + AnsiString (y.ry / y.re)); // y = 1 } Здесь списки инициализации конструкторов пpоизводных классов VEquX, VEquY содержат запись VDet (r). Они инициализируют в базовом классе VDet те части классов EquX, EquY, которые принадлежат Det. Еще один пример наследования: class VStudent { protected: int course, group; public: int fac; AnsiString result; VStudent (AnsiString name, int y) { course = 10 – y / 1000; group = y; fac = group / 100 % 10; result = "\nСтудент " + name + " с факультета " + fac; } }; class VBachalour: public VStudent { public: int spe; VBachalour (AnsiString n, int a, int b): VStudent (n,a) { spe = b; result += "\n" + AnsiString (course) + " курса " + AnsiString (group) + " группы – бакалавр по специальности " + AnsiString(b); } }; void MainBac () { VBachalour first ("Сидоров", 6431, 225); if (first.spe > 200 && first.fac == 4) first.result += "\nЭто специалист по автоматике"; else first.result += "\nЭто специалист по электротехнике"; ShowMessage (first.result); } Пример множественного наследования:

115<br />

void MainVEqu() {<br />

// x + 4y = 9; –x + 6y = 1<br />

float member[] = { 1, 4, 9, –1, 6, 1 }; VEquX x (member); VEquY y (member);<br />

ShowMessage ("x = " + AnsiString (x.rx / x.re) + '\n' // x = 5<br />

+ "y = " + AnsiString (y.ry / y.re)); // y = 1<br />

}<br />

Здесь списки инициализации конструкторов пpоизводных классов<br />

VEquX, VEquY содержат запись VDet (r). Они инициализируют в базовом<br />

классе VDet те части классов EquX, EquY, которые при<strong>на</strong>длежат Det.<br />

Еще один пример <strong>на</strong>следования:<br />

class VStudent {<br />

protected:<br />

int course, group;<br />

public:<br />

int fac;<br />

AnsiString result;<br />

VStudent (AnsiString name, int y) {<br />

course = 10 – y / 1000; group = y; fac = group / 100 % 10;<br />

result = "\nСтудент " + name + " с факультета " + fac;<br />

}<br />

};<br />

class VBachalour: public VStudent {<br />

public:<br />

int spe;<br />

VBachalour (AnsiString n, int a, int b): VStudent (n,a) {<br />

spe = b;<br />

result += "\n" + AnsiString (course) + " курса " + AnsiString (group) +<br />

" группы – бакалавр по специальности " + AnsiString(b);<br />

}<br />

};<br />

void MainBac () {<br />

VBachalour first ("Сидоров", 6431, 225);<br />

if (first.spe > 200 && first.fac == 4)<br />

first.result += "\nЭто специалист по автоматике";<br />

else<br />

first.result += "\nЭто специалист по электротехнике";<br />

ShowMessage (first.result);<br />

}<br />

Пример множественного <strong>на</strong>следования:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!