Тема: ООП?
Показать сообщение отдельно
Старый 21.07.2006, 15:14   #1
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Лампочка ООП?

Вот спорим мы ужо мнооого времени... каждый наберет себе по кучке доказательств подтверждающих его теорию и пытается доказать свою правоту... но все забывают о копмпромисном решении... когда можно юзать и возможности ООП и возможности линейной программы...

так... к чему я это все веду... нашел прямое доказательство отсутствия ООП в Блитц, хотя это может быть просто глюком или я неправильно ченить юзаю...

код:
Type ft
 Field tf%
End Type

Type st
 Field tf%
 Field tf1.ft
End Type



SecondType.st=New st

For i=1 To 5 
 SecondType\tf1.ft=New ft
 SecondType\tf1\tf%=5
Next

SecondType.st=New st

For i=1 To 5 
 SecondType\tf1.ft=New ft
 SecondType\tf1\tf%=10
Next



For SecondType.st=Each st
 For SecondType\tf1.ft=Each ft
  Print SecondType\tf1\tf%
 Next
 Print 
 Print
Next

WaitKey()
идея:

создаем динамический массив динамических массивов... нормальный язык программирования переварит это дело без проблем, но в блице получается глюк



SecondType.st=New st

For i=1 To 5 
 SecondType\tf1.ft=New ft
 SecondType\tf1\tf%=5
Next
создаем элемент в массиве SecondType и в нем создаем еще динамический массив tf1 и создаем во втором 5 элементов и пишем туда значения 5



SecondType.st=New st

For i=1 To 5 
 SecondType\tf1.ft=New ft
 SecondType\tf1\tf%=10
Next
повторяем процедуру... только теперь пишем значение 10 (для отличия)



теперь теоретически должно быть один массив SecondType с двумя элементами, и два массива tf1 в каждом по 5 элементов, и из каждого элемента массива SecondType можно получить доступ к "вложенному" массиву tf1 и прочитать его значение...



пробуем читать:
For SecondType.st=Each st
 For SecondType\tf1.ft=Each ft
  Print SecondType\tf1\tf%
 Next
 Print 
 Print
Next
обычно такие весчи читаются вложенными циклами... теоретически на экране должно быть два столбца по 5 строчек в каждом и сперва 5 пятерок а потом 5 десяток

но не тут то все было, на самом деле блиц не создает вложенных типов, а вместо этого создает два параллельных типа... таким образом у нас два массива: SecondType с двумя элементами и tf1 с 10 элементами... причем из каждого элемента SecondType можно получить доступ ко всему массиву tf1 (можно было бы сделать разграничение... записали бы какоенить id туда и проверяли бы потом откуда это всё, но не сделали)

ну и что это за ООП, спрошу я всех, которые отстаивали ООП теорию в блице?
__________________
Как минимум я помог многим (с)
(Offline)