.


:




:

































 

 

 

 





. ᒺ, , ᒺ 볺 ᒺ. 볺 () , ()  . ͳ - []. , , .

:

ᒺ, ; , .

: ᒺ, . ᒺ, . , .

ᒺ- : . ᒺ, ᒺ . ᒺ.

. . , , . 䳿. 볺 , , . :

 

//

enum Boolean {FALSE, TRUE};

 

class Heater {

public:

Heater(Location);

~ Heater();

 

void turnOn();

void turnOff();

Boolean isOn() const;

 

private:

...

};

 

public , ᒺ.

, - , , :

 

class SerialPort {

public:

SerialPort(Location);

~ SerialPort();

 

void write(char*);

void write(int);

static SerialPort port[10];

 

private:

...

};

 

Heater :

 

class Heater {

public:

...

 

protected:

const Location repLocation;

Boolean repIsOn;

SerialPort* repPort;

};

 

repLocation, repIsOn, repPort ᒺ. ᒺ ( ).

( -) :

 

Heater :: Heater(Location loc): repLocation (loc),

repIsOn(FALSE),

repPort(&SerialPort::ports(1))

{ }

 

:

 

Heater :: Heater() { }

 

void Heater :: turnOn()

{

if (!repIsOn) {

repPort->write(*);

repPort->write(repLocation);

repPort->write(1);

repIsOn = TRUE;

}

}

 

void Heater :: turnOff()

{

if (repIsOn) {

repPort->write(*);

repPort->write(repLocation);

repPort->write(0);

repIsOn = FALSE;

}

}

 

Boolean Heater :: isOn() const { return repIsOn; }

 

, ( , , .), , .

. : , , . , . .

, . . ().


 

send PrimeData:

Void PrimeData::send(){

//

//

{;

void FullData::Send {

PrimeData::Send();

//

//

};

PrimeData prime;

FullData full (12);

Void SendData (PrimeData &D) {D.Send();}:

:

SendData (Prime);

SendData (full);

, . ? SendData D.Send(), . .

, ( D) ᒺ , .

ᒺ - .

, . , . .

[]. ³ , , +, ( - overloading). ++ (, ), , . , , , .

: kind 0 PrimeData 1 FullData. switch(kind) .

case, .

. .

. , , , , .

push a1

push a2

jmp 1256

䳿 , . , , , ᒺ .

.

SmallTalk. ᒺ , , . ᒺ . ᒺ , . , . , . , .

, ᒺ ( ), ( 1,5 ).

?

++ , , (virtual), .

V- ( ). ᒺ. . , V- .

: ᒺ - .

, (inline). ( ) . ( ).

( - ) .

Borland C Borland Pascal.

Y=X
class Y

class X: public Y

ᒺ Y X , ᒺ ᒺ Y Y. ?

, ++, Pascal ( , /).

 

 

, ( ) ( ).

 

, (), . () .

ᒺ- ᒺ.

ϳ , ( ) .

 

class TelemetryData {

public:

TelemetryData();

virtual ~TelemetryData();

 

virtual void transmit();

Time currentTime();

 

protected:

int id;

Time timeStamp;

};

 

 

class ElectricalData: public TelemetryData {

public:

ElectricalData(float v1, float v2, float a1, float a2);

virtual ~ ElectricalData();

 

virtual void transmit();

float currentPower() const;

 

protected:

float fuelCeill1Voltage, fuelCeill2Voltage;

float fuelCeill1Amperes, fuelCeill2Amperes;

};

, . ++ . .

 

void TelemetryData::transmit()

{

// id

// timeStamp

}

 

void ElectricalData::transmit()

{

TelemetryData::transmit();

//

//

}

 

++ (). (Smalltalk, Java) .

. Smalltalk . ++, , virtual, .

. . . ++. ᒺ .

 

void transmitFreshData(TelemetryData & d, const Time & t)

{

if (d. currentTime() >= t) d. transmit();

}

 

, . . ++ , .

. ᒺ- . ++ , . . ᒺ this. () .

++ .

 

TelemetryData telemetry;

ElectricalData electrical;

telemetry = electrical;

 

, , ( -) . , telemetry electrical.

. , , , .

( ) .

. , (Smalltalk, Eiffel). , (CLOS). ( ), () ++.

. , (Smalltalk, Eiffel). , (++). , (++).

. ++ . ᒺ, .

 

³ ᒺ . .

:

 

class TemperatureController {

public:

TemperatureController(Location);

~TemperatureController();

 

void process(const TemperatureRamp &);

Minute schedule(const TemperatureRamp &) const;

 

protected:

Heater h;

};

 

ᒺ Heater TemperatureController.

ᒺ- :

- , ;

- .

ᒺ . ᒺ ᒺ ( ) .

. , - , - /. , ᒺ ( ) .

, , .

 

 

 

.

 

C , , .

1. .

2. .

3. .

4. .

5. .

6. .

7. .

8. .

9. .

10. .

11. .

12. .

13. .

 





:


: 2016-07-29; !; : 719 |


:

:

, ,
==> ...

1563 - | 1542 -


© 2015-2024 lektsii.org - -

: 0.092 .