Witam!
Tez witam :)
Ostatnio zacząłem bawić się VB i jestem ciekawy jak to jest z klasami
w tym języku.
Dokładniej chodzi mi o możliwość zrobienia klasy która w C++ wyglądała
by mniejwięcej tak:
class MojaKlasa
{
private:
........
public:
MojaKlasa(int par0,int par1,int par2);
double JakiesTamFunkcje(parametry);
};
Chciałbym się dowiedzieć co jest odpowiednikiem konstruktora klasy w
VB.
Uwaga1: Nie ma w klasach (mowa wszedzie o VB5) czegos takiego jak
konstruktor. Jest natomiast - uwaga - zdarzenie inicjalizacji klasy
(Class_Initialize) i destrukcji klasy (Class_Terminate). A jak to ze
zdarzeniami, mozesz je obsluzyc lub nie, ale nie mozesz modyfikowac jego
parametru czy wynikow (zreszta jedno lub drugie tu nie wystepuje)
Wiem że istnieje coś takiego jak Class_Initialize() i to co jest
zawarte w nim jest wykonywane przy stworzeniu instancji mojej klasy.
W/w to wlasnie zdarzenie inicjalizacji klasy. Zdarzeniem, wystepujacym przy
destrukcji klasy jest Class_Terminate. Co wiecej, zdarzenie inicjalizacyjne
jest wywolane nie w chwili powolania do zycia zmiennej obiektowej, tylko w
chwili pierwszego do niej odwolania. Znaczy to tyle, ze - deklarujac zmienna
np. typu MojaKlasa, nie zostanie instancja zaladowana do pamieci do chwili
wystapienia jekiegokolwiek odwolania do tej zmiennej. Przykladowo
Zakladamy, ze MojaKlasa posiada jakas wlasciwosc, np. Visible
Przyklad:
Private Function Test(x as long)
dim MK as MojaKlasa
if x=1 then
MK.Visible = TRUE
endif
End sub
W powyzszym przykladzie dla X <1 dla zmiennej MK typu MojaKlasa nie
nastapia zdarzenia Initialize i Terminate. Mozna to sprawdzic umieszczajac w
tych zdarzeniach podpowiednie komunikaty przez MsgBox.
Jak stworzyć instancje tej klasy gdzieś w programie.
Dwa proste sposoby
Sposob1
Dim MK as MojaKlasa 'Deklaracja zmiennej obiektowej
set MK = new MojaKlasa 'Zaladowanie instancji
Sposob2
Dim MK as New MojaKlasa 'deklaracja zmiennej z zaladowaniem instancji.
Jesli jestes zalamany tymi mozliwosciami (najsilniejsze to one nie sa). to
nie badz taki szybki w ocenie. Pisalem obiekty w Delphi, Assemblerze (TASM
5.0.- jest mozliwosc deklaracji biektow) i, oczywiscie, w VB i Microsoft
Office 8.0. Wszedzie obiekty sa dostosowane do filozofii jezyka. Jesli
chcesz wiedziec, co tu jest mocna strona tych obiektow - zajrzyj do
dokumentacji tworzenia serwerow activex w VB (tu wlasnie wylazi ich mocna
strona) i sposobach zarzadzania kolekcjami obiektow. A co tu jest najgorsza
wada? Nie mozna zrobic dziedziczenia. I to dyskwalifikuje pisanie w VB
projektow wykonanych obiektowo. Ale w koncu VB jest do baz danych :)
A moze sie cos zmienilo w VB60 ???
Pozdrawiam
Siudek