Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Constructors in Turing
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
uncompetence




PostPosted: Tue Jun 09, 2009 10:58 pm   Post subject: Constructors in Turing

I'm toying with Object-Oriented in Turing and looked through the reference under 'class' and found no means of writing a constructor for an object. All calls to new perform the initialization of the object, but there seems to be no way of passing in variables. Is there no other way than to write and call a method of my own?
Sponsor
Sponsor
Sponsor
sponsor
wtd




PostPosted: Tue Jun 09, 2009 11:44 pm   Post subject: RE:Constructors in Turing

As far as I know, there is no way to have a constructor in the sense that other object-oriented programming languages have.
[Gandalf]




PostPosted: Wed Jun 10, 2009 1:49 am   Post subject: RE:Constructors in Turing

Indeed, you are stuck with creating your own initialize() function and always calling that.
DemonWasp




PostPosted: Wed Jun 10, 2009 8:03 am   Post subject: RE:Constructors in Turing

Similarly, there's no way to have a proper destructor.
Tyr_God_Of_War




PostPosted: Thu Jun 18, 2009 7:03 pm   Post subject: Re: Constructors in Turing

I do not think that you can have any class methods (also know as static methods) at all. That's why I think it's better to use a type and a module. You can treat it like python, where you have to list 'self' as a parameter for your methods.
Turing:

module Boxes
    export unqualified opaque/* if you want the boxes to be only moddified inside the class*/ Box, draw, create

    type Box :
        record
            left, bottom, right, top : int
        end record

    fcn create (l, b, r, t : int) : Box
        var temp : Box
        temp.left := l
        temp.bottom := b
        temp.right := r
        temp.top := t
        result temp
    end create

    proc draw (b : Box, col : int)
        Draw.Box (b.left, b.bottom, b.right, b.top, col)
    end draw
    %.......................
end Boxes

var myBox : Box := Boxes.create (20, 40, 30, 50)
Boxes.draw (myBox, black)


Compare this to a class version.
Turing:

class Box
    export left, bottom, right, top,
        create, draw % and so on
    var left, bottom, right, top : int

    proc create (l, b, r, t : int)
        left := l
        bottom:=b
        right:=r
        top:=t       
    end create
    proc draw (col : int)
        Draw.Box (left, bottom, right, top, col)
    end draw
    % ect...
end Box

var myBox : ^Box
new Box, myBox
Box (myBox).create (20, 40, 30, 50)
Box (myBox).draw (black)
free myBox



Or if you really want dynamically allocated stuff:
Turing:

module Boxes
    export ~.Box, draw,  create, delete

    type Box :
        record
            left, bottom, right, top : int
        end record

    fcn create (l, b, r, t : int) : ^Box
        var temp : ^Box
        new temp
        ^temp.left := l
        ^temp.bottom := b
        ^temp.right := r
        ^temp.top := t
        result temp
    end create

    proc draw (b : ^Box, col : int)
        Draw.Box ( ^b.left, ^b.bottom, ^b.right, ^b.top, col)
    end draw
   
    proc delete(var b:^Box)
        free b
    end delete

end Boxes

var boxPtr:^Box:=Boxes.create(20,40,30,50)
put "Left =  ",^boxPtr.left
Boxes.draw(boxPtr, blue)

Boxes.delete(boxPtr)



As you can see, using a module and a type is much like using a class.
Modules can have static methods, while classes get inheritence and polymorphism.
Display posts from previous:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 5 Posts ]
Jump to:   


Style:  
Search: