Oh has objects but no classes. Objects can be created from scratch using the
'object' command. Private members are defined using the 'define' command and
public members are defined using the 'public' command:

Modules are objects. The command below creates an object called 'm'. Public,
top-level definitions in 'file' can be accessed using the object 'm'.

define m: import file

Channels are objects. Oh exposes channels, which are implicit in other shells
in the form of pipes, as first-class values. Channels can be created with the
'channel' command:

define c: channel

Oh incorporates many features, including first-class functions, from the
Scheme dialect of Lisp. Like Lisp, oh uses the same syntax for code and data.
When data is sent across a channel it is converted to text so that it can be
sent to (or even through) external Unix programs.