A-tit indd


• Объединение без маркировки



Download 3,35 Mb.
Pdf ko'rish
bet167/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   163   164   165   166   167   168   169   170   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

Объединение без маркировки
Здесь тоже используется объединение, как в предыду-
щем примере, но 
нет
маркера типа. У вас есть только 
кучка битов, которые могут представлять больше, чем 
один тип, и ваша задача — позаботиться об их верной 
интерпретации.
Таким образом языки со статической типизацией 
представляют что-то в памяти. А поскольку система 
типов обеспечивает верное их использование на эта-
пе компиляции, нет необходимости выполнять подоб-
ные проверки во время выполнения.
• Это компактно
. Нельзя придумать ничего более 
экономичного, чем хранение только бит, представ-
ляющих значение.
Так значения хранятся 
в нетипизированных 
языках типа ассемблера 
или Forth. Эти языки 
возлагают ответствен-
ность за правильное ис-
пользование типов 
на 
пользователя
. Подход 
не для слабонервных!


Паттерны программирования игр
— Паттерны поведения
227
• Это быстро
. Отсутствие маркеров типов означает, 
что не нужно тратить время на их проверку во время 
выполнения. Вот почему (в том числе) языки со ста-
тической типизацией быстрее, чем с динамической.
• Это небезопасно.
Плохой фрагмент байт-кода, ко-
торый интерпретирует значение как указатель или 
наоборот, может повлиять на безопасность вашей 
игры или вообще ее обрушить.
• Интерфейс
Объектно-ориентированное решение для значения, 
которое может быть несколькими типами, — это по-
лиморфизм. Интерфейс предоставляет виртуальные 
методы для различных тестов типа и преобразований:
class Value
{
public:
virtual ~Value() {}
virtual ValueType type() = 0;
virtual int asInt() {
// @ 3 int
assert(false);
return 0;
}
// 3…
};
Затем вам нужны конкретные классы для каждого 
типа, например:
class IntValue : public Value
{
public:
IntValue(int value)
: value_(value)
{}
virtual ValueType type() {return TYPE_INT;}
virtual int asInt() {return value_;}
Вы можете подумать, что 
если вы скомпилиро-
вали ваш байт-код 
из языка со статической 
типизацией, то вы 
в безопас ности, ведь 
компилятор не позволит 
сгенерировать небез-
опасный байт-код. Мо-
жет, конечно, и так, 
но всегда стоит помнить 
о пользователях 
со злыми намерениями, 
которые вручную могут 
создать вредоносный 
байт-код, без использо-
вания компилятора.
Именно поэтому 
вир-
туальная машина Java
требует 
верификации 
байт-кода
перед загруз-
кой его в программу.



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   163   164   165   166   167   168   169   170   ...   313




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish