Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 Polski Portal COLOBOTa - COLOBOT Polish Portal
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
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).
_________________
 
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012