Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

COM interfejsi, znacenje PURE

[es] :: C/C++ programiranje :: COM interfejsi, znacenje PURE

[ Pregleda: 4322 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
*.dialup.blic.net



+2 Profil

icon COM interfejsi, znacenje PURE04.09.2004. u 08:20 - pre 238 meseci
Radim na jednoj aplikaciji koja cita informacije o COM objektu iz TLB-ova.

Primjetio sam da u nekim primjerima definicija interfejsa, cesto pojavljuje PURE. Primjer:

STDMETHOD(PropGet_Errors) (THIS) PURE;

Pokusao sam da nadjem znacenje PURE ili da shvatim sta radi ali mi neide.

Za C++ PURE je macro koji je definisan kao:
#define PURE = 0
a za obican C, samo je definisan kao:
#define PURE


Znaci da prethodni primjer moze da se napise i kao:
STDMETHOD(PropGet_Errors) (THIS) = 0;


Da li neko moze da mi objasni o cemu je rijec?

Hvala,
Ljubisa



 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.client.comcast.net



+1001 Profil

icon Re: COM interfejsi, znacenje PURE04.09.2004. u 09:09 - pre 238 meseci
Slicna stvar kao sa virtualnim metodima.

Ako neki metod deklarises unutar klase kao (izmisljam)
virtual MojMetod( int x) = 0;

dobio si da je zapravo pointer na MojMetod nula sto znaci nekoliko stvari (potrazi pod
pojmom 'v-table'), od kojih je najbitnija da klasa ne moze da se instancionira
(pure virtual class) ali zato moze da posluzi kao parent klasa nekoj drugoj, konkretnijoj
klasi. Ta druga klasa koja je nasledjuje (ako ima ambiciju da bude konkretnija, tj, da
se moze instancionirati) je u obavezi da ima konkretnu implementaciju funkcije MojMetod.

Slicno je i sa interface-om, koji je nista drugo nego specijalan slucaj klase
koji nema podatke, nego samo metode. Ako bilo koju metodu interfejsa
deklarises kao PURE (tj. = 0), dobio si pure virtual interfejs (u sirem smislu: pure virtual
klasu). Takav interfejs ne moze da se sam instancionira. Klasa koja ga nasledjuje
(obicno je to neki COM objekat, koji obicno ima sasvim konkretne svrhe), u obavezi je
da ima svoju posebnu implementaciju svakog metoda koji je u interfejsu deklarisan kao PURE.

Ovakva praksa je zapravo vrlo pametna konvencija.
Primer:
Svaki COM objekat mora da ima implementiran IUnknown interfejs, cija funkcija
QueryInterface se razlikuje od COM objekta do COM objekta, zato sto proverava
vrednost GUID-a svojstvenog bas tom COM objektu. Posto se obicno svaki COM
objekat definise kao public IUnknown, na ovaj nacin (PURE), pisac COM objekta je
primoran da se ne zezne (osim ako je bas uporan i/ili neispavan) nego da napise svoju
specificnu implementaciju interfejsa.


 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
*.dialup.blic.net



+2 Profil

icon Re: COM interfejsi, znacenje PURE04.09.2004. u 13:24 - pre 238 meseci
Moracu jos malo da citm o COM objektima i virtual metodama da bih mogao da shvatim ovo.

Inace mi je jasn nacin rada IUnknown i IDispatch interfejsa, ali posto sada prelazim sa C-a nd C++, jos uvijek ne shvatam znacenje virtual i kada treba da upotrijebim PURE a kada ne.
U svakom slucaju, nabavio sam neki PDF sa uputstvom o COM tehnologiji (mada se ne spominje PURE), pa imam dobru zanimaciju za vikend.

Hvala na odgovoru.

Pozdrav,
Ljubisa


 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.client.comcast.net



+1001 Profil

icon Re: COM interfejsi, znacenje PURE04.09.2004. u 16:22 - pre 238 meseci
Mozda bi bolje bilo da tezinu bacis prvo na C++, a da COM ili saceka ili da ga radis
smanjenim intenzitetom.

Ima puno razloga za to, ne samo ovaj problem, nego i mnogo drugih fundamentalnijih
razloga. Ako budes pisao COM objekte, iako se mogu pisati u C-u pa cak i u asembleru
ili Pascalu, svi ih pisu u C++-u. Ako budes koristio ATL, ovo srednje slovo (Template)
dolazi iz C++-a a nema ga u C-u.

Na kraju, COM je evolucijski korak dalje - dok je C++ objektno orjentisan, i resava
(izmedju ostalog) source code reusing (ponovnog koriscenja) source koda (putem
nasledjivanja), COM je tehnologija koja omogucava binary code reusing. Tako da je
mozda bolje ne preskakati bitne korake.


 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
*.dialup.blic.net



+2 Profil

icon Re: COM interfejsi, znacenje PURE04.09.2004. u 17:51 - pre 238 meseci
> Mozda bi bolje bilo da tezinu bacis prvo na C++, a da COM ili saceka ili da ga radis
smanjenim intenzitetom.

Slazem se, savjet je na mjestu, ali vrlo cesto nema vremena za to, tako da vecinu stvari rjesavam "u hodu". Obicno kada naidje neki problem ili nesto sto ne razumijem, ja ga samo zaobidjem ili idem dalje :)

Inace, napravio sam mali programcic koji cita informacije iz TLB-a i pravi heder za C.
Sada kada pokusavam prevesti neke svoje programe u C++, dolazi do problema, tako da pokusavam i taj generator COM hedera prilagoditi da radi i sa C i sa C++ kompajlerima.

Da li mozes da mi preporucis neki alat koji pravi slicne heder fajlove tako da mogu da se koriste u aplikacijama koje koriste samo API (bez MFC-a)?

Hvala na pomoci!

Pozdrav,
Ljubisa


 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.client.comcast.net



+1001 Profil

icon Re: COM interfejsi, znacenje PURE04.09.2004. u 19:34 - pre 238 meseci
Svojevremeno (mozda pre godinu dana) je na ovoj diskusiji momak ciji pseudonim je
Glista ostavio svoju aplikaciju (posetiocima na probu) koja iscitava i dinamicki kreira CHTML projekt za bilo koji COM objekat, navodeci sve bitne metode i clanice COM
objekta.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.bos.east.verizon.net



+6 Profil

icon Re: COM interfejsi, znacenje PURE04.09.2004. u 21:17 - pre 238 meseci
Kad pravim COM klijente, obično iskoristim direktivu #import da generišem nešto što liči na header fajlove - onda sadržaj ta dva fajla iskopiram u header fajl i izbrišem #import.
 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
*.dialup.blic.net



+2 Profil

icon Re: COM interfejsi, znacenje PURE04.09.2004. u 22:16 - pre 238 meseci
Odlicno, kompajler je kreirao dva fajla sa ekstenzijma tlh i tli. Sve je tu.

Da li je ovo rjesenje "MS specific" ili je standardno i za ostale C++ kompajlere?

Pozdrav,
Ljubisa
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.bos.east.verizon.net



+6 Profil

icon Re: COM interfejsi, znacenje PURE04.09.2004. u 23:31 - pre 238 meseci
MS Specific
 
Odgovor na temu

[es] :: C/C++ programiranje :: COM interfejsi, znacenje PURE

[ Pregleda: 4322 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.