Projet de dictionnaires arabes
4 participants
Page 73 sur 90
Page 73 sur 90 • 1 ... 38 ... 72, 73, 74 ... 81 ... 90
Re: Projet de dictionnaires arabes
Les ArrayList c'est simple. C'est une collection de données en fait. Il existe pleins de classes fournis en Java ou .NET en ce qui concerne les collections de données.
En l'occurrence on peut mettre n'importe quel type d'objet dans une collection, et même faire des collections hybrides, et on spécifie cela avec
où le ? est remplacé par le type de données que l'on souhaite dans le tableau/la liste. On appelle cela des génériques en programmation.
Dans mon exemple,
, c'est une collection de String c'est à dire une collection de chaîne de caractères. Il suffit d'appeler la méthode add de la collection en lui donnant en paramètre la chaîne de caractères à ajouter et cela l'ajoute.
En l'occurrence on peut mettre n'importe quel type d'objet dans une collection, et même faire des collections hybrides, et on spécifie cela avec
- Code:
<?>
où le ? est remplacé par le type de données que l'on souhaite dans le tableau/la liste. On appelle cela des génériques en programmation.
Dans mon exemple,
- Code:
Arraylist<String>
, c'est une collection de String c'est à dire une collection de chaîne de caractères. Il suffit d'appeler la méthode add de la collection en lui donnant en paramètre la chaîne de caractères à ajouter et cela l'ajoute.
Adel Medine- Messages : 643
Points : 655
Date d'inscription : 09/09/2013
Re: Projet de dictionnaires arabes
السلام عليكم ورحمة الله وبركاته
Oui c'est vrai, en programmation orienté objet on instancie des objets sinon ce n'est plus de la POO mais ça n’empêche que par exemple on a inventè la classe StringBuilder car dans certains cas son utilisation consomme moins de mémoire que l'utilisation de la classe String.
Adel Medine a écrit:Oui tu pourrais mettre la classe et la méthode en static. Il faut par contre connaitre la bonne raison de cela. Eviter d'instancier un objet n'est pas une bonne raison. Dans un systéme orienté objet on passe son temps a instancier des objets c'est la définition meme d'un systéme objet : des objets qui collaborent entre eux pour réaliser un traitement.
C'est pour te montrer cela que je ne l'ai pas mise static.
Oui c'est vrai, en programmation orienté objet on instancie des objets sinon ce n'est plus de la POO mais ça n’empêche que par exemple on a inventè la classe StringBuilder car dans certains cas son utilisation consomme moins de mémoire que l'utilisation de la classe String.
Oui je suppose qu'elle est chargée en mémoire comme pour toutes les autres classes, non ? C'est-à-dire que même les autres classes ont au moins un "exemplaire" ou quelque chose comme ça qui est chargé en mémoire et à partir duquel on pourra instancier d'autres objets. Ces autres objets sont "crées dynamiquement"...Adel Medine a écrit:
Une classe static est quand meme chargée en mémoire (comme une variable globale) et sa durée de vie est aussi longue que la durée de vie du programme contrairement à une instance d'une classe (un objet) qui bien souvent à une durée de vie plus courte (le temps d'une méthode par exemple) En static c'est comme si tu avais toujours qu'une instance d'une classe (un objet) en mémoire bien que tu ne l'utilises pas.
Oui effectivement...Adel Medine a écrit:
Là la raison c'est que vu comme cela la classe Devocaliseur n'a aucune donnée membre (aucune encapsulation). Bref, tu n'as pas besoin d'avoir plusieurs instances de cet objet en mémoire à priori. Elle est un peu comme la class Math avec ses méthodes static cosinus ou sinus.
Aprés tout dépend de comment tu comptes l'utiliser dans le systéme au final. A partir de là tu pourras dire static ou pas static.
Dernière édition par Ibn Nacer le Mar 23 Déc - 20:48, édité 1 fois
Ibn Nacer- Messages : 1990
Points : 2234
Date d'inscription : 04/09/2011
Re: Projet de dictionnaires arabes
Bâraka Allâhu fîka. Oui cela ne me semble pas trop compliqué à comprendre, c'est juste que je ne l'avais pas encore abordé mais cela viendra inchâ-a Allâh.Adel Medine a écrit:Les ArrayList c'est simple. C'est une collection de données en fait. Il existe pleins de classes fournis en Java ou .NET en ce qui concerne les collections de données.
En l'occurrence on peut mettre n'importe quel type d'objet dans une collection, et même faire des collections hybrides, et on spécifie cela avec
- Code:
<?>
où le ? est remplacé par le type de données que l'on souhaite dans le tableau/la liste. On appelle cela des génériques en programmation.
Dans mon exemple,
- Code:
Arraylist<String>
, c'est une collection de String c'est à dire une collection de chaîne de caractères. Il suffit d'appeler la méthode add de la collection en lui donnant en paramètre la chaîne de caractères à ajouter et cela l'ajoute.
Ibn Nacer- Messages : 1990
Points : 2234
Date d'inscription : 04/09/2011
Re: Projet de dictionnaires arabes
Les classes qui jouent le rôle de collection de données comme ArrayList est un bon exemple d'utilisation de classes et méthodes non static
StringBuilder aussi ce n'est pas une classe static et/ou avec méthodes static. Le principe d'un StringBuilder permet surtout d'allouer à l'avance ou à la volée sa prévision d'utilisation de la mémoire. Le code source est libre et accessible il me semble que tu devrais trouver le code source de cette classe en Java ou .NET
Concernant le stockage en mémoire des classes static et des classes instanciables (une classe static n'est pas instanciable) cela ne se fait pas dans la même zone de mémoire.
Il y a 3 zones de mémoires différentes : une pour les static, les globales et les constantes, une zone mémoire pour les objet instanciés le Heap(un tas) et une zone mémoire pour le pipeline d’exécution la Stack(la pile)
Sur le Heap sont mis les objets créés dynamiquement quand tu utilises l'opérateur new. La classe static dans la zone de mémoire static. Sur la Stack tu retrouveras les paramètres passés aux méthodes par exemple.
Il y a pleins de long tutoriaux pour expliquer tout cela car c'est très vaste comme sujet la mémoire. J'essaie juste de te donner quelques principes fondamentaux et te rediriger ensuite.
StringBuilder aussi ce n'est pas une classe static et/ou avec méthodes static. Le principe d'un StringBuilder permet surtout d'allouer à l'avance ou à la volée sa prévision d'utilisation de la mémoire. Le code source est libre et accessible il me semble que tu devrais trouver le code source de cette classe en Java ou .NET
Concernant le stockage en mémoire des classes static et des classes instanciables (une classe static n'est pas instanciable) cela ne se fait pas dans la même zone de mémoire.
Il y a 3 zones de mémoires différentes : une pour les static, les globales et les constantes, une zone mémoire pour les objet instanciés le Heap(un tas) et une zone mémoire pour le pipeline d’exécution la Stack(la pile)
Sur le Heap sont mis les objets créés dynamiquement quand tu utilises l'opérateur new. La classe static dans la zone de mémoire static. Sur la Stack tu retrouveras les paramètres passés aux méthodes par exemple.
Il y a pleins de long tutoriaux pour expliquer tout cela car c'est très vaste comme sujet la mémoire. J'essaie juste de te donner quelques principes fondamentaux et te rediriger ensuite.
Adel Medine- Messages : 643
Points : 655
Date d'inscription : 09/09/2013
Re: Projet de dictionnaires arabes
Oui la mémoire c'est tout un sujet...
Sinon pour StringBuilder elle n'est pas statique mais c'était pour faire la comparaison...
Exemple :
Plutôt que d'utiliser un String comme ça :
On utilisera un StringBuilder comme ça :
Car à chaque exécution de str += i + " "; un string est "crée" (un string est non mutable contrairement à un StringBuilder).
Je disais ça pour faire la comparaison avec la méthode Devocalise, là aussi si celle-ci est statique on évite de "créer" une instance à chaque tour de boucle.
Je ne sais pas si tu vois ce que je veux dire...
PS : Je dis "un string est "crée"..." mais si ça se trouve c'est plus que ça, il est possible que pour chaque addition un string soit "créé"...
Sinon pour StringBuilder elle n'est pas statique mais c'était pour faire la comparaison...
Exemple :
Plutôt que d'utiliser un String comme ça :
- Code:
String str = new String("") ;
for(int i = 0; i < 100; i++)
str += i + " ";
System.out.println(str);
On utilisera un StringBuilder comme ça :
- Code:
StringBuilder strB = new StringBuilder();
for(int i = 0; i < 100; i++)
strB.append(i + " ");
System.out.println(strB.toString());
Car à chaque exécution de str += i + " "; un string est "crée" (un string est non mutable contrairement à un StringBuilder).
Je disais ça pour faire la comparaison avec la méthode Devocalise, là aussi si celle-ci est statique on évite de "créer" une instance à chaque tour de boucle.
Je ne sais pas si tu vois ce que je veux dire...
PS : Je dis "un string est "crée"..." mais si ça se trouve c'est plus que ça, il est possible que pour chaque addition un string soit "créé"...
Ibn Nacer- Messages : 1990
Points : 2234
Date d'inscription : 04/09/2011
Page 73 sur 90 • 1 ... 38 ... 72, 73, 74 ... 81 ... 90
Sujets similaires
» قاموس البحث العلميّ / Tous types de dictionnaires arabes en ligne ou à télécharger
» De la synonymie à la traduction ou comment améliorer les dictionnaires bilingues arabes
» Littérature arabe : livres / Arabic Literature: books
» Dictionnaires / معجم / dictionaries
» Dictionnaires latins / قواميس لاتينية / Latin dictionaries
» De la synonymie à la traduction ou comment améliorer les dictionnaires bilingues arabes
» Littérature arabe : livres / Arabic Literature: books
» Dictionnaires / معجم / dictionaries
» Dictionnaires latins / قواميس لاتينية / Latin dictionaries
Page 73 sur 90
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|