IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[POO] création d' objet


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut [POO] création d' objet
    bonjour,

    je voudrais avoir un objet qui soit construit comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    /******* ligne 0 ********/
    monObjet.TabGeneral[0].toto
    monObjet.TabGeneral[0].titi
    monObjet.TabGeneral[0].tutu
     
    monObjet.TabGeneral[0].Tab1[0]
    monObjet.TabGeneral[0].Tab1[1]
    monObjet.TabGeneral[0].Tab1[2]
    monObjet.TabGeneral[0].Tab1[3]
    monObjet.TabGeneral[0].Tab1[4]
     
    monObjet.TabGeneral[0].Tab2[0]
    monObjet.TabGeneral[0].Tab2[1]
    monObjet.TabGeneral[0].Tab2[2]
    monObjet.TabGeneral[0].Tab2[3]
    monObjet.TabGeneral[0].Tab2[4]
     
    /******* ligne 1 ********/
    monObjet.TabGeneral[1].toto
    monObjet.TabGeneral[1].titi
    monObjet.TabGeneral[1].tutu
     
    monObjet.TabGeneral[1].Tab1[0]
    monObjet.TabGeneral[1].Tab1[1]
    monObjet.TabGeneral[1].Tab1[2]
    monObjet.TabGeneral[1].Tab1[3]
    monObjet.TabGeneral[1].Tab1[4]
     
    monObjet.TabGeneral[1].Tab2[0]
    monObjet.TabGeneral[1].Tab2[1]
    monObjet.TabGeneral[1].Tab2[2]
    monObjet.TabGeneral[1].Tab2[3]
    monObjet.TabGeneral[1].Tab2[4]
     
    /******* ligne 2 ********/
     
    ...
     
    /******* ligne 3 ********/
     
    ...

    j'ai essayé de créer un tel objet et de l'initialiser avec des valeurs aléatoire mais ça ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    var monObjet= new Object();
     
    function InialiseVar()
    {
    	monObjet.VLAN = New Array(4);
    	var monElement = { tata:'', titi:'', tutu:'', Tab1: new Array(5), Tab2: new Array(5)};
     
    	for(var i = 0 ; i<16 ; i++){
    		monElement.toto = Math.random()*1;
    		monElement.titi = Math.random()*4096;
    		monElement.tutu = Math.random()*7;
     
    		for(var j = 0 ; j<5 ; j++){
    			monElement.Tab1[j] = Math.random()*1;
    			monElement.Tab2[j] = Math.random()*1;
    		}
     
    		monObjet.VLAN[i] = monElement;
    	}
     
    	monElement = null;
    }
    => je maitrise pas bien la création d'objet, j'ai du me tromper a quelque part...

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut

    Il faudrait créer un objet "monElement" pour chaque iteration de boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var monElement = { tata:'', titi:'', tutu:'', Tab1: new Array(5), Tab2: new Array(5)};
    sinon, lorsque tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monObjet.VLAN[i] = monElement;
    ..chaque élement de VLAN va pointer sur le meme objet (celui crée avant la boucle)

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    et comment faut-il faire (je ne maitrise pas encore bien la création/manipulation d'objet) ?

  4. #4
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function InialiseVar()
    {
    	monObjet.VLAN = New Array(4);
     
    	for(var i = 0 ; i<16 ; i++){
            	var monElement = { tata:'', titi:'', tutu:'', Tab1: new Array(5), Tab2: new Array(5)};
     
     
    		monElement.toto = Math.random()*1;
    		monElement.titi = Math.random()*4096;
    		monElement.tutu = Math.random()*7;
     
    		for(var j = 0 ; j<5 ; j++){
    			monElement.Tab1[j] = Math.random()*1;
    			monElement.Tab2[j] = Math.random()*1;
    		}
     
    		monObjet.VLAN[i] = monElement;
    	}
     
    	monElement = null;
    }
    Sinon, si tu veux faire du vrai objet js, tu devrais plutot faire de cette fonction un constructeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    function NomDeClasse()
    {
            var monObjet = this; /* normalement on passe par this, mais rien n'empeche d'avoir une autre variable qui "pointe" sur l'objet à creer */
    	monObjet.VLAN = New Array(4);
     
    	for(var i = 0 ; i<16 ; i++){
            	var monElement = { tata:'', titi:'', tutu:'', Tab1: new Array(5), Tab2: new Array(5)};
     
     
    		monElement.toto = Math.random()*1;
    		monElement.titi = Math.random()*4096;
    		monElement.tutu = Math.random()*7;
     
    		for(var j = 0 ; j<5 ; j++){
    			monElement.Tab1[j] = Math.random()*1;
    			monElement.Tab2[j] = Math.random()*1;
    		}
     
    		monObjet.VLAN[i] = monElement;
    	}
     
    	monElement = null;
    }
     
    /* plus loin */
    var monObjet = new NomDeClasse();

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    merci beaucoup,

    mais j'ai encore une erreur mais je n'arrive pas a savoir d'ou ça vient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
    	<head>
    		<title>test</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     
    		<style type="text/css">
    body
    {
    	margin: 0;
    	padding: 5px;
    }
     
    table
    {
    	float: left;
    	margin: 10px auto;
    	padding: 0;
    	font-size: 0.9em;
    	border-collapse: collapse;
    	border: 2px solid black;
    	color: black;
    }
     
    th
    {
    	font-weight: bold;
    	background-color: black;
    	color: white;
    	font-weight: bold;
    }
     
    th, td
    {
    	border: 1px solid black;
    	text-align: center;
    	padding: 0.2em 1em;
    	margin: 0;
    }
     
    .tab
    {
    	margin: auto;
    	padding: 10px;
    }
    		</style>
     
    		<script type="text/javascript">
    		/* <!-- */
     
    var JSONvariable;
     
    function ClassJSON()
    {
        var monObjet = this;
    	monObjet.VLAN = new Array(16);
     
    	for(var i = 0 ; i<16 ; i++){
            var monElement = { tata:'', titi:'', tutu:'', Member: new Array(5), Tagged: new Array(5)};
     
     
    		monElement.Enb = Math.random()*1;
    		monElement.ID = Math.random()*4096;
    		monElement.PRI = Math.random()*7;
     
    		for(var j = 0 ; j<5 ; j++){
    			monElement.Member[j] = Math.random()*1;
    			monElement.Tagged[j] = Math.random()*1;
    		}
     
    		monObjet.VLAN[i] = monElement;
    	}
    }
     
    function InitialiseVar()
    {
    	JSONvariable = new ClassJSON();
    	AddRow();
    } 
     
    function AddRow(){
     
    	for(var i = 0 ; i<16 ; i++){
    		var newRow = document.getElementById('tabTest').insertRow(-1);
    		var newCell	
    		var k=0;
     
    		newCell = newRow.insertCell(k++);
    		newCell.innerHTML = JSONvariable.VLAN[i].Enb;
    		k++;
     
    		newCell = newRow.insertCell(k++);
    		newCell.innerHTML = JSONvariable.VLAN[i].ID;
     
    		newCell = newRow.insertCell(k++);
    		newCell.innerHTML = JSONvariable.VLAN[i].PRI;
     
    		for(var j = 0 ; j<5 ; j++){
    			newCell = newRow.insertCell(k++);
    			newCell.innerHTML = JSONvariable.VLAN[i].Member[j];
     
    			newCell = newRow.insertCell(k++);
    			newCell.innerHTML = JSONvariable.VLAN[i].Tagged[j];
    		}
    	}
    }
     
    		/* --> */
    		</script>
    	</head>
     
    	<body>
    		<noscript><p>Error : Javascript is disable</p></noscript>
     
    		<table id="tabTest">
    			<tr>
    				<td>Cel0</td>
    				<td>Cel1</td>
    				<td>Cel2</td>
    				<td>Cel0</td>
    				<td>Cel1</td>
    				<td>Cel2</td>
    				<td>Cel3</td>
    				<td>Cel4</td>
    				<td>Cel0</td>
    				<td>Cel1</td>
    				<td>Cel2</td>
    				<td>Cel3</td>
    				<td>Cel4</td>
    			</tr>
    		</table>
     
     
    		<input type="button" value="Refresh" name="Refresh" onclick="InitialiseVar();"/>
     
    	</body>
    </html>
    => lorsqu'on clique sur le bouton, ça doit faire apparaitre dans le tableau les valeur de l'objet...

  6. #6
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Quelle est l'erreur?

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    ça marche chez toi ?
    => lorsque je clic sur le bouton, j'ai le message :
    Index or size is negative or greater than the allowed amount" code: "1

    => il n'y a pas d'identification du numero de ligne ou il y a l'erreur....

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    c'est bon j'ai trouvé l'erreur => il y avait un k++; qui etait en trop dans la boucle
    encore merci pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] création d'objet via une fabrique de classe
    Par flash_math dans le forum Langage
    Réponses: 2
    Dernier message: 10/11/2007, 09h15
  2. [POO] création d'objets à l'aide de "&"
    Par zakaria_ dans le forum Langage
    Réponses: 3
    Dernier message: 14/05/2007, 19h35
  3. [POO] Création d'un objet
    Par Rhadamanthe59 dans le forum Langage
    Réponses: 2
    Dernier message: 10/01/2007, 13h43
  4. [POO] Limite de création d'objets
    Par ochoq@free.fr dans le forum Langage
    Réponses: 1
    Dernier message: 20/10/2006, 13h50
  5. [POO] création d'un objet de façon généric
    Par nickola dans le forum Langage
    Réponses: 7
    Dernier message: 04/10/2006, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo