|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 18, 2003 23:05:34 AsmGuru62 То есть речь идёт о виртуальных функциях, как я понял. Почти. Главный вопрос в OOP -- что делает алгоритм, а не как он это делает. Поэтому мы и страдаем абстракцией, инкапсуляцией и прочей заразой. Только причём здесь private, public и protected? Ну, так я об этом и спрашивал. |
|
|
Дата: Сен 19, 2003 01:07:13 Quantum причём здесь private, public и protected? Конечно можно легко обойтись и без них. Но ведь с ними получается более стройный код, IMHO. Если я не хочу чтоб класс-потомок обращался к какой-то функции, ставлю её в приват. И компилятор меня уведомит: "вы брат-де запретный плод хотите!" :) и так далее. |
|
|
Дата: Сен 19, 2003 01:58:06 Если я не хочу чтоб класс-потомок обращался к какой-то функции, ставлю её в приват. И компилятор меня уведомит: "вы брат-де запретный плод хотите!" :) и так далее. Что-то я не совсем понял, в чем проблема? Разве в асме кто-то уже отменил такую штуку как: MyProc PROC PRIVATE, Param1:DWORD, Param2:DWORD .... .... .... ret MyProc ENDP Такую процедуру можно вызывать в пределах данного асм-файла, но не из другого obj-модуля. Если же опустить слово PRIVATE, то оно будет PUBLIC, и его без проблем можно будет вызывать из других obj... |
|
|
Дата: Сен 19, 2003 12:55:03 teleport А для класса ты даже в этом файле её вызват ьне сможешь, вот :Р |
|
|
Дата: Сен 19, 2003 14:04:55 Quantum Ну, так я об этом и спрашивал. Это вопрос не об ООП -- а об способах реализации технологий. (Гм.. а такой книги даже нет!!! Обана :))) Только сейчас понял.) ОК. Давайте вернёмся к истокам :)) Итак, у нас есть задача. Есть файловая система FAT (12 чтоли) Мы свами должны придумать API для общения с файловой системой. Я вот предлагаю такие: open() close() write() read() Ну ясно, что мало.. Но нам хватит. Теперь давайте подумаем как это должно работать? Чтобы что-то делать с файлом, мы должны знать ГДЕ ОН НА ДИСКЕ Для этого, нам нужден УКАЗАТЕЛЬ НА ПЕРВУЮ ЗАПИСЬ В FAT Ага. А что нам ещё нужно? 2. Размер файла 3. Текущая позиция указателя для записи, чтения 4. Какие то флаги состояния.... 5. Адрес буфера, куда этот файл считыватеся/читается Ну для начала хватит. -------------------------------------------- Ну вот господа програмеры/архитекторы, у нас есть только DOS и ASM как API строить будем? Давайте идеи, только чтобы просто и без заумностей :))) И вообще, если есть исходники DOS по этой части - можно в студию :) |
|
|
Дата: Сен 19, 2003 21:32:42 А как такую задумку выполнить наиболее эффектно?? Есть класс (НУ К ПРИМЕРУ!!) class My_CLASS{ public: void my_function(int param1, int param2); private: int i; int j; }; void My_CLASS::my_function(int param1, int param2) { i=param1+param2; }; ТАК ВОТ МОЖНО ЛИ КАК ТО?? сделать на ассемблере такую функцию-ЧЛЕН!!!!?? Сдесь изюминка не сама функция а передача параметров!! Если кто делал уже такое или задумки есть... БУДЕТ ОЧЕНЬ ИНТЕРЕСНО!!! ХЕЛП!!! |
|
|
Дата: Сен 19, 2003 22:04:48 Это вопрос не об ООП -- а об способах реализации технологий. (Гм.. а такой книги даже нет!!! Обана :))) Только сейчас понял.) Пратт Т. Языки программирования: Разработка и реализация. |
|
|
Дата: Сен 19, 2003 22:08:42 Fixer Неужели так сложно? |
|
|
Дата: Сен 19, 2003 22:14:45 emergenter А в чём сложность имплементации такого класса и такой функции? Это даже не виртуальная, а обычная функция. |
|
|
Дата: Сен 19, 2003 22:21:28 AsmGuru62 ТАк в том то и дело КАК ТЕХНИЧЕСКИ РЕАЛИЗОВАТЬ??? |
|
|
Дата: Сен 20, 2003 11:25:27 Fixer Пратт Т. Языки программирования: Разработка и реализация. ЭЭЭ неее. Я про несколько другое говорю. :)) Это намного выше уровня ЯВУ. ЯВУ -- это конкретика. А вот общей теории я не видел. И зря. |
|
|
Дата: Сен 20, 2003 11:32:56 ОК, я продолжу.. (Пусть это будет Бета релиз статьи :)))) Итак, есть у нас open и так далее. Первое что приходит на ум. Это сделать структуру my_file, в которой хоранить необходимые данные. Давайте её сделаем my_file struct flags db ? ;; Флажки состояния status db ? ;; статус res dw 0 ;; -- name dd ? ;; Указатель на строку с именем файла ppath dd ? ;; Указатель на строку с путём к файлу fpointer dd ? ;; Указатель чтения / записи pbuff dd ? ;; Указатель на буфер pbuffs dd ? ;; Размер буфера fsize dd ? ;; Размер файла my_file ends |
|
|
Дата: Сен 20, 2003 11:40:34 Теперь дальше получается Пусть функция open открывает файл.. Что это значит push offset szFileName call open Я передаю указатель на строку с именем файла, open что там ищет в FAT, потом создаёт структуру my_file, и возвращает указатель на эту структуру. А что? В структуре хранятся все данные для работы с файлом.. Иначе как DOS будет знать, над каким фалом вы работаете? Это значит, что все остальным функциям, обязательно нужен ИДЕНТИФИКАТОР ФАЙЛА, который в нашем случае -- просто указатель на my_file. Теперь давайте посмотрим, как организованы все остальные функции write( file, // Указатель на my_file buff, // Указатель на buff size // размер ) read( file, // Указатель на my_file buff, // Указатель на buff size // размер ) Все остальные функции ОБЯЗАТЕЛЬНО СОЖЕРЖАТ указатель на структуру my_file |
|
|
Дата: Сен 20, 2003 11:42:19 Это есть ИДЕЯ ООП в КОДЕ. Первая ИДЕЯ ООП -- СВЯЗАТЬ ДАННЫЕ И КОД, который работает с ЭТИМИ данными. |
|
|
Дата: Сен 20, 2003 11:46:24 Теперь вы можете выбросить 30% книг с вашего шкафа по этой теме. :))) Далее. Дядя X придумал NTFS.. теперь я долже учитывать права доступа к файлу. но код open/close/ мне меня не хочется.. Как мне поступить, чтобы добавить функциональность и с МИНИМАЛЬНЫМИ изменениями воплотить их в коде. В этот раз идея ВКЛЮЧИТЬ СИСТЕМУ КОНТРОЛЯ ПРАВ ДОСТУПА. Система контроля прав у нас бцудет простая 8 Битовое поле как в UNIX Каждый файл его будет иметь.. Теперь как же это сделать? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.087 |