Klasa jako meta obiekt


Klasa jako meta-obiekt.

Dotychczas sugerowałem patrzenie na klasę jako na wzorzec dla obiektów. Ale takie spojrzenie może być mylące w pewnych sytuacjach. Stąd nowy, lepszy model, naturalny dla niektórych innych języków programowania, gdzie klasa to też obiekt ale wyższego rzędu.

Obiekt to pewien byt programowy, który posiada stan (pola obiektu) i ma wbudowane zachowanie/funkcjonalność (zestaw metod obiektu). Czasami może to być tylko stan albo tylko funkcjonalność. Obiekt danej klasy jest tworzony procedurą New (wywołanie procedury New klasy (czyli konstruktora) poprzez użycie operatora New na rzecz klasy:
zmienna_obiektowa = New KLASA).

Klasa to byt programowy, który głównie służy to tworzenia obiektów na swój wzór i podobieństwo. Stąd określenie wzorzec. Ale jednocześnie klasa to pewien egzemplarz, obiekt nadrzędny, który istnieje niezależnie i którego nie trzeba tworzyć, bo powstaje w wyniku definicji „Class KLASA … End Class”. Jako obiekt posiadać może, jak każdy obiekt, stan i zachowanie. Które pola i metody są częścią obiektu KLASA? Te, które mają przedrostek „Shared”. Są one dostępne także w obiektach dzieciach, czyli tzw. instancjach klasy, ale to tylko dostęp, czyli prawo zapisu (pola), odczytu (pola) i prawo wykonania (metody) ale definicja tychże jest w meta-obiekcie KLASA! CO BĘDZIE, JEŚLI ŻADNA SKŁADOWA KLASY NIE MA przyrostka „Shared”? Wtedy klasa służy tylko jako wzorzec dla obiektów. Jeżeli jest to klasa W PEŁNI abstrakcyjna (MUSTINHERIT i brak pól i definicji metod/funkcji/procedur a tylko deklaracje metod - czyli zapowiedzi, nagłówki, sygnatury) , czyli musi po niej dziedziczyć inna klasa, to można uznać, że jest to w tym i poprzednim przypadku meta-obiekt pusty - nic nie zawiera, nic nie robi.

Przykłady klas i obiektów

  1. Klasa definiująca tylko pola nie-„Shared” - to fabryka struktur danych (obiektów złożonych tylko z pól). Konstruktor może być niejawny, zależnie od żądań jakie stawia programista - ale pola muszą być Public, skoro nie ma metod, które je hermetyzują.

  2. Klasa bez pól definiująca wszystkie składowe jako Public Shared; jest to pojemnik na funkcje/procedury - czyli biblioteka funkcji/procedur. Przykład: wbudowana klasa Math: elementy to m. in. Math.Sqrt, Math.Sin, Math.PI itd. (ale nie Randomize() i nie Rnd())

  3. Typowa klasa - część składowych „Shared”, część „nie-Shared”.: obiekty zawierają pola/metody „nie-Shared”, a odwołują się do meta-obiektu w zakresie zdefiniowanych w nim pól/metod „Shared”



Wyszukiwarka

Podobne podstrony:
STRING - Procedury i funkcje, Szkoła, Klasa 1, Programowanie struktularne i obiektowe
Klasa jako grupa społeczna
Klasa jako grupa spoleczna
KLASA JAKO GRUPA SPOŁECZNA
Obiekty techniczne jako obiekty eksploatacji ulegają starzeniu
klasa szkolna jako środowisko wychowawcze, metodyka, psych- ped
KLASA SZKOLNA JAKO GRUPA SPOŁECZNO, PEDAGOGIKA
ORGANIZACJA JAKO OBIEKT BADAŃ BJG3 do wysłania
02 statek powietrzny jako obiekt eksploatacji
KLASA SZKOLNA JAKO GRUPA SPOŁECZNA, Filologia polska
2006 03 Izokinetyka jako obiektywne narzędzie pomiaru i treningu
Notatka z lektury - Klasa szkolna jako zespół wychowawcz, wypracowania
klasa szkolna jako grupa społeczna M47YGND2YZKJJF6GB7HLNEHZXJAV7IYMOO4AY3Q
klasa szkolna jako grupa spolec Nieznany
AZJA - OBIEKTY GEOGRAFICZNE, GIMNAZJUM LICZE, KLASA II
KLASA SZKOLNA JAKO MAŁA GRUPA SPOŁECZNA, Dokumenty wykłądy przedsz
Wyklad II s.zimowy organizacja jako obiekt badan

więcej podobnych podstron