Aller au contenu
Règlement du forum ×
IPTV et arnaques ×

Petite question en JAVA


Invité HAVOC

Messages recommandés

J'ai une petite question en JAVA. Pour un petit projet initiatique en JAVA en demande de:

Créer la class abonne possédant l' attribut entier id (identifiant de l'abonné) et l'attribut abonnement de type object Abonnement.

 

Ma question est, comment créer un constructeur qui puisse vérifier si l'id entré en paramètre n'a pas déjà utilisé par un autre objet de la classe Abonné ?

Lien vers le commentaire
Partager sur d’autres sites

Salem,

 

Tu ajoutes une propriété en Static que tu nommeras MaxID par exemple, cette entier étant déclaré en Static sera partagé par toutes les instances Abonnée donc lors de la création d'un Abonné tu incrémentes cette attribut, autrement dit on considérera que tout ce qui est inférieur à MaxID est un ID déjà attribué à un abonné.

 

Bien sure si le ID est entré comme paramètre dans le constructeur tu peux faire appel à un objet Static du genre ArrayList qui contiendra tout les IDs occupés pour ne pas les répéter.

 

J'espère que j'ai pas dit trop de conneries, je ne suis pas un JAVAiste :)

Modifié par mouradski
Correction Ortho
Lien vers le commentaire
Partager sur d’autres sites

Salem,

 

Tu ajoutes une propriété en Static que tu nommeras MaxID par exemple, cette entier étant déclaré en Static sera partagé par toutes les instances Abonnée donc lors de la création d'un Abonné tu incrémentes cette attribut, autrement dit on considérera que tout ce qui est inférieur à MaxID est un ID déjà attribué à un abonné.

 

Bien sure si le ID est entré comme paramètre dans le constructeur tu peux faire appel à un objet Static du genre ArrayList qui contiendra tout les IDs occupés pour ne pas les répéter.

 

J'espère que j'ai pas dit trop de conneries, je ne suis pas un JAVAiste :)

 

Je suis plus pour une solution avec l'attribut arrayList en static, car l'utilisation d'un attribut maxId comme tu l'as défini n'est pas fiable, en effet, si tu créé l'abonné avec l'id de valeur 1 et un autre avec un id de valeur 3 ton maxId indiquera que les id de valeurs {1,2 ,3} sont pris hors que le 2 est libre, autrement dit, le maxId n'est pas fiable dans le cas de trous dans les id.

Lien vers le commentaire
Partager sur d’autres sites

Je suis plus pour une solution avec l'attribut arrayList en static, car l'utilisation d'un attribut maxId comme tu l'as défini n'est pas fiable, en effet, si tu créé l'abonné avec l'id de valeur 1 et un autre avec un id de valeur 3 ton maxId indiquera que les id de valeurs {1,2 ,3} sont pris hors que le 2 est libre, autrement dit, le maxId n'est pas fiable dans le cas de trous dans les id.

 

Pour la première solution c'est bien sure dans le cas ou le constructeur ne contient pas de paramètre ID et que son attribution sera automatisée dans le corps de la Méthode du constructeur.

 

.......

// On matera MaxID en private pour pour éviter qu'on y touche et on laissera ce privilège

// qu'au constructeur

private static int MaxID;

.......

 

public Abonnée(Abonnement Ab,......) // pas de "int ID" dans les params

{

........

this.ID = ++MaxID;

........

 

// comme ça on aura même pas à faire des teste de redondance comme // dans les base de //données avec auto incrémentation

}

 

Donc c'est fiable et automatique et ça évitera plus de calcul et moins de ressource mémoire qu'une ArrayList. Modifié par mouradski
Lien vers le commentaire
Partager sur d’autres sites

Le souci c'est que la structure de l'object et les paramètres référentiels du constructeur me sont imposés. Je n'ai nullement le choix, je dois avoir un paramètre 'Id' de type int dans le constructeur de l'objet abonné.

Je pense que c'est un projet très léger et qu'il n'y a pas à gérer le cas où l'Id utilisé serait déjà exploité.

Arfff... je hais les énoncés à 2 balles qui ne sont ni claires ni complets.

Lien vers le commentaire
Partager sur d’autres sites

Arfff... je hais les énoncés à 2 balles qui ne sont ni claires ni complets.

 

Wé c'est ceux qui complexent le plus, à la fin après avoir cru qu'on a une solution ultra sophistiquée, il s'avère que la solution était ultra simple et qu'il n'était nullement demandé de traiter tout les cas MAIS si on décide pour faire simple de ne traiter que ce qui a été explicitement demandé on se retrouve avec des remarques du genre "imaginez que.....alors......pour dire finalement que la solution était erronée"

 

