Talk About Network



Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Logo > OOP in FMSLogo
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 1 Topic 1497 of 1588
Post > Topic >>

OOP in FMSLogo

by jftsang <jftsang@[EMAIL PROTECTED] > Oct 19, 2007 at 03:58 AM

If you've wanted to make FMSLogo an OOP language... here's the code
you need

Just put it into FMSLogo and call

(NEWCLASS classname property1 default1 property2 default2)

e.g.

(NEWCLASS "car "fuel 100 "mph 23 "colour "red)

and then call

CLASSNAME.NEW objectname

e.g.

car.new "lorry

and then access the variables with

show :lorry.fuel

==================================================================================

to newclass :classname [:p1 0] [:dv1 0] [:p2 0] [:dv2 0] [:p3 0] [:dv3
0] [:p4 0] [:dv4 0] [:p5 0] [:dv5 0] [:p6 0] [:dv6 0] [:p7 0] [:dv7 0]
[:p8 0] [:dv8 0] [:p9 0] [:dv9 0] [:p10 0] [:dv10 0] [:p11 0] [:dv11
0] [:p12 0] [:dv12 0]

; Make variables Global

make "gp1 :p1
make "gp2 :p2
make "gp3 :p3
make "gp4 :p4
make "gp5 :p5
make "gp6 :p6
make "gp7 :p7
make "gp8 :p8
make "gp9 :p9
make "gp10 :p10
make "gp11 :p11
make "gp12 :p12

make "gdv1 :dv1
make "gdv2 :dv2
make "gdv3 :dv3
make "gdv4 :dv4
make "gdv5 :dv5
make "gdv6 :dv6
make "gdv7 :dv7
make "gdv8 :dv8
make "gdv9 :dv9
make "gdv10 :dv10
make "gdv11 :dv11
make "gdv12 :dv12

;p1, p2, etc are the property names of the class
;dv1, dv2, etc are the default values of the object
;To create a new object of this class call CLASSNAME.NEW

localmake "procnewname (word :classname ".new)
if definedp :procnewname [
	print (sentence [Warning:] :procnewname [is already defined])
	print [Please delete that procedure before continuing.]
	halt
]

define :procnewname [
	[objname]
	[make "objname.p1 (word :objname ". :gp1)]
	[make "objname.p2 (word :objname ". :gp2)]
	[make "objname.p3 (word :objname ". :gp3)]
	[make "objname.p4 (word :objname ". :gp4)]
	[make "objname.p5 (word :objname ". :gp5)]
	[make "objname.p6 (word :objname ". :gp6)]
	[make "objname.p7 (word :objname ". :gp7)]
	[make "objname.p8 (word :objname ". :gp8)]
	[make "objname.p9 (word :objname ". :gp9)]
	[make "objname.p10 (word :objname ". :gp10)]
	[make "objname.p11 (word :objname ". :gp11)]
	[make "objname.p12 (word :objname ". :gp12)]

	[if notequalp :gp1 0 [make :objname.p1 :gdv1]]
	[if notequalp :gp2 0 [make :objname.p2 :gdv2]]
	[if notequalp :gp3 0 [make :objname.p3 :gdv3]]
	[if notequalp :gp4 0 [make :objname.p4 :gdv4]]
	[if notequalp :gp5 0 [make :objname.p5 :gdv5]]
	[if notequalp :gp6 0 [make :objname.p6 :gdv6]]
	[if notequalp :gp7 0 [make :objname.p7 :gdv7]]
	[if notequalp :gp8 0 [make :objname.p8 :gdv8]]
	[if notequalp :gp9 0 [make :objname.p9 :gdv9]]
	[if notequalp :gp10 0 [make :objname.p10 :gdv10]]
	[if notequalp :gp11 0 [make :objname.p11 :gdv11]]
	[if notequalp :gp12 0 [make :objname.p12 :gdv12]]

]

end




 1 Posts in Topic:
OOP in FMSLogo
jftsang <jftsang@[EMAI  2007-10-19 03:58:17 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Tue May 13 23:17:39 CDT 2008.