OOP in Rev...
Mark Smith
mark at maseurope.net
Thu Mar 20 09:24:30 EDT 2008
Viktoras, you can effectively hide the array manipulations in a
library stack. I've done this quite a lot, though haven't really
thought of it as OOP-like, though it produces at least some kind of
'encapsulation'. One could think of the library stack as being the
place where you define 'classes'.
Just off the top of my head, the script of the library 'class' stack
might look like this :
local sCities
local sCityProperties =
"country,continent,population,area,isNationalCapital,hasAirport"
on setCity pCity, pProp, pVal
if pProp is among the items of sCityProperties then put pVal into
sCities[pCity, pProp]
end setCity
function getCity pCity, pProp
if pProp is empty then put "all" into pProp
switch pProp
case "all"
return allCityData(pCity)
break
case "populationDensity"
return popDensity(pCity)
break
default
return sCities[pCity, pProp]
break
end switch
end getCity
function allCityData pCity
put the keys of sCities into tKeys
filter tKeys with pCity & "*"
repeat for each line L in tKeys
put item 2 of L & "=" & sCities[L] & cr after tCityData
end repeat
put popDensity(pCity) after tCityData
return tCityData
end allCityData
function popDensity pCity
return sCities[pCity, population] / sCities[pCity, "area"]
end popDensity
and so-on....
so then in the main app, you'd do things like :
setCity "London", "country", "UK"
setCity "London", "population", 8000000
if getCity("London", "populationDensity") > 34 then....
put getCity("London")
which is sort of equivalent to :
London.population = 8000000
if London.populationDensity > 34 then....
Forgive me if this is all stuff you've already done, but it's
certainly helped me think about it a bit!
Best,
Mark
On 19 Mar 2008, at 14:19, viktoras didziulis wrote:
> Hi,
>
> me too like rOOP, but I feel it is a little incomplete, just one
> more step. The ones that you call real objects are limited to user
> interface controls only. The thing I was curious about is a
> possibility to create an independent data object which is nor
> control neither a gui element. Which in this case may simply mean
> enhanced arrays...
>
> What for ?. I think this would make code cleaner and reduce
> amount of commenting in larger projects.. Also facilitate creation
> or adoptions of existing libraries in C or C++ for very specific
> purposes - like reading shapefiles, netcdfs, doing geographical
> transformations, astronomy, bioinformatics, etc... This
> consequently will increase the scope of applications that can be
> created in Rev and hopefully availability of diverse libraries.
>
> In general it would make creation of complex software easier. We
> can already simulate objects using arrays, but at least the code
> would be more readable (!!!) if I were able to distinguish array
> operations from object manipulations.
>
> Best wishes
> Viktoras
>
>
>
> Mark Schonewille wrote:
>> Hi,
>>
>> I just don't get it. I never ever felt a need for OOP and I just
>> can't imagine I ever will, using xTalks. I'd call xTalk rOOP
>> (really object oriented programming) because xTalk uses real
>> objects, like fields, buttons, etc.
>>
>> Why don't you simply forget about OOP? What does OOP have that
>> rOOP doesn't?
>>
>> Mark
>>
>> --
>>
>> Economy-x-Talk
>> Consultancy and Software Engineering
>> http://economy-x-talk.com
>> http://www.salery.biz
>>
>> Get your store on-line within minutes with Salery Web Store
>> software. Download at http://www.salery.biz
>>
>> Op 19-mrt-2008, om 13:25 heeft viktoras didziulis het volgende
>> geschreven:
>>
>>> I would like to define a class, an object (the both with their
>>> properties) and methods that are not a part of graphical user
>>> interface or Revolution engine...
>>>
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
More information about the use-livecode
mailing list