Tout ce speech pour dire que je crois que c'est plus des exos pour tester la réaction de l'étudiant à l'ambiguïté :cool: ou MDR :D un test inconito de recrutement au MIB :D

Lien vers le commentaire
Partager sur d’autres sites

Le souci c'est que la structure de l'object et les paramètres référentiels du constructeur me sont imposés. Je n'ai nullement le choix, je dois avoir un paramètre 'Id' de type int dans le constructeur de l'objet abonné.

Je pense que c'est un projet très léger et qu'il n'y a pas à gérer le cas où l'Id utilisé serait déjà exploité.

Arfff... je hais les énoncés à 2 balles qui ne sont ni claires ni complets.

 

Here you go, you solved yourself. :D

 

je pense qu'il vaux mieux utiliser une hashTable, ou tu stock tes objets et la clé sera l'id, c'est plus facile a manipuler, et tu pourra même faire des recherches sur les objet suivant leur id

[/Quote]

 

I would use HashMap instead of hashtable for uniqueness and search. Hashtable has been replaced more or less by hashmap and hashset.

 

those are my $0.02 and discussion is open.

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...
Y a aussi une solution pro, tu peux utiliser le design pattern Singleton,

Mais bref, réponse tardive ! :p c'est pas de rentrer dans les détails.

 

non, désolé, t'es à coté de la plaque. Un singleton permet de ne créer qu'une seule instance d'une même classe.

Or son problème ici, est qu'il veut empêcher la création de deux abonnés ayants le même id, mais rien ne t'empêche de créer deux instances ou + de la classe Abonne.

Lien vers le commentaire
Partager sur d’autres sites

non, désolé, t'es à coté de la plaque. Un singleton permet de ne créer qu'une seule instance d'une même classe.

Or son problème ici, est qu'il veut empêcher la création de deux abonnés ayants le même id, mais rien ne t'empêche de créer deux instances ou + de la classe Abonne.

 

Non et 3 milliards non :D, vous êtes tous les deux en dehors de ma plaque :p ,

je m'explique :

Je crée une classe mère singleton, par exemple HomeSingleton, qui permettra de de créer des objets Abonnés avec leurs Abonnement,

En gros, c'est exactement la solution des EJBs là : un Home ( mon singleton, qui s'appelle HomeAbonnés ) et des classes managées par ce dernier ...

 

Voilà voilou :p

Lien vers le commentaire
Partager sur d’autres sites

^^ C'était juste un petit TP d'une heure lol

 

En faite ce qui me dérangeait avec la solution se basant sur une variable static (ou globale) est que après la fermeture du programme elle retrouve sa valeur d'initialisation ce qui n'est pas compatible avec une incrémentation automatique de l'ID de l'abonné, cela ne marche que si on ne ferme jamais son logiciel.

Mais bon, comme c'était juste un petit TP je ne voulais pas de solution complexe. Cela dit, vos interventions enregissent le forum donc bonne continuation ;-)

Lien vers le commentaire
Partager sur d’autres sites

Salem,

 

^^ C'était juste un petit TP d'une heure lol

 

En faite ce qui me dérangeait avec la solution se basant sur une variable static (ou globale) est que après la fermeture du programme elle retrouve sa valeur d'initialisation ce qui n'est pas compatible avec une incrémentation automatique de l'ID de l'abonné, cela ne marche que si on ne ferme jamais son logiciel.

Mais bon, comme c'était juste un petit TP je ne voulais pas de solution complexe. Cela dit, vos interventions enregissent le forum donc bonne continuation ;-)

 

Je sais que c'est juste un petit tp mais jpeux pas m'empêcher :)

 

pour le problème de la volatilité de la donnée MaxID, suffit simplement de sauvegarder cette donnée ou même le tout :) sur une BD ou fichier, les infos seront repris au démarrage de l'application (lol)

Lien vers le commentaire
Partager sur d’autres sites

Salem,

 

 

 

Je sais que c'est juste un petit tp mais jpeux pas m'empêcher :)

 

pour le problème de la volatilité de la donnée MaxID, suffit simplement de sauvegarder cette donnée ou même le tout :) sur une BD ou fichier, les infos seront repris au démarrage de l'application (lol)

 

Oui tout ça fait... mais les accès aux BD et l'écriture dans un fichier c'est encore autre chose ^^

Lien vers le commentaire
Partager sur d’autres sites

