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