ooc is an object-oriented programming language. We will start programming in ooc by looking at a simple class: Dog.

 Dog: class {
    name: String
    init: func (=name) {}
 }

The first line declares a class, with a name : Dog. Classes names start with an uppercase letter.

You will notice here, that every declaration starts with the identifier (name) and is followed by a colon, then the type declaration.

After the class keyword, a block (between braces) follows. It is the body of our class. Then a member variable, the dog's name which is a String (the type of the variable) and a constructor.

Every variable in ooc has a Class. Variables and methods names start with a lowercase letter.

The init method, which is our constructor, seems to do nothing. In fact, it takes a String as parameter and assigns it to the instance variable. We can call our constructor by invoking new:

 fido := Dog new("Fido")

The := thing does assign the new instance to a new variable, with type inference. (we do not need to declare the type of fido) Then, we can print fido's name by getting it and invoking println() on it:

 fido name println()

And finally, let us store everything in a file named Dog.ooc :

 Dog: class {
    name: String
    init: func (=name) {}
 }
 fido := Dog new("Fido")
 fido name println()</code>

Then, invoke the compiler:

 rock Dog

 ./Dog
 ==> Fido

That's it!