mwé, on dérive grave vers une application base de données :D

 

Oui mais c'est pour ça que je trouve un coté stupide à ce genre de TP bien que l'objectif soit d'acquérir des connaissances de base.

Lien vers le commentaire
Partager sur d’autres sites

C'est sympa d'avoir de connaissance de base en base de données : select from where ... :D

 

Ben les BD ça fait ricaner beaucoup d'étudiants mais à un certain niveau cela devient moi facile, surtout quand on passe au stade de l'optimisation des requêtes avec toutes les règles à respecter et les contraintes...etc. Bref, c'est intéressant !

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • Messages

    • J'ai le ax3000t il marche comme une horloge c'est mon meilleur router que j'ai testè faut lavoire pour jugè le seul qui donne un debit stable meme loin de 15 mètre une latence stable aussi  Plein d'option une gestion chirurgical des client un vpn qui marche pour tous bien sécurisé  Si vous aimé pas zappé mais dire que c'est une escroquerie non c'est loin de ca  Alors votre solution et de payé 15000 pour un router qui fait la meme chose et qu'il a meme pas la meme puissance de signale la chine na pas de restriction pour le signale il est plus fort que les dlink de meme catégorie  Le mien je les payé 5000da  Moi j'ai bougé j'ai plusieurs carte visa j'achète les produits que je veux je ne vais pas resté regardé les gens en profité sans faire quelque chose je profite moi aussi pour titre personnel je ne vend rien j'ai voulu aidé alors profité des promo c'est chinois et alors ca marche bien ...  J'ai oublie de dire il y'a aussi le tplink chinois c'est aussi performant et wifi 7 mais 56 $
    • juste une info que personne ne semble savoir : mais depuis un moment deja, HISENSE/CONDOR/NARDI/CRISTOR ont un site web officiel de vente en ligne qui est commun :  https://proxima.market   d'ailleurs sur leur page facebook ils indiquent clairement aux clients d'aller acheter directement dessus... ce qui est IDIOT c'est que les prix sur le site sont plus chers que leur showroom, du moins pour les trucs que j'ai vu; debile !   voila cela en sus des stores officiels sur jumia qu'ils ont deja; voila  
    • 99% des algeriens ne peuvent pas acheter du net car n'ayant pas de carte... c'est quand meme fou qu'en 2024 un algerien ne peut avoir facilement une carte visa....d'ou le traffic des revendeurs quoi qu'il en soit j'ai constaté qu'un article vendu a 30 euros sur aliexpress est vendu par les algeriens jusqu'a 15.000da! je voulais moi meme acheter des ecouteurs a 10 euros, le mec sur ouedkniss me demande 1 million...!!!!!!!!!!!!!!!!!!! pour info le BE3600 n'a de wifi7 que....le NOM ! les debits c'est du wifi6....encore une escroquerie qui fonctionne sur les algeriens ! comme tous les routeurs chinois pas de 6ghz.........................chose que les algeriens ne savent pas non plus  
    • Pour ceux qui ont la 1 go  Les promo  Xiaomi be3600 wifi 7 a 33$ Xiaomi be5000 wifi 7 2.5g lan 35$ C'est moin cher q'un simple modem wifi 6 équivalent a 7800 da Le plus chez xiaomi Vpn  géré le debit pour les utilisateurs  Low latency gaming Les moins L'interface est en chinois  Mais avec chrom translate ou leur app tu peut avoir la langue que tu veux    
    • Limiter les processus en arrière-plan pour réduire la consommation de mémoire RAM sur Android TV   Les téléviseurs Android sont généralement livrés avec un matériel limité. Par exemple, la plupart des téléviseurs intelligents économiques offrent un processeur quad-core de base et environ 1 à 2 Go de RAM, ce qui nuit aux performances globales, en particulier lors de l'utilisation d'applications IPTV ou de jeux lourds. Heureusement, vous pouvez apporter plusieurs modifications logicielles pour accélérer le téléviseur et le faire fonctionner plus rapidement que d'habitude. Ci-dessous, nous avons mentionné certaines des meilleures méthodes pour réparer un Android TV lent Les options de développement vous permettent de limiter le nombre maximum de processus pouvant s'exécuter en arrière-plan. Bien que limiter l'activité en arrière-plan puisse tuer les applications en arrière-plan, cela améliore les performances globales de l'application de premier plan et la fluidité de la navigation dans l'interface Android TV. Ceci est un contenu masqué, merci de Se connecter ou S’inscrire      
×
×
  • Créer...