Вторник, 03 Декабря 2024, 19:55

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
ООП на ассемблере
SaiteiДата: Четверг, 01 Мая 2014, 14:55 | Сообщение # 1
старожил
Сейчас нет на сайте
Как это сделать? Допустим я хочу один раз описать "шаблон" и "поведение" объекта и потом создать N таких объектов.
В голове летает идея по поводу использования структур, но что-то не могу всё собрать в "единое целое". Помогите, пожалуйста!
Я юзаю FASM
XakepДата: Четверг, 01 Мая 2014, 15:46 | Сообщение # 2
めちゃくちゃちゃ
Сейчас нет на сайте
Обычно делают так: есть структура, в ней все нужные тебе переменные, методы - это обычные функции с указателем на структуру, виртуалньные методы просто указатель на функцию.
wcptДата: Пятница, 02 Мая 2014, 00:15 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
интересно, зачем. ООП - это что-то на уровне компилятора. Ассемблер(ну, имеется ввиду, программа-ассемблер, подчеркнуто не компилятор ЯВУ) же ни о каком ООП не подозревает. Следовательно, т.к. ассемблер не ведает об ООП, никакого реального ООП и не будет. Можно, конечно, збацать структуры, указатели, функции с указателем на структуру и т.п., но ведь костыльно же!

Сообщение отредактировал wcpt - Пятница, 02 Мая 2014, 00:17
SaiteiДата: Пятница, 02 Мая 2014, 00:36 | Сообщение # 4
старожил
Сейчас нет на сайте
wcpt, ООП я воспринимаю как некоторую идеологию и считаю что её реализовать вполне реально практически на любом языке программирования
-l33t-h4xx-Дата: Пятница, 02 Мая 2014, 09:41 | Сообщение # 5
участник
Сейчас нет на сайте
Saitei, ты прав, только на ассемблере это делать БОЛЕЗНЕННО. Ты будешь СТРАДАТЬ. Или плодить кучу МАКРОСОВ, что, в принципе, одно и то же.
Но схема простая: хочешь создать в стеке объект - создавай процедуру, которая выталкивает на него все поля объекта. Хочешь создать в куче - выделяй память с помощью WinAPI, копируй в неё поля и возвращай адрес. Хочешь наследование и полиморфизм - изголяйся.


Как правильно задавать вопросы
wcptДата: Пятница, 02 Мая 2014, 10:13 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Цитата Saitei ()
wcpt, ООП я воспринимаю как некоторую идеологию и считаю что её реализовать вполне реально практически на любом языке программирования

так никто не говорил, что это невозможно сделать на асме. Просто сам подумай. ООП - это АБСТРАКЦИЯ. ЯВУ не дает представления о работе процессора, он (ЯВУ) АБСТРАГИРОВАН, СПЕЦИАЛЬНО. Ассемблер же - другой подход, ООП там не предусмотрено, а на таком уровне абстракции - весьма болезнен, и не надо его реализовывать во всех случаях подряд.


Сообщение отредактировал wcpt - Пятница, 02 Мая 2014, 10:17
MrNeshДата: Пятница, 02 Мая 2014, 15:46 | Сообщение # 7
Воин добра и света
Сейчас нет на сайте
Цитата Saitei ()
считаю что её реализовать вполне реально практически на любом языке программирования



SaiteiДата: Пятница, 02 Мая 2014, 15:59 | Сообщение # 8
старожил
Сейчас нет на сайте
-l33t-h4xx-, wcpt, MrNesh, я не говорю о реализации классов как таковых с наследованием и т.п.
Задача: создать 1000 мячиков разных цветов, размеров в разных местах. И как же вы предлагаете мне это сделать? Если же мыслить по идеологии ООП, то (как я понимаю): я создам структуру "Ball", у которой будут поля "size", "color", "x", "y". Далее все "объекты" структуры я буду хранить в самописном списке\динамическом массиве. Поля каждого "объекта" будут заполняться рандомно.
Но всё равно мне придётся писать макрос создания нового объекта. Если же сделать так, чтобы мячики ещё двигались, то добавятся новые поля и процедура обработки "объектов".
Ведь согласитесь, что каждый мячик будет объектом. А как это всё реализовывать - другой вопрос


Сообщение отредактировал Saitei - Пятница, 02 Мая 2014, 16:00
XakepДата: Пятница, 02 Мая 2014, 17:15 | Сообщение # 9
めちゃくちゃちゃ
Сейчас нет на сайте
можно все по массивам распихать все данные, одну функцию инициализации создать, где все массивы правильно заполняются, ну и так далее )
а вообще вот посмотри, как раз для FASM и NASM: [url=http://ru.wikipedia.org/wiki/Monate-OOP_ASM_(язык_программирования)]Monote-OOP ASM[/url]
wcptДата: Суббота, 03 Мая 2014, 10:53 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Цитата Saitei ()
И как же вы предлагаете мне это сделать? Если же мыслить по идеологии ООП, то (как я понимаю): я создам структуру "Ball", у которой будут поля "size", "color", "x",

С чего ты взял, что структуры - часть "идеологии" ООП? Тогда и в си тоже есть ООП, и в самом асме тоже оно есть. Запомни, ООП - наследование, инкапсуляция, полиморфизм. Ничего этого не будет, если ты просто создашь структуру в асм. Надеюсь, ты понял, о чем я!
XakepДата: Суббота, 03 Мая 2014, 11:23 | Сообщение # 11
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата wcpt ()
Запомни, ООП - наследование, инкапсуляция, полиморфизм

а как же шаблоны, метапрограммирование, интроспекция/рефлексия?


Сообщение отредактировал Xakep - Суббота, 03 Мая 2014, 11:26
wcptДата: Суббота, 03 Мая 2014, 13:37 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
Цитата Xakep ()
а как же шаблоны, метапрограммирование, интроспекция/рефлексия?

Ну, я не писал, что этим всё ограничивается. А шаблоны - тот же полиморфизм, но в более узком смысле. С++ вроде как про ООП, но с рефлексией у него плохо(по умолчанию). А вот "три кита" работают.
AlexRabbitДата: Понедельник, 05 Мая 2014, 10:59 | Сообщение # 13
старожил
Сейчас нет на сайте
Не майтесь дурью, нужен ООП - берите С++/С#
Не издевайтесь над ассемблером.
p.s. И вообще - зачем Вам ООП?


Сообщение отредактировал AlexRabbit - Понедельник, 05 Мая 2014, 10:59
-l33t-h4xx-Дата: Понедельник, 05 Мая 2014, 11:09 | Сообщение # 14
участник
Сейчас нет на сайте
Цитата Saitei ()
я не говорю о реализации классов как таковых с наследованием

Тогда ты не говоришь об ООП.
Потрудись хотя бы объяснить, что именно вызывает у тебя затруднения, внутреннее неприятие и пр., пока что ты только бряцал умными словами и не шёл на сотрудничество.
Если проблема сводится к "создать 1000 мячиков", то я вообще не понимаю, для чего ты нас здесь собрал.


Как правильно задавать вопросы

Сообщение отредактировал -l33t-h4xx- - Понедельник, 05 Мая 2014, 11:13
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг