Ahoj,
mám takový zvláštní dotaz, zajímá mě, zda je možné v Object Pascalu definovat metody a atributy konkrétním objektům (ne třídám). Mě to přijde naprosto nepřijatelné (programuji hlavně v C++), ale jsou lidé, kteří mi toto tvrdí.
Ptám se tedy, zda je toto v Object Pascalu možné, popř. zda jste se s tím setkali někde jinde.
Díky
Fórum › Pascal
Metody objektu
To vdolek :
Nevím, jestli jsem dobře pochopil otázku, zřejmě trochu koliduje terminologie mezi Pascalem a C. V Pascalu jsou typy a proměnné (instance) objektů. Stoprocentně ti to neřeknu (teď tu nemám Pascal abych to ověřil) ale na 99% to pro proměnnou definovat nelze. Jen pro typ. Což by asi odpovídalo třídě v C.
Když to ti lidé tvrdí, ať ti ukážou příklad takového zdrojáku a dej ho sem, kouknem se, třeba se jen pletou...
To vdolek :
Takže je to jak jsem si myslel, pro proměnnou (instanci konkrétního objektu) nelze přímo v deklaraci použít typ objekt, takže pro ni nelze ani definovat metody a atributy.
Lze to pouze pro typ (v c třídu) .
Borland Pascal Version 7.0 Copyright (c) 1983,92 Borland International
OBJ1.PAS(7): Error 21: Error in type.
var
Tosoba : object
^
Chyba při překladu 21: Chyba v typu
Definice typu nemůže začínat tímto symbolem.
To KIIV :
Já zas tuším, že v Delphi jen přidali "visual" programování pod WIN a jak jsem nakoukl do dokumentace, tak místo klíčového slova object zavedli class, jináč vše při starém. (http://portal.aauj.edu/portal_resources/downloads/programming/delphi_object_pascal_language_guide.pdf)
Takže dokud vdolek neodpoví, tak se dál nedostanem...
Sory za zpoždění, byl jsem pryč.
Nevím, jestli jste dobře pochopili otázku. Mám nějaký typ (třídu), který jsem si definoval. Vytvořím proměnnou tohoto objektu (instanci třídy). Mohu potom v této proměnné (pouze tomuto konkrétnímu objektu) měnit položky (například přidávat atributy nebo metody)? Osobně bych řekl, že ne, ale potřebuji si být jistý.
Díky
To vdolek :
Pořád nevím, jestli jsem pochopil otázku. Předpokládám, že tím nemyslíš "například přidávat atributy nebo metody" za běhu programu, to dle mého mínění nejde nikdy. A pokud tím míníš deklaraci statické proměné, tak u ní nic měnit nelze.
Pořád se ale pohybujeme v oblasti domněnek.
ale jsou lidé, kteří mi toto tvrdí
Tak ať ti to dokážou na nějakém příkladu... Howgh.
Jsem si jistý, že předefinovat atributy jedné konkrétní instanci nějakého objektu není možné. Jediná možnost je nadefinovat si jiný typ, zdědit všechno z toho původního a přidat nebo předefinovat to, co potřebujeme, ale to už pak budou dva rozdílné typy. A nikdy se to nedá udělat v sekci Var, vždycky jenom v Type.
S metodami je to malinko jiné. Pascal podporuje polymorfismus a virtuální metody, takže pak můžeme mít ukazatel na určitou třídu, který nasměrujeme na instanci potomka této třídy a metody původní třídy volané přes tento ukazatel vyvolají metody té konkrétní instance. Podrobně jsem to popsal tady: http://mircosoft.ic.cz/texty/OOP.TXT, viz poslední kapitolu. Ovšem pořád tu máme dva různé typy definované v sekci Type.
Tohle všechno funguje v TP/BP stejně jako v Delphi, jediný rozdíl je v tom, že TP používá slovo Object a Delphi Class. Plus tedy že Delphi umí ještě další konstrukce, které TP nezná, ale tyhle základy mají společné.
Moje stránka.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Přetěžení metody v objektu — založil Wimby
Type script volání private metody zevnitř objektu — založil ondra
Získávání sub objektů z objektu — založil Beepvix
Moderátoři diskuze