Cele lekcji
Po zakończeniu tej lekcji…
- Dowiesz się, jak utworzyć właściwość w klasie używającej jednej z innych klas w charakterze typu danych.
Dodawanie właściwości za pomocą niestandardowych typów danych
Aktualnie wszystkie właściwości w naszych klasach to ciągi lub liczby całkowite, jednak niekiedy we właściwości trzeba przechować bardziej złożone dane.
Przykładowo w klasie Location chcemy przechować przedmiot wymagany do przejścia do lokacji (np. klucz). Jeśli w tej lokacji dostępne jest zadanie, musimy przechować tę wartość. W tej samej lokacji może również znajdować się potwór,
więc, aby przechować wszystkie te wartości, musimy do klasy Location dodać nowe właściwości.
Etap 1: Uruchom aplikację Visual Studio i otwórz swoje rozwiązanie.
Etap 2: W projekcie Engine zmodyfikuj klasę Location i dodaj nowe właściwości:
public Item ItemRequiredToEnter { get; set; } public Quest QuestAvailableHere { get; set; } public Monster MonsterLivingHere { get; set; } public Location LocationToNorth { get; set; } public Location LocationToEast { get; set; } public Location LocationToSouth { get; set; } public Location LocationToWest { get; set; }
Teraz już dysponujemy właściwościami pozwalającymi przechowywać te wartości dla każdej lokacji. Ponieważ we właściwości ItemRequiredToEnter musimy przechować obiekt Item, jego typem danych jest Item. Działa to analogicznie jak w przypadku korzystania z typu danych ciąg służącego do przechowywania tekstu we właściwości.
Etap 3: Dodaj do konstruktora parametry pozwalające na przyjmowanie niektórych z tych wartości i zapisz je we właściwościach. Zmodyfikuj kod konstruktora, aby wyglądał tak:
public Location(int id, string name, string description, Item itemRequiredToEnter = null, Quest questAvailableHere = null, Monster monsterLivingHere = null) { ID = id; Name = name; Description = description; ItemRequiredToEnter = itemRequiredToEnter; QuestAvailableHere = questAvailableHere; MonsterLivingHere = monsterLivingHere; }
Po każdym nowym parametrze występuje kod = null. Oznacza to, że przejście do niektórych lokacji nie wymaga żadnych przedmiotów i nie ma w nich zadań ani potworów. Pozwala nam to na wywołanie konstruktora Location bez przekazywania tych trzech wartości. Konstruktor będzie po prostu używał wartości domyślnych, czyli w tym przypadku null. Więc obydwa poniższe wiersze zadziałają tak samo:
Location test1 = new Location(1, "Your House", "This is your house"); Location test2 = new Location(1, "Your House", "This is your house", null, null, null);
Etap 4: W projekcie Engine zmodyfikuj klasę Quest i dodaj nową właściwość:
public Item RewardItem { get; set; }
Właściwość RewardItem będzie przechowywać przedmioty uzyskiwane przez gracza po ukończeniu zadania.
UWAGA: W filmie parametry w konstruktorze klasy Location znajdują się w dwóch wierszach. Jest to poprawne, ponieważ ostatnim znakiem w pierwszym wierszu jest przecinek, więc program wie, że kolejny wiersz jest kontynuacją poprzedniego. Użyłem takiego formatu, ponieważ wiersz jest długi i niewygodnie się go czytało.
W języku C# koniec wiersza oznacza się średnikiem „;”, zamkniętym nawiasem „)” lub zamkniętą klamrą „}”.
Podsumowanie
Umiesz już tworzyć właściwości zawierające złożone wartości. Pozwoli Ci to na przykład na podanie nazwy potwora w lokacji bez potrzeby wykonywania dodatkowego wyszukiwania poza danym obiektem.
Łącza do tej lekcji