A voir également:
- Débutant Java
- Jeux java itel ✓ - Forum Jeux vidéo
- Java runtime - Télécharger - Langages
- Java apk - Télécharger - Langages
- Scanf en java ✓ - Forum Java
- Java heap space ✓ - Forum Java
7 réponses
choubaka
Messages postés
39152
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
17 mars 2023
2 099
21 mai 2003 à 11:54
21 mai 2003 à 11:54
Salut
question assez vaste, mais bon je vais résumer.
Les objets peuvent collaborer entre eux (appel de méthodes, passage d'arguments).
Les objets peuvent contenir des objets (dans des structures de données par ex).
Les objets peuvent créer d'autre objets(instancier).
Par exemple: L'objet "voiture" contient un objet "volant" (il contient), il peut demander à son objet volant de tourner (collaboration).
public class Volant{
public void tourne(string direction){}
}
public class Voiture {
private Volant monVolant; "(il contient)"
public Voiture (){ "(constructeur)
monVolant = new Volant(); "(instanciation)"
}
private void jeBraque(String direction){
monVolant.tourne(direction) "(appel d'un méthode et passage d'argument)"
}
----------------
bon ça vaut ce que ça vaut, mais je résume là
Chouba
Casque Bleu forumique
question assez vaste, mais bon je vais résumer.
Les objets peuvent collaborer entre eux (appel de méthodes, passage d'arguments).
Les objets peuvent contenir des objets (dans des structures de données par ex).
Les objets peuvent créer d'autre objets(instancier).
Par exemple: L'objet "voiture" contient un objet "volant" (il contient), il peut demander à son objet volant de tourner (collaboration).
public class Volant{
public void tourne(string direction){}
}
public class Voiture {
private Volant monVolant; "(il contient)"
public Voiture (){ "(constructeur)
monVolant = new Volant(); "(instanciation)"
}
private void jeBraque(String direction){
monVolant.tourne(direction) "(appel d'un méthode et passage d'argument)"
}
----------------
bon ça vaut ce que ça vaut, mais je résume là
Chouba
Casque Bleu forumique
Merci de ta réponse
je n'y vois un peu plus clair, mais tu m'as mis en gros les même choses qu'on voit en cours et dans des bouquins et sur internet.
Pour faire simple, est ce que selon toi, les clients auraient besoin d'un identificateur? un simple compteur qui s'incrémente à chaque nouveau client créé, et j'ai oublié de préciser que ces clients étaient généré aléatoirement, il est donc impossible de prévoir combien il y en aura. Ce qui me parait évident (pas évident mais facile) c'est qu'en programmation classique, la réponse a ma question serait de gérer les clients avec une liste dynamique et pointeur et tout le toutim... Seulement je sais pas pourquoi, j'arrive pas à comprendre comment gérer ça en Java, tu me diras il suffit peut etre d'essayer et puis ça viendra mais je suis sceptique quand à l'utilisation des identificateurs. ..
Merci beaucoup chewie
je n'y vois un peu plus clair, mais tu m'as mis en gros les même choses qu'on voit en cours et dans des bouquins et sur internet.
Pour faire simple, est ce que selon toi, les clients auraient besoin d'un identificateur? un simple compteur qui s'incrémente à chaque nouveau client créé, et j'ai oublié de préciser que ces clients étaient généré aléatoirement, il est donc impossible de prévoir combien il y en aura. Ce qui me parait évident (pas évident mais facile) c'est qu'en programmation classique, la réponse a ma question serait de gérer les clients avec une liste dynamique et pointeur et tout le toutim... Seulement je sais pas pourquoi, j'arrive pas à comprendre comment gérer ça en Java, tu me diras il suffit peut etre d'essayer et puis ça viendra mais je suis sceptique quand à l'utilisation des identificateurs. ..
Merci beaucoup chewie
choubaka
Messages postés
39152
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
17 mars 2023
2 099
22 mai 2003 à 07:42
22 mai 2003 à 07:42
désolé 8(
Chouba
Casque Bleu forumique
Chouba
Casque Bleu forumique
[-- Jibé --]
Messages postés
16
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
6 juin 2003
32
21 mai 2003 à 15:47
21 mai 2003 à 15:47
Un objet n'est que le mode d'emploi d'un ensemble d'attribut.
Pour utiliser un objet, il faut l'instancier, c'est à dire faire qqchose du type :
Client monClient = new Client();
Un autre client serait instancié de la même manière mais ce serait une instance différente :
Client monClient2 = new Client();
Là tu as deux client bien distinct qui sont bien 2 instances d'un même objet. Le Client "monClient" aura les mêmes attributs que "monClient2" mais ces attributs pourront avoir des valeurs différentes.
Toute la difficulté pour toi, c'est de gérer ces instances sans leur donner de nom, car tu ne sais pas d'avance le déroulement de l'opération.
Tu peux gérer l'ensemble de tes clients dans une List (par exemple...) qui contiendra toutes tes instances différentes de ton objet Client :
List mesClients = new List();
Quand un client arrive :
mesClients.add(newClient()); --> quand tu fait "new Client()" ici, il faut imaginer que dans les parenthèses, tu auras toutes les caractéristiques de ton clients (se référer au constructeur)
Un deuxième client arrive :
mesClients.add(newClient()); --> A ce moment, tu as fait deux fois cette instruction, tu as donc deux instances de Client dans ton instance de List. Donc si tu fait mesClients.get(0) tu récupère le premier, si tu fait mesClients.get(1) tu récupère mon second.
Bon là je pars dans tous les sens... donc j'arrête ici... Si tu as des questions ou que je ne suis pas clair, n'hésites pas.
Pour utiliser un objet, il faut l'instancier, c'est à dire faire qqchose du type :
Client monClient = new Client();
Un autre client serait instancié de la même manière mais ce serait une instance différente :
Client monClient2 = new Client();
Là tu as deux client bien distinct qui sont bien 2 instances d'un même objet. Le Client "monClient" aura les mêmes attributs que "monClient2" mais ces attributs pourront avoir des valeurs différentes.
Toute la difficulté pour toi, c'est de gérer ces instances sans leur donner de nom, car tu ne sais pas d'avance le déroulement de l'opération.
Tu peux gérer l'ensemble de tes clients dans une List (par exemple...) qui contiendra toutes tes instances différentes de ton objet Client :
List mesClients = new List();
Quand un client arrive :
mesClients.add(newClient()); --> quand tu fait "new Client()" ici, il faut imaginer que dans les parenthèses, tu auras toutes les caractéristiques de ton clients (se référer au constructeur)
Un deuxième client arrive :
mesClients.add(newClient()); --> A ce moment, tu as fait deux fois cette instruction, tu as donc deux instances de Client dans ton instance de List. Donc si tu fait mesClients.get(0) tu récupère le premier, si tu fait mesClients.get(1) tu récupère mon second.
Bon là je pars dans tous les sens... donc j'arrête ici... Si tu as des questions ou que je ne suis pas clair, n'hésites pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En fait en programmant, ça viens un peu..
Il y a par contre une grosse difficulté dans le projet (à mon avis) (et je ne vous demande pas une réponse précise mais plutot un conseil ou une orientation) c'est qu'il faut dans cette simulation d'ascenseur gérer le facteur "temps". En effet les ascenseurs mettent un certain temps à arriver (ils ont des vitesses..je passe les détails) et le temps défile comme le temps dans une journée (par ex les clients n'arrivent pas à la même fréquence le matin que le midi etc...)
Donc je me demandais comment gérer cet aspect; doit on faire une classe horloge? (un thread qui donne l'heure)
Quels moyens sont disponibles en Java pour simuler le temps?
Merci beaucoup
Il y a par contre une grosse difficulté dans le projet (à mon avis) (et je ne vous demande pas une réponse précise mais plutot un conseil ou une orientation) c'est qu'il faut dans cette simulation d'ascenseur gérer le facteur "temps". En effet les ascenseurs mettent un certain temps à arriver (ils ont des vitesses..je passe les détails) et le temps défile comme le temps dans une journée (par ex les clients n'arrivent pas à la même fréquence le matin que le midi etc...)
Donc je me demandais comment gérer cet aspect; doit on faire une classe horloge? (un thread qui donne l'heure)
Quels moyens sont disponibles en Java pour simuler le temps?
Merci beaucoup
choubaka
Messages postés
39152
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
17 mars 2023
2 099
23 mai 2003 à 12:40
23 mai 2003 à 12:40
Salut
Tu peux utiliser l'horloge du système pour calculer temps
La classe System possède une méthode "currentTimeMillis() qui te donne l'heure en milliseconde, il suffit d'effectuer un calcul dessus pour gérer les délais
http://java.sun.com/j2se/1.4.1/docs/api/java/lang/System.html
Chouba
Casque Bleu forumique
Tu peux utiliser l'horloge du système pour calculer temps
La classe System possède une méthode "currentTimeMillis() qui te donne l'heure en milliseconde, il suffit d'effectuer un calcul dessus pour gérer les délais
http://java.sun.com/j2se/1.4.1/docs/api/java/lang/System.html
Chouba
Casque Bleu forumique
Ouais on doit pouvoir se débrouiller à partir de là
le but est de simuler une journée de travail (c'est un immeuble de bureau :) et cette journée ne durera pas une journée justement (sinon on se ferait chier à deboguer..). Il faut définir une unité de temps pour le programme (disons la minute) et faire en sorte qu'à chaque seconde (réelle) il se passe une minute dans le programme (le rapport n'est pas obligatoirement celui-ci mais c'est un exemple simple)
merci beaucoup encore une fois, ce forum est très sympathique
je reviendrai :-p
le but est de simuler une journée de travail (c'est un immeuble de bureau :) et cette journée ne durera pas une journée justement (sinon on se ferait chier à deboguer..). Il faut définir une unité de temps pour le programme (disons la minute) et faire en sorte qu'à chaque seconde (réelle) il se passe une minute dans le programme (le rapport n'est pas obligatoirement celui-ci mais c'est un exemple simple)
merci beaucoup encore une fois, ce forum est très sympathique
je reviendrai :-p
On a commencé ce super projet, et j'ai fais un truc (qui me semble à peine correcte) et j'aimerais avoir un avis d'expert. Pour le moment, j'ai 2 classes à savoir une classe horloge (qui simule l'heure de la journée en incrémentant un compteur de minute) et une classe générateur (qui génère des clients). Ces 2 classes sont des Threads (extends Thread).
Le pb que j'avais c'était que j'ai besoin de l'heure à laquelle apparaissent les clients (donc en gros, le générateur a besoin de l'horloge) . Mais ne pouvant pas passer une variable horloge en paramètre dans la méthode run() du générateur, j'ai déclaré une variable de classe (pour le générateur) qui est une instance d'horloge. Et dans le main, l'horloge est lancée en premier puis le générateur est lancé avec en paramètre: l'horloge qui vient d'être instanciée, et dans le constructeur du générateur j'ai rajouté (horlogeDuGenerateur=horlogeDuMain) ce qui me permet d'exploité les données de l'horloge dans le run sans avoir à le passer en paramètre.
Oulala j'espère que j'ai été clair, mais je sais qu'il y a des experts.
Voilà j'aimerais savoir si cette possibilité n'est pas trop laide ni problématique et s'il y a d'autres possibilités.
Merci d'avance
Le pb que j'avais c'était que j'ai besoin de l'heure à laquelle apparaissent les clients (donc en gros, le générateur a besoin de l'horloge) . Mais ne pouvant pas passer une variable horloge en paramètre dans la méthode run() du générateur, j'ai déclaré une variable de classe (pour le générateur) qui est une instance d'horloge. Et dans le main, l'horloge est lancée en premier puis le générateur est lancé avec en paramètre: l'horloge qui vient d'être instanciée, et dans le constructeur du générateur j'ai rajouté (horlogeDuGenerateur=horlogeDuMain) ce qui me permet d'exploité les données de l'horloge dans le run sans avoir à le passer en paramètre.
Oulala j'espère que j'ai été clair, mais je sais qu'il y a des experts.
Voilà j'aimerais savoir si cette possibilité n'est pas trop laide ni problématique et s'il y a d'autres possibilités.
Merci d'avance
nz_janvier
Messages postés
146
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
15 mai 2006
17
25 mai 2003 à 16:11
25 mai 2003 à 16:11
salut Etienne
j'avoue que ta préoccupation est assez vaguement exprimée.
je pense que pour t'aider il faudrait que l'on ait une copie du cahier de charge et une esquisse de ton dossier d'analyse si tu en as un !
tu peux toujours me faire voir où tu en es à jnzeutchap@yahoo.fr
BEAUCOUP DE COURAGE
janvier !
j'avoue que ta préoccupation est assez vaguement exprimée.
je pense que pour t'aider il faudrait que l'on ait une copie du cahier de charge et une esquisse de ton dossier d'analyse si tu en as un !
tu peux toujours me faire voir où tu en es à jnzeutchap@yahoo.fr
BEAUCOUP DE COURAGE
janvier !
Je vais tenter de réexpliquer car cette solution marche bien en fait, je me demandais juste si c'est correcte..
Pour faire simple, on a deux thread crées l'un à la suite de l'autre dans le prg principale.
Le 2ième Thread a besoin d'accéder aux données du premier (plus précisemment dans le run() )
Comme il est impossible (??? ) de passer des paramètres à la méthode run() du 2nd thread, j'ai rajouté une variable (attribut static) dans la définition de la classe du 2nd Thread. Et Lors de la création (constructeur) du 2nd Thread (à cet instant le premier thread tourne déjà) he bien j'affecte le thread qui tourne déjà à la variable de classe du 2nd Thread (en passant le premier thread en paramètre dans le constructeur)
Voilà j'espère que c'est plus clair
Pour faire simple, on a deux thread crées l'un à la suite de l'autre dans le prg principale.
Le 2ième Thread a besoin d'accéder aux données du premier (plus précisemment dans le run() )
Comme il est impossible (??? ) de passer des paramètres à la méthode run() du 2nd thread, j'ai rajouté une variable (attribut static) dans la définition de la classe du 2nd Thread. Et Lors de la création (constructeur) du 2nd Thread (à cet instant le premier thread tourne déjà) he bien j'affecte le thread qui tourne déjà à la variable de classe du 2nd Thread (en passant le premier thread en paramètre dans le constructeur)
Voilà j'espère que c'est plus clair