, 1998 , Microsoft Systems Journal. , .
- 1980- . 1980- , . . , . C++ Smalltalk . , , , , . - , . , , Apple Object Pascal, SmallTalk ParePlace Digitalk, Turbo C++ Borland.
, , . , (collections) . C++:
class Dog { public: virtual void Bark(void); }; class Pug : public Dog { public: virtual void Bark(void); }; class Collie : public Dog { public: virtual void Bark(void); };
Collie Pug Dog, (generic) :
void BarkLikeADog(Dog& rdog) { rdog.Bark(); }
Bark , C++ . , BarkLikeADog , ; , , Dog. , - .
, . . , . . , , . Bark Pug:
void Pug::Bark(void) { this->BreathIn(); this->ConstrictVocalChords(); this->BreathOut(); }
, Bark Dog , ? , , (barks) (dog)? , Pug Dog. . , , . .
, , , , , . , . , , , . - . . , . , . - . , . , - , (Component Object Model - ) Microsoft, Orbix Object Request Broker Iona Digitalk, - Java1.
, - , , " " " " , . Java:
interface IDog { public void Bark(); }; class Pug implements IDog { public void Bark( ){...} }; class Collie Implements IDog { public void Bark( ){...} };
Collie Pug IDog, :
void BarkLikeADog(IDog dog) { dog.Bark(); }
, C++. , Bark IDog , IDog Pug Collie . , Pug, Collie , " " (bark), Pug Collie , IDog.
, ( , ). . .
, . , (opaque) . , , , , , , , . Excel, , . Excel 25 , (Linking, Embedding, Inplace Activation, Automation, Active Document Objects, Hyperlinking . .). (vptr) , 100 , , . , 100 , .
Excel , . QueryInterface. ( , IOleItemContainer), . , , , Excel , . , 1000 . , 16 Excel. , 1000 16 000 , . 100 , , . , 32 , . , , 1000- 32 100 , , Excel. , .
, Excel vptr, , . . A.1 . , , , vptr . , , , . . . vptr, . , vptr , . .2. , , , , .
, vptr, Excel . . 16 , 32 , vptr , . , - , 32 vptr . , Excel vptr, " " (cell-by-cell). , , vptr. " " (flyweight objects), , " " (tearoff) , " " (Crispin Goswell. Programmer's Cookbook) ( http://www.microsoft.com/oledev). (lazy evaluation) vptr.
, . . , , , , . , , , . , . Microsoft Transaction Server ( Microsoft MTS).
- , . MTS , . MTS , , . MTS , , , , (fine-grain). , vptr ( ). MTS , . MTS , , . , , , MTS . , MTS, MTS , .
, MTS, , . , , MTS, , . , , MTS . MTS , .
MTS Microsoft , MTS . - .
1 Java , , CORBA ( , Orbix Iona, DSOM IBM, Object Broker BEA).