It is my feeling that since LOLCODE is the most modern of languages, it should support full object-orientation and message-sending. Below is my suggested syntax, lowercase items being there to show where you'd make substitutions:
BTW I am going to define a class called 'pokemans'
HAI
LET ME SHOW U MY pokemans
BTW This is a class variable
THEY HAVE A VAR IT IS CALLED awsumness
BTW This is an instance variable
IT HAS A VAR IT IS CALLED height
BTW This is an example of a typed statement
IT HAS A pokeman IT IS ITS friend
BTW --------------------------------------
BTW Here's how we define LOLMETHODS
IT CAN eat UR pokeman WATCH
BTW Here a pokeman is passed in as an argument
BTW and this instance check to see if it can be
BTW eaten
CAN I EAT UR pokeman
AWSUM THX
LET ME eat UR pokeman
O NOES
I NO WANT pokeman
BTW ... and return it back to you
HAVE UR STOOPID pokeman BACK
KTHX
KTHX
BTW --------------------------------------
BTW Here's a class method
ALL MY pokemans CAN help UR teem WATCH
BTW Just for demonstration, we'll see if
BTW the passed 'teem' has a method on it's class
BTW the 'ALL OF' indicates the 'class of' instead of the thing itself.
CAN I hit ALL OF UR teem
AWSUM THX
LET ME hit ALL OF UR teem
O NOES
I NO WANT teem
KTHXBYE
HAVE UR STOOPID teem BACK
KTHX
KTHX
KTHXBYE
Instantiating them is pretty easy:
HAI
CAN HAS STDIO?
I HAS A pokeman ITS NAME IS pikachu
I HAS A pokeman ITS NAME IS evilpikachu
LET MY evilpikachu eat UR pikachu
KTHXBYE
----
Why change variables so much for object-oriented-ness?
Just use IT/THEY/I for class/non-class variables, and ITZ/ITZA for values/objects:
LET ME SHOW U MY pokemans
IT HAS A height ITZ 10
KTHXBYE
and
I HAS A pikachu ITZA pokemans
--- //Zach, 2007/06/01 04:07//
----
I love pretty much everything on this page. I think, at the expense of some consistency in the block termination syntax, classes should be ended with MY LET ME SHOW YOU THEM rather than KTHX. It just fits so well! :-D
--- //Fred, 2007/06/03 21:24//
----
First, I think we need to get the more fundamental features of the language sorted first, before we worry about OO etc. OO is plainly not a core feature of LOLCode, based on everything we've seen so far.
Second, I favor a Javascript-style prototype based OO method. It plainly suits the language better than explicitly declaring members, methods, etc. --- Arachnid
---
We definiely need class inheritance, like this:
LET ME SHOW U MY pikachus THEYZ pokemans
...
MY pikachus LET ME SHOW YOU THEM
--- //Cedric Shock, 2007/06/23 19:30//