C# versus Java ■ 3
/* Does not modify string, instead returns lower case copy of string */
csString.ToLower();
Pour créer une chaîne de caractères autorisant la modification avec la même référence, il
est conseillé d'utiliser les classes System.Text.StringBuilder pour C# et
java.lang.StringBuffer pour Java.
NOTE: En C#, la classe chaîne peut-être écrite sous la forme string ou String.
2.8 Les classes non extensibles
Les deux langages proposent des mécanismes consistant à interdire toute extension d'une
classe ; soit par souci d'optimisation, soit par souci de sécurité. Ainsi, il est interdit de les
dériver pour redéfinir des méthodes ou simplement réutiliser l'implémentation. En C#,
vous utilisez le mot-clé sealed et en Java le mot-clé final.
Code Java
final class Student {
String fname;
String lname;
int uid;
void attendClass() {}
}
Code C#
sealed class Student {
string fname;
string lname;
int uid;
void attendClass() {}
}
2.9 Levée et capture d'Exceptions
Les exceptions en C# et Java partagent énormément de caractéristiques. Les deux
langages supportent l'utilisation de l'ordre try pour indiquer qu'un bloc est susceptible de
lever une exception et catch pour capturer l'exception en question. De plus, finally est
implémenté de la même manière pour spécifier qu'une région de code doit, dans tous les
cas être exécutée (exception ou pas). Cela permet de libérer des ressources proprement.
Les deux langages proposent une hiérarchie de classes d'Exceptions dérivant d'une super
classe : System.Exception pour C# et java.lang.Exception pour Java. Aussi, il est
possible de chaîner la levée ou la capture d'exception (throw dans un catch) de part et
d'autre. Cela permet, lors de la levée d'une exception, de retourner à l'appelant un type
d'exception correspondant à son contexte et à sa couche d'architecture. Par exemple, une
ligne non trouvée dans une table se traduira par une SQLException que le développeur
prendra soin de renvoyer à l'interface graphique sous la forme d'un
ObjectNotFoundException.
NOTE : Cependant, il existe une différence fondamentale entre C# et Java. Comme en
Python, le mot-clé throws n'existe pas en C# car vous n'êtes pas contraint de spécifier
dans la signature d'une méthode le fait qu'elle est susceptible de lever une exception. Il n'y
a, contrairement à Java, aucune vérification de faite à l'exécution.
Code Java
class MyException extends Exception{
public MyException(String message){ super(message); }
public MyException(String message, Exception innerException){
super(message, innerException); }
ENSICAEN - Spécialité Informatique