|
|
 |
Hódító / Queosia forum
http://queosia.com
http://hodito.hu
|
|
PC (hardver, szoftver, játékok stb.) Minden, ami számítógép. Kedvenc játékod megbeszélése, segítségkérés hardverügyben stb. |

05-17-2012, 22:23
|
Junior Member
|
|
Join Date: Mar 2011
Posts: 47
Activity: 0%
Longevity: 73%
|
|
Nos, ha jól értem, olyan osztály kell, ami egy példányban szerepel max, és az sem példányosítás útján, erre a legegyszerűbb a statikus osztály szervezése. A singleton példában már látni, hogyan működne, egyszerűen minden metódus és mező statikus kell hogy legyen, így példány létrehozására nincs is szükség, a statikus szerkezet a típuson keresztül érhető el, persze kell egy metódus, ami konstruktorként funkcionál (ha nem a kódban vannak inicializálva az értékek)
a kérdés, hogy ki az a mindenki, aki használná ezt az osztályt, és hogyan?
|

05-17-2012, 22:37
|
 |
Member
|
|
Join Date: Jun 2007
Location: Nyíregyháza
Posts: 2,975
Activity: 0%
Longevity: 92%
|
|
Quote:
Originally Posted by Cpt Balu
Nos, ha jól értem, olyan osztály kell, ami egy példányban szerepel max, és az sem példányosítás útján, erre a legegyszerűbb a statikus osztály szervezése. A singleton példában már látni, hogyan működne, egyszerűen minden metódus és mező statikus kell hogy legyen, így példány létrehozására nincs is szükség, a statikus szerkezet a típuson keresztül érhető el, persze kell egy metódus, ami konstruktorként funkcionál (ha nem a kódban vannak inicializálva az értékek)
a kérdés, hogy ki az a mindenki, aki használná ezt az osztályt, és hogyan?
|
Épp ez az, hogy példányosítás útján lehessen létrehozni az objektumot. Egy példa:
Quote:
TheClass one = new TheClass();
TheClass two = new TheClass();
|
Ekkor az lenne számomra a jó, hogy ha one és two ugyan arra az objektumra mutatna. Ezt meg lehet valahogy valósítani? Mondjuk most eszembe jutott valami, mindjárt ki is próbálom.
__________________
Redológia (#455305) [1/A] [SZK]
Non omnis moriar (#701164) [3/G]
|

05-17-2012, 22:56
|
Junior Member
|
|
Join Date: Mar 2011
Posts: 47
Activity: 0%
Longevity: 73%
|
|
na arra én is kíváncsi leszek  a példányosítás definíciója szerint önálló entitást hoz létre, erre is utal a "new" kulcsszó, régi újat létrehozni nem lehet, elvben úgy lehetne megoldani, hogy egy statikus metódus visszaadja az egyetlen példány azonosítóját:
TheClass One = TheClass.GetTheOne();
TheClass Two = TheClass.GetTheOne();
csak kérdés, hogy mi is az amit ez a függvény visszaad? lehet egy statikus változó, de egyszer létre kell hozni ezt is, mondjuk egy másik statikus függvénnyel:
|

05-17-2012, 23:01
|
Junior Member
|
|
Join Date: Mar 2011
Posts: 47
Activity: 0%
Longevity: 73%
|
|
class TheClass
{
static TheClass TheOnlyOne;
public static TheClass GetTheOne()
{
return TheOnlyOne;
}
public static void CreateTheOne();
{
if([még nem létezik])
TheOnlyOne=new TheClass();
else
[már létezik];
}
private TheOne()<--privát konstruktor
{
[példányosítás];
}
}
|

05-17-2012, 23:06
|
Junior Member
|
|
Join Date: Mar 2011
Posts: 47
Activity: 0%
Longevity: 73%
|
|
Ha pedig mindenképp a hagyományos eljárás kell a példányosításra, akkor az egyetlen megoldás, hogy a mezők statikusak, a metódusok pedig nem, ilyenkor sok-sok különböző példány jön létre, de ha a metódusok hívásakor mindig ugyanazt a statikus adatot érik el, a látszat az lesz, hogy ugyanazt az objektumot használod :P
A new kulcsszó mindig új memóriaterületet foglal, tehát új példányt hoz létre, ezen változtatni nem lehet (kb olyan, mintha az összeadás jelet akarnád kivonásra használni, nem fog menni és kész)
|
The Following User Says Thank You to Cpt Balu For This Useful Post:
|
|

05-17-2012, 23:44
|
 |
Member
|
|
Join Date: Jun 2007
Location: Nyíregyháza
Posts: 2,975
Activity: 0%
Longevity: 92%
|
|
Quote:
Originally Posted by Cpt Balu
Ha pedig mindenképp a hagyományos eljárás kell a példányosításra, akkor az egyetlen megoldás, hogy a mezők statikusak, a metódusok pedig nem, ilyenkor sok-sok különböző példány jön létre, de ha a metódusok hívásakor mindig ugyanazt a statikus adatot érik el, a látszat az lesz, hogy ugyanazt az objektumot használod :P
A new kulcsszó mindig új memóriaterületet foglal, tehát új példányt hoz létre, ezen változtatni nem lehet (kb olyan, mintha az összeadás jelet akarnád kivonásra használni, nem fog menni és kész)
|
Azt hiszem, ez teljesen kielégíti a tudásszomjamat. Köszönöm szépen!
__________________
Redológia (#455305) [1/A] [SZK]
Non omnis moriar (#701164) [3/G]
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT +1. The time now is 13:13.
 |
|
|
|
|
|
|