С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Модератор
Эксперт JS
5237 / 2110 / 416
Регистрация: 06.01.2013
Сообщений: 4,842
1

Объектно-ориентированное программирование на bat

05.02.2013, 16:52. Показов 3123. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
http://dirk.rave.org/chap9.txt
Не моё, нашёл в интернете.
Автору респект , но пока не нашёл этому применения. Может подскажете?

Кликните здесь для просмотра всего текста

9. Object Oriented Programming
------------------------------

... is possible. In this simple batch extension, classes and objects
are stored in an elaborate directory structure. The internal state of
each object is kept on disk, so there is no need to use seperate
databases for permanent data storage. Develop your classes from the
command line, and use 'call create', 'call kill' and 'call send' from
ordinary batch files to use objects.

First I'll demonstrate the functions; the implementation follows:

C:\>md aproject
C:\>cd aproject
C:\APROJECT>init [make necessary subdirectories]
C:\APROJECT>class man [define class man]
C:\APROJECT>static man name [declare static variable for man]
C:\APROJECT>method man set-name [edit method for man]
{in the editor type SET NAME=%1 %2 %3 %4 %5}
C:\APROJECT>method man get-name
{in the editor type SET RESULT=%NAME%}
C:\APROJECT>method man prt-name
{in the editor type ECHO.%NAME%}
C:\APROJECT>create man John [create a test instance of man...]
C:\APROJECT>send John set-name John Van Halen [... and use it]
C:\APROJECT>create man Fred
C:\APROJECT>send Fred set-name Fred Ford
C:\APROJECT>send John prt-name
John Van Halen [it works !]
C:\APROJECT>send Fred prt-name
Fred Ford
C:\APROJECT>class employee man [define a subclass of man]
C:\APROJECT>static employee salary [extra static variable]
C:\APROJECT>method employee set-sal [extra methods; it is also
possible to override
methods of the superclass]
...
C:\APROJECT>create employee Bill
C:\APROJECT>send Bill set-name Bill Buddy [use an inherited method]
...

METHOD.BAT assumes that there is an editor named EDIT, which takes a file
name as its command line argument, in a directory of the system path.
Class, object, method and (static) variable names are restricted to eight
characters. Use tree /f to get a good idea of how the objects and classes
are represented on disk.

WARNING: This implementation does no error checking, which makes the
structure of the programs very clear; but when using them, an infinite
loop is only a typo away.


A. User functions:

INIT.BAT

Bash
1
2
3
@echo off
mkdir classes
mkdir objects
CLASS.BAT

Bash
1
2
3
4
5
6
7
8
9
@echo off
mkdir classes\%1
mkdir classes\%1\methods
mkdir classes\%1\statics
if [%2]==[] goto end
rem > classes\%1\%2
xcopy classes\%2\statics\*.* classes\%1\statics > nul
:: ordinary copy doesn't copy empty files !
:end
STATIC.BAT

Bash
1
2
@echo off
rem > classes\%1\statics\%2
METHOD.BAT

Bash
1
2
@echo off
edit classes\%1\methods\%2.bat
CREATE.BAT

Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
set _class=%1
set _object=%2
cd classes\%_class%\statics
for %%a in (*) do set %%a=(nil)
cd ..\..\..
call save
cd classes\%_class%\statics
for %%a in (*) do set %%a=
cd ..\..\.. 
set _object=
set _class=
KILL.BAT

Bash
1
2
@echo off
del objects\%1.bat
SEND.BAT

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@echo off
if [%_object%]==[] goto no-saving
call push %_object%
call save
:no-saving
set _object=%1
set _parms=%2
:loop
shift
if not [%2]==[] set _parms=%_parms% %2
if not [%3]==[] goto loop
call restore
call methods %_parms%
call save
set _object=
set _parms=
cd classes\%_class%\statics
for %%a in (*) do set %%a=
cd ..\..\..
set _class=
call pop
if [%_object%]==[] goto no-restoring
call restore
:no-restoring
B. Internal procedures:

SAVE.BAT

Bash
1
2
3
4
5
echo set _class=%_class%>objects\%_object%.bat
cd classes\%_class%\statics
for %%a in (*.*) do echo call save-sub %%a %%%%a%% >> ..\..\..\temp.bat
cd ..\..\..
for %%a in (call del) do %%a temp.bat
SAVE-SUB.BAT

Bash
1
2
3
4
5
6
7
8
9
set _varname=%1
set _to-save=%2
:loop
shift
if not [%2]==[] set _to-save=%_to-save% %2
if not [%2]==[] goto loop
echo set %_varname%=%_to-save%>>objects\%_object%.bat
set _to-save=
set _varname=
METHODS.BAT

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
set _searchclass=%_class%
set _method=%1
set _mparms=%2
:parmloop
shift
if not [%2]==[] set _mparms=%_mparms% %2
if not [%2]==[] goto parmloop
:loop
if not exist classes\%_searchclass%\methods\%_method%.bat goto next
call classes\%_searchclass%\methods\%_method% %_mparms%
goto end
:next
cd classes\%_searchclass%
for %%a in (*) do set _searchclass=%%a
cd ..\..
goto loop
:end 
set _searchclass=
set _method=
set _mparms=
RESTORE.BAT

Bash
1
objects\%_object%.bat
PUSH.BAT

Bash
1
2
3
4
5
6
7
8
9
10
11
@echo off
set to-push=%1
:loop
shift
if not [%1]==[] set to-push=%to-push% %1
if not [%1]==[] goto loop
echo set _object=%to-push%>_tmp
if exist _stack type _stack>>_tmp
if exist _stack del _stack
ren _tmp _stack
set to-push=
POP.BAT

Bash
1
2
3
4
5
6
7
8
9
@echo off
set _object=
if not exist _stack goto end
copy _stack _tmp.bat > nul
echo 1,1d;e | edlin _stack > nul
echo 2,65500d;e | edlin _tmp.bat > nul
call _tmp
for %%a in (_tmp.bat _tmp.bak _stack.bak) do del %%a
:end
I call this OOBL -- Object Oriented Batch Language


Добавлено через 1 минуту
xD, форум проставил смайлы, где не надо, вместо меток ))
3
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2013, 16:52
Ответы с готовыми решениями:

Объектно-ориентированное программирование
Помогите,плиз 1-ое задание Постановка задачи: 1. В соответствии с заданным вариантом...

Объектно-ориентированное программирование
Помогите мне отредактировать программу...У меня есть исходники..Склеить нужно.... Класс ...

Объектно-ориентированное программирование
Мне тут парень написал совет --->Сделать некую переменную (или объект класса) с массивом, куда бы...

Объектно-ориентированное программирование
Создать класс Time для работы со временем в формате "час. минута.секунда" . Класс должен включать в...

0
05.02.2013, 16:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2013, 16:52
Помогаю со студенческими работами здесь

Объектно-ориентированное программирование
помогите пожалуйста выполнить задание! нужно написать данную программу на java.!!! Составить...

Объектно-ориентированное программирование
Кто силён и мне поможет? Объектно-ориентированное программирование 1. Объявить класс по...

Объектно-ориентированное программирование
Помогите решить задачу, пожалуйста. Используя объектно-ориентированное программирование, определить...

Объектно ориентированное программирование
на форме расспологается редактор edit, занимающий цент окна,компонент listbox с четырьмя опциями...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru