Metody objektu – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Metody objektu – Pascal – Fórum – Programujte.comMetody objektu – Pascal – Fórum – Programujte.com

 

vdolek0
Newbie
1. 4. 2011   #1
-
0
-

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

Nahlásit jako SPAM
IP: 84.42.206.–
JoDiK
~ Anonymní uživatel
987 příspěvků
1. 4. 2011   #2
-
0
-

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...

Nahlásit jako SPAM
IP: 88.103.233.–
JoDiK
~ Anonymní uživatel
987 příspěvků
3. 4. 2011   #3
-
0
-

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.

Nahlásit jako SPAM
IP: 88.100.43.–
KIIV
~ Moderátor
+43
God of flame
3. 4. 2011   #4
-
0
-

To JoDiK : object pascal je tusim delphi.. v TP7 sou objekty jen velice letmo :)

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
JoDiK
~ Anonymní uživatel
987 příspěvků
3. 4. 2011   #5
-
0
-

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...

Nahlásit jako SPAM
IP: 88.103.233.–
vdolek0
Newbie
4. 4. 2011   #6
-
0
-

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

Nahlásit jako SPAM
IP: 84.42.206.–
JoDiK
~ Anonymní uživatel
987 příspěvků
4. 4. 2011   #7
-
0
-

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.

Nahlásit jako SPAM
IP: 88.103.233.–
Mircosoft+1
Věrný člen
4. 4. 2011   #8
-
0
-

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é.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
vdolek0
Newbie
4. 4. 2011   #9
-
0
-

Díky, to jsem potřeboval slyšet. Zeptám se na ten příklad a kdyžtak dám ještě vědět.

Nahlásit jako SPAM
IP: 84.42.206.–
Aleš
~ Anonymní uživatel
102 příspěvků
25. 1. 2012   #10
-
0
-

"jediný rozdíl je v tom, že TP používá slovo Object a Delphi Class"

To je omyl rozdíl je v tom kde se objekt vytvoří jednou je to ve stacku a podruhe v heapu.

Sám jsem ten rozdíl hledal.

Nahlásit jako SPAM
IP: 88.146.180.–
JoDiK
~ Anonymní uživatel
987 příspěvků
25. 1. 2012   #11
-
0
-

#10 Aleš
Tomu nerozumím...

Jako že Pascal vytváří objekty na stacku neboli zásobníku a Delphi na heapu neboli na haldě? To snad nemyslíš vážně...

Nahlásit jako SPAM
IP: 88.103.233.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý