Version 35 of ::oo:: too

Updated 2018-01-19 22:14:32 by jsuntheimer72
 ::oo::class            Core 8.6
 ::oo::copy             Core 8.6
 ::oo::define           Core 8.6
 ::oo::objdefine        Core 8.6
 ::oo::object           Core 8.6

 ::oo::util             Tcllib 1.18
 ::oo::dialect          Tcllib 1.18 
 ::oo::meta             Tcllib 1.18
 ::oo::option           Tcllib 1.18

 ::info                 Core 
 ::info class           Core 8.6
 ::info object          Core 8.6

 ::my                   Core 8.6
 ::next                 Core 8.6 
 ::self                 Core 8.6
namespace import oo::*
proc noop args {}

# ***Instantiation***

class create A1class
A1class create a1object

class create B1class
set b1object [B1class new]

#-----

object create c1object

set d1object [object new]

#-----

# ***Construction***

class create A2class {
        constructor args {
                puts hi 
                catch {next $args} {}
        }
}

class create B2class
define B2class constructor args { 
        puts hi 
        catch {next $args} {}
}

A2class create a2object
B2class create b2object

#-----

# ***Variables and methods***

class create A3class {
        constructor args {
                variable a
                catch {next $args} {}
        }
        method a1method arg {
                variable a
                set a $arg                
        }
        method a2method {} {
                variable a
                return $a
        }
}

class create B3class {
        variable b
        method b1method arg {
                set b $arg
        }
        method b2method {} {
                return $b
        }
}

class create C3class
define C3class variable c
define C3class method c1method arg { set c $arg }
define C3class method c2method {} { return $c }

A3class create a3object
a3object a1method 5
puts [a3object a2method]

set b3object [B3class new]
$b3object b1method 5
puts [$b3object b2method]
#-----

# ***Inheritance***

class create A4class {
        variable a
        constructor arg {
                set a $arg
                catch {next $arg} {}
        }
        method a1method {} {
                return $a
        }
}

class create B4class {
        variable b
        constructor arg {
                set b $arg
                catch {next $arg} {}
        }
        method b1method {} {
                return $b
        }
}

noop Single Inheritance

class create C4class {
        superclass A4class
        constructor arg {
                catch {next $arg} {}
        }
        method c1method {} {
                my variable a
                return $a 
        }
} 

noop Multiple Inheritance

class create D4class {
        superclass B4class C4class
        constructor arg {
                catch {next $arg} {}
        }
}

C4class create c4object hi
puts [c4object c1method]
puts [c4object a1method]

set d4object [D4class new 42]
puts [$d4object c1method]
puts [$d4object b1method]