Kurs VBA – Klasy – Atrybuty i właściwości

Zastanawiałem się przez jakiś czas czy atrybuty i właściwości podzielić na dwa osobne posty. Występują one bardzo często razem i poza klasą używa się je tak samo, jednak należy pamiętać, że są to dwie osobne funkcjonalności klas.

Atrybuty określają aktualny stan obiektu. Dla przykładowej klasy Samochód może to być:

  • Prędkość
  • Pojemność
  • Czy drzwi są zamknięte?
  • Czy światła są zapalone?
  • Stan oleju

Spójrzmy na taką (bardziej praktyczną) instrukcję:

Mamy tutaj atrybut, zadeklarowany następująco w module klasy.

Przybiera wartość True, jeżeli plik jest otwarty lub False, jeżeli zamknięty. W metodzie otwierającej plik ustawiamy ten atrybut na True. Mogę więc napisać gdzieś:

Czy ma w takim razie sens poniższa instrukcja?

Pozornie ma sens, jest jednak niebezpieczna. Ostatecznie zamykanie pliku nie może się ograniczać do ustawienia wartości jakieś zmiennej, plik należy zapisać. Z pomocą przychodzą właściwości, dzięki którym możemy tworzyć coś pomiędzy atrybutami a metodami. Poza klasą używa się je jak atrybuty. W środku klasy jest to jednak szereg wykonywanych instrukcji. Utworzę więc właściwość:

Dzięki temu powyższe przypisanie wartości False uruchamia instrukcje, które wywołują metodę CloseFile.

Wkrótce wyjaśnię to wszystko dokładniej. Przejdźmy więc do opisu używania atrybutów i właściwości

Atrybuty

Deklaruje się je jak każdą inną zmienną modułową. Mogą być prywatne i publiczne. Zadeklaruję dwie zmienne.

Atrybuty publiczne mogę używać poza klasą. Poniżej widać, że intelisense podpowiada mi atrybut publiczny. Prywatne oczywiście mogą być używane tylko w metodach tej klasy.

Właściwości

Tutaj wreszcie pojawia się jakaś nowość w stosunku do zwykłych modułów. Właściwości deklaruje się przy pomocy specjalnych słów kluczowych.

  1. Get – zwraca wartość lub obiekt
  2. Let – ustawia wartość
  3. Set – ustawia obiekt
Kilka przykładów:

Get

Definicja:

Użycie:

Let

Definicja:

Użycie:

Set

Definicja:

Użycie:

 

Każda z tych właściwości może występować samodzielnie, jednak z reguły występują parami Get i Let lub Get i Set.

Jak widać właściwość wcale nie musi nic zapisywać, czy odczytywać. Całkowicie prawidłowa (technicznie) jest taka właściwość.

Można użyć ją tak:

Dzięki temu, zawsze Count będzie zwracać ilość krajów, nawet, jeżeli kolekcję zmienimy na tablicę:

Używanie razem

Atrybuty i właściwości często używa się razem. Ustawiamy atrybuty jako prywatne, a właściwości służą wtedy do kontroli dostępu.  Poniżej upewniam się, czy zapisywane nazwisko nie jest dłuższe niż 30 znaków.

 

Metody Spis treści Konstruktur i destruktor

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *