\b;Příkaz \c;class\n;
Toto klíčové slovo Vám umožňuje definovat novou třídu (datový typ) následujícím způsobem:
\c;
\s;public class NazevTridy
\s;{
\s;	deklarace;
\s;}
\n;
\t;Všechny třídy jsou veřejné
Třídy musejí být vždy deklarované jako \l;public\u cbot\public;. To znamená, že je budou moci používat všichni roboti v dané misi.

\b;Prvky třídy
Prvky třídy se dělí na atributy (\l;proměnné\u cbot\var;) a metody (\l;funkce\u cbot\function;).

Například následující třída nazvaná \c;MyClass\n; obsahuje 4 atributy (\c;a\n;, \c;b\n;, \c;x\n;, \c;s\n;) a jednu metodu (\c;MyFunction\n;).
\c;
\s;public class MyClass
\s;{
\s;	int     a, b;
\s;	float   x = 3.33;
\s;	string  s = "ahoj";
\s;	float   MyFunction(float value)
\s;	{
\s;		return (value * x) - 1;
\s;	}
\s;}
\n;
\b;Přístup k prvkům třídy
Mimo samotnou třídu můžete k jejím prvkům přistupovat pomocí operátoru \c;.\n; (tečka). Příklad:
\c;
\s;public class MyClass
\s;{
\s;	int myField = 0;
\s;	int MyFunction()
\s;	{
\s;		return myField * 2;
\s;	}
\s;}
\s;
\s;extern void object::Test()
\s;{
\s;	MyClass myObject();
\s;	myObject.myField = 10;
\s;	message(myObject.MyFunction()); // 20
\s;	MyClass mySecondObject();
\s;	mySecondObject.myField = myObject.myField - 2;
\s;	message(mySecondObject.MyFunction()); // 16
\s;}
\n;
Prvky třídy jsou ve výchozím stavu automaticky deklarované jako \l;public\u cbot\public;, což znamená, že jsou přístupné i mimo definici třídy. Místo toho je můžete deklarovat jako \c;\l;private\u cbot\private;\n; nebo \c;\l;protected\u cbot\protected;\n;. Pak budou dané prvky dostupné pouze uvnitř samotné třídy.

\t;Modifikátory prvků třídy
Atributy a metody mohou být také deklarované jako \c;\l;static\u cbot\static;\n;. Metody mohou být dále deklarované jako \c;\l;synchronized\u cbot\synchro;\n;.

\t;Inicializace atributů
Jak jste viděli v předchozím příkladu, atributy třídy lze inicializovat v definici dané třídy (\c;int x = 3.33;\n;).

Atributy také můžete inicializovat pomocí konstruktoru, což je speciální metoda se stejným názvem jako třída. Tato metoda se zavolá automaticky při \l;vytváření\u cbot\new; nové instance třídy. Konstruktory můžete \l;přetížit\u cbot\function;.

Příklad:\c;
\s;public class MyClass
\s;{
\s;	int  a, b;
\s;	void MyClass()
\s;	{
\s;		a = 2;  b = 3;
\s;	}
\s;	void MyClass(int a, int b)
\s;	{
\s;		this.a = a;  this.b = b;
\s;	}
\s;}
\n;

\t;Použití ukazatele \c;\l;this\u cbot\this;\n;
Protože parametry druhého konstruktoru mají stejné názvy jako atributy \c;a\n; a \c;b\n;, musíme k oběma atributům přistupovat přes \l;ukazatel\u cbot\pointer; \l;this\u cbot\this;, aby byl význam kódu jednoznačný.

\b;Vytváření objektů
Instance třídy nazvané například \c;MyClass\n; můžete vytvářet pomocí klíčového slova \c;\l;new\u cbot\new;\n;. Příklad:
\c;
\s;extern void object::Test()
\s;{
\s;	MyClass object1();       // Zavolá výchozí konstruktor (bez parametrů)
\s;	MyClass object2(4, 5);   // Zavolá konstruktor se dvěma parametry typu int
\s;	MyClass object3;         // Nezavolá žádný konstruktor, object3 == null
\s;	object3 = new MyClass(); // Konstruktor zavoláme až teď, object3 != null
\s;}
\n;

\b;Mazání objektů
Také můžete definovat destruktor. Musí to být funkce bez parametrů vracející \c;\l;void\u cbot\void;\n;, která má stejný název jako třída, ale na začátku se znakem \c;~\n; navíc. Destruktor se zavolá automaticky, když už na danou instanci třídy neodkazuje žádný ukazatel. Příklad:
\c;
\s;public class MyClass
\s;{
\s;	static private int counter = 0; // počítadlo instancí
\s;	void  MyClass( )
\s;	{
\s;		counter++;  // přičíst jednu instanci
\s;	}
\s;	void ~MyClass( )
\s;	{
\s;		counter--;  // odečíst jednu instanci
\s;	}
\s;}
\s;extern void object::Test()
\s;{
\s;	                   // counter == 0
\s;	MyClass item1( );  // counter == 1
\s;	MyClass item2( );  // counter == 2
\s;	item1 = null;      // counter == 1
\s;}
\s;// counter == 0
\n;
\b;Předávání objektů funkcím
Objekty v CBOTu se předávají pomocí \l;ukazatelů\u cbot\pointer;. To znamená, že když předáte objekt jako parametr \l;funkci\u cbot\function;, daná funkce dostane kopii ukazatele na instanci, ne kopii samotné instance, takže změny objektu provedené uvnitř funkce se projeví i mimo ni.

\b;Dědičnost
Třída může zdědit veřejné a chráněné prvky jiné třídy pomocí klíčového slova \c;\l;extends\u cbot\extends;\n;.

\t;Užitečné odkazy
\c;\l;public\u cbot\public;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;protected\u cbot\protected;\n;, \c;\l;static\u cbot\static;\n;, \c;\l;synchronized\u cbot\synchro;\n;, \c;\l;new\u cbot\new;\n;, \c;\l;ukazatelé\u cbot\pointer;\n;, \c;\l;this\u cbot\this;\n;, \c;\l;super\u cbot\super;\n;, \c;\l;extends\u cbot\extends;\n;
\l;Programování\u cbot;, \l;datové typy\u cbot\type; a \l;kategorie\u cbot\category;.
