1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| //un fichier est en faite un module et un package
//si celui ci est inclue dans le package org.jo.malibrairie
//et que ce fichier se nomme Utils,
//toute les variable publique du fichier apparaîtront dans l'espace de nom org.jo.malibrairie.Utils
//une gestion des importation est nécessaire
const maLibrairie = import org.jo.maLibrairie;
//des variable et constante typé public ou privé
public var String:maString = "une string";
private const Number:monNombre = 10;
public var RegExp:maRegExp= /^[a-z]#/;
//et des générics
var Array<String> = ["a", "b", "c"];
//des variable dynamique
var maVarDynamic = {};
//des fonctions typé public
public function Number:test(Number:a=5, Number:b=15){
return a + b;
}
//des fonctions non typé privé
private function test2(a, b){
return a + b;
}
//une classe public
public class Test {
//constructeur
public constructor(Integer:a, Integer:b){
var Integer:c = a + b;
}
// variable typé
public String:maString;
// variable non typé
protected Dynamic = {};
//methode typé
public function void:concat(String:a="hello", String:b="world"){
this.maString = a + b
}
//methode non typé
private function doWhat(a = {}, b = 10){
...
}
//methode non typé, mais arguments typé , dont une fonction
private function doWhatThat(Function(Number:a)->Number:a = function(a){return a}, Number:b = 10){
...
}
}
//une classe abstraite
private abstract class Test2 {
public abstract function Number:test(Number:a=5, Number:b=15);
protected function String:test(String:a, String:b){
return a + b;
}
}
//une classe multi hérité
public class Test3 extends Test as Test , Test2 as Test2, maLibrairie.Test3 as Test3 {
public constructor(Integer:a, Integer:b){
....
super.Test(a, b);
....
super.Test3();
}
//implémente la methode de Test2:test2
public function Number:test(Number:a=5, Number:b=15){
return a+b;
}
public function Number:test2(Number:a=5, Number:b=15){
...
return super.Test3.test(a, b),
}
//en cas de conflie d'héritage, la fonction teste pouvant hérité de Test et Test3 , alors on la définit comme telle
//sinon l'ordre de définition des classe étendue prendera le dessus
test -> Test3
} |