Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
|
Forum - Polski Portal COLOBOTa |
|
|
Klasy |
Autor |
Wiadomość |
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 29-12-2009, 21:35 Klasy
|
|
|
Mam problem, a to chyba jest dzial od problemow. Czy jest jakis sposob, by sprawdzic, ile instancji siedzi w danej klasie, jakos im poprzydzielac numerki i ogolnie je monitorowac? I wlasciwie do czego sluza destruktory? |
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
Wysłany: 29-12-2009, 21:37
|
|
|
Berserker napisał/a: | ile instancji siedzi w danej klasie | Chyba ile jest instancji danej klasy...
Robisz statyczne pole licznika i w konstruktorze je zwiększasz o 1. |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 29-12-2009, 22:29
|
|
|
Cytat: | Robisz statyczne pole licznika i w konstruktorze je zwiększasz o 1. |
A jak wlasciwie zadeklarowac destruktor? Bo jak dam cos takiego:
Kod: | public class hmm
{
static int count = 0;
void hmm()
{
count++;
}
void ~hmm()
{
count--;
}
} |
Wywala przy tyldzie, ze brakujaca nazwa funkcji...
@edit
Czy jesli robot stworzy nowa instancje, a pozniej zostanie zniszczony/przestanie wykonywac program to ta instancja zwroci wartosc null? Lub jesli zapisze dane jego w zmiennej typu object to ta zmienna zwroci wartosc null? |
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
Wysłany: 30-12-2009, 11:06
|
|
|
Berserker napisał/a: | Czy jesli robot stworzy nowa instancje, a pozniej zostanie zniszczony/przestanie wykonywac program to ta instancja zwroci wartosc null? |
Instancja nigdy nie zwróci wartości null, chyba że sam ją do niej przypiszesz lub wywołasz destruktor (lub zniszczy ją Colobot, ale to tylko w przypadku zmiennych typu object). Wynika to z natury języków obiektowych - instancja istnieje zawsze, chyba że coś ją usunie. W takim wypadku nic jej nie usuwa, ponieważ nadal istnieją do niej referencje, czy to w polach statycznych, czy to w programie na innym robocie (jeśli nie istnieją - usunie, ale i tak zachowywanie jej nie ma sensu). Interpreter CBot nie usuwa instancji przy przerywaniu programu, chyba że tylko program się do niej odwołuje (tzn. nie ma jej w polach statycznych czy w innych wykonywanych programach). W językach z garbage-collectorem (CBot do nich należy?) instancja automatycznie jest niszczona, gdy liczba referencji (wskaźników) jest równa 0. Nie ma to żadnego znaczenia (poza tym, że nie musimy wywoływać destruktorów) bo skoro i tak nie dostaniemy się do tej instancji (nie mamy referencji) to może spokojnie zwolnić to 100B RAMu.
Berserker napisał/a: | Lub jesli zapisze dane jego w zmiennej typu object to ta zmienna zwroci wartosc null? |
W zmiennej typu object nie można zapisywać byle jakich danych. Jeśli robot jest niszczony - reprezentująca go zmienna typu object staje się null (albo category zmienia się na Wreck, ale nie jestem pewien). Jeśli natomiast utworzysz sobie instancję klasy object wewnątrz programu (ale po co?) to tylko ty masz nad nią władzę - Colobot i tak nie będzie zwracał na nią uwagi przy przetwarzaniu obiektów.
Aby zrozumieć pewne zagadnienia programowania obiektowego pomaga znajomość języka wysokiego poziomu, np. C#. |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 30-12-2009, 21:02
|
|
|
Cytat: | Jeśli robot jest niszczony - reprezentująca go zmienna typu object staje się null (albo category zmienia się na Wreck, ale nie jestem pewien). |
Category zmienia sie na Wreck/Ruins, shieldLevel jest rowny 0. W przypadku TargetBotow i owadow category sie nie zmienia (a szkoda). |
_________________
|
|
|
|
|
|
|
| |
|
|
|
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|