[JAVA] [Pour les nouveaux venus] Introduction de JUnit

J'ai toujours voulu présenter JUnit pour l'éducation des nouveaux arrivants, mais c'est un article décevant auquel j'ai abandonné car il est devenu un petit volume lorsque j'écrivais un brouillon. C'est un gaspillage de le jeter tel quel, donc l'entreprise est également en vacances d'été et pour les nouveaux arrivants.


Qu'est-ce que JUnit

JUnit est un outil couramment utilisé dans ce que l'on appelle communément les tests unitaires. JUnit est un logiciel qui vous permet d'exécuter la méthode à tout moment en créant une classe avec une méthode qui décrit comment l'utiliser et la vérifier. Lors de l'exécution de JUnit, écrivez des classes et des méthodes selon le style JUnit.

Flux JUnit

Flux de JUnit (Introduction)

Le flux de base de JUnit est

--Exécuter en fonction de "Comment utiliser la fonction" --Vérifier les "résultats de l'utilisation de cette fonction"

Sera.

Flux JUnit (échantillon simple)

Par exemple, supposons que vous ayez une classe de panier (Cart). Supposons que vous ayez une méthode appelée getSum () qui obtient le prix total qui reflète le prix et la quantité de tous les articles de votre panier. L'utilisation est comme ça.

Cart cart = new Cart();
cart.add(Produit,Quantité);

int result = cart.getSum(); //Vous pouvez obtenir le montant total actuel dans le panier
assertEquals(Montant qui aurait dû être, result); //Vérifiez si le montant acquis est le montant attendu

** ʻassert Equals fait partie de la validation. ** ** ** Si les arguments sont différents ici, le processus de test s'arrêtera là. ** ** ** Le test sera également "échoué". Après avoir passé ʻassertEquals et être allé à la fin, le test sera réussi. ** **

Vous pouvez écrire plusieurs «Assert Equals». Par exemple, si vous souhaitez définir plusieurs paramètres dans le test du constructeur et vérifier s'ils sont correctement définis, ce sera comme suit.

Product apple = new Product("Pomme", 400); // appleという変数にPommeという商品名と400円を設定している

assertEquals("Pomme", apple.getName());  //Vérifiez si le nom a été défini correctement
assertEquals(400, apple.getPrice()); //Vérifiez si le prix a été réglé correctement

C'est comme ça. Le test réussit si vous réussissez les deux «Assert Equals».

Tester avec JUnit

Classe à tester

Les ** classes ci-dessous sont les classes à tester **.

Product.java


public class Product {
    private String productId; //Numéro d'article
    private String productName; //Nom du produit
    private Integer price; //prix

    // getter
    public String getProductId() { return productId; }
    public String getProductName() { return productName; }
    public Integer getPrice() { return price; }
    
    //constructeur
    public Product(Numéro d'article de chaîne,String Nom du produit,Prix entier) { /*Définissez les propriétés ci-dessus*/ }

}

Cart.Java


public class Cart {
  //Propriété
  private List<Product> list; //Produits inclus et leur nombre

  //Méthode
  /** 
   *Effectuer le processus d'ajout d'un produit
   */
  public void add(Produit Produit) { /*Abréviation*/ }

  /**
   *Traitement pour retourner les produits contenus et leur quantité
   */
  public List<Product> getList() { /*Abréviation*/ }
  /**
   *Traitement pour retourner le total des produits contenus
   */
  public int getSum() { /*Abréviation*/ }
}
Au fait, l'image entière est la suivante.

Product.java


public class Product {
	private String productId; //Numéro d'article
	private String productName; //Nom du produit
	private Integer price; //prix

	public Product(String productId, String productName, Integer price) {
		this.productId = productId;
		this.productName = productName;
		this.price = price;
	}

	public String getProductId() {
		return productId;
	}

	public String getProductName() {
		return productName;
	}

	public Integer getPrice() {
		return price;
	}
}

Cart.java


import java.util.List;
import java.util.ArrayList;

public class Cart {
	//Propriété
	private List<Product> list; //Produits inclus et leur nombre

	public Cart() {
		this.list = new ArrayList<Product>();
	}
	//Méthode
	/**
	*Effectuer le processus d'ajout d'un produit
	*/
	public void add(Product product) {
		this.list.add(product);
	}

	/**
	 *Traitement pour retourner les produits contenus et leur quantité
	 */
	public List<Product> getList() {
		return this.list;
	}
	/**
	 *Traitement pour retourner le total des produits contenus
	 */
	public int getSum() {
		int sum = 0;
		for (Product p: this.list) {
			sum += p.getPrice();
		}
		return sum;
	}
}

Méthode d'essai (vue d'ensemble)

Ici, je voudrais tester ajouter. Dans ce cas, j'ai pensé au flux suivant

Comment utiliser 0. Créez un produit à ajouter au panier

  1. Créez un panier
  2. Ajouter des articles au panier

Pour vérifier si add est correct avec l'utilisation ci-dessus, j'ai pensé comme suit (** Remarque: Ceci est un exemple. Il n'est pas toujours nécessaire d'effectuer le test suivant avec un test similaire **) 0. Retirer la liste du panier (il s'agit d'une étape préparatoire et n'entrera pas dans le test)

  1. Vérifiez si le nombre d'articles dans le panier est le même que le nombre ajouté
  2. Vérifiez dans l'ordre si les articles du panier sont corrects

Méthode de test (pseudo code)

Le code de test ci-dessus ressemblerait à ceci

// 0.Créer un produit à ajouter au panier
Product apple = new Product("A001", "Pomme", 158);
Product orange = new Product("A002", "Orange", 258);

// 1.Créer un panier
Cart cart = new Cart();
//Articles dans le panier(Pomme et orange)Ajouter
cart.add(apple);
cart.add(orange);

//Vérifier ici
// 0.Retirer la liste du panier
List<Product> list = cart.getList(); //Obtenez la liste dans le panier

// 1.Le nombre d'articles de la liste ajoutés au panier(2 pièces)Vérifiez si c'est le même que
assertEquals(2, list.size());

// 2.Vérifiez dans l'ordre si les articles du panier sont corrects
Product item;
// 2.1 Vérifiez si le premier produit est le même que celui défini par apple
item= list.get(0);  //Sortez le premier article du panier
assertEquals("A001", item.getProductId()); //Vérification de l'ID produit du produit extrait
assertEquals("Pomme", item.getProductName()); //Vérification du nom de produit du produit extrait
assertEquals((Integer)158, item.getPrice()); //Vérification du nom de produit du produit extrait

// 2.1 Vérifiez si le deuxième produit est le même que celui défini en orange
item = list.get(1); //Retirez le deuxième article du panier et lancez la vérification
assertEquals("A002", item.getProductId()); //Vérification de l'ID produit du produit extrait
assertEquals("Orange", item.getProductName()); //Vérification du nom de produit du produit extrait
assertEquals((Integer)258, item.getPrice()); //Vérification du nom de produit du produit extrait

Au fait, la partie écrite avec «" A001 "» etc. peut être «apple.getProductName ()».

Méthode de test (supplément de pseudo code)

Comme je l'ai écrit au début, le flux de JUnit est

--Exécuter en fonction de "Comment utiliser la fonction" --Vérifier les "résultats de l'utilisation de cette fonction"

Est la base. Sa validation est validée avec une méthode commençant par ʻassert, telle que ʻassertEquals. Et ** assertEquals échouera ** si les deux arguments ne sont pas les mêmes, et aucun autre traitement ne sera effectué **.

Par exemple ʻAssert Equals ("pomme", item.getProductName ()); Si «pomme» devient «pomme», ce sera un échec, et après celaassertEquals((Integer)158, item.getPrice());` Etc. ne sera pas implémenté.

Et si toutes les affirmations égales sont passées et que le processus se poursuit jusqu'à la fin, ce sera un succès.

De plus, écrivez * ʻassertXXX (expect, actual) `dans l'ordre de la valeur correcte et de la valeur de test *.

Comment tester avec JUnit (Eclipse)

Bien qu'il soit édité pour Eclipse, l'original est pleiades. Au fait, j'étais épuisé avec ça seul ... Si vous avez l'énergie, j'ajouterai un jour VS Code, etc. Lors de l'exécution de JUnit dans Eclipse, procédez comme suit:

S'il n'y a pas de dossier de test sous le dossier du projet, créez-le.

Sélectionnez le menu Fichier → Nouveau → Dossier source.

「ファイル」メニュー→「新規」→「ソースフォルダー」を選択します

Entrez "test" dans "Nom du dossier:" sur l'écran suivant et cliquez sur "Terminer".

表示される画面の「フォルダー名:」に「test」と入力し「完了」をクリックします

Cliquez avec le bouton droit sur le dossier de test que vous venez de vérifier ou de créer et sélectionnez Nouveau> Autre.

testフォルダを右クリックし、「新規」→「その他」を選択

Un nouvel écran s'affiche. Sélectionnez "Java" -> "JUnit" -> "JUnit Test Case" puis sélectionnez "Next". Vous pouvez également saisir "junit" dans le champ de l'assistant en haut du nouvel écran. Sélectionnez "JUnit Test Case" parmi les autres, puis sélectionnez "Next".

ウィザード画面が表示されますので「junit」と入力。JUnit テスト・ケースを選択する

Le suivant dépend de JUnit 3, 4 ou 5. Utilisez 4 ou 5 si vous n'avez aucune inquiétude concernant l'éducation des nouveaux arrivants. Sélectionnez 3 si vous êtes dans une situation décevante où vous êtes affecté à 3. Malheureusement, 5 seront inclus dans 4. Je n'ai pas eu assez de temps ...

Créer un cas de test JUnit 3

Créer un cas de test JUnit3
  1. Sélectionnez Nouveau test JUnit 3
  2. Entrez le nom de la classe pour écrire le scénario de test dans Nom (ligne rouge). "Test cible Test" semble être bon.
  3. Pour le nom du package (ligne bleue), spécifiez le même package que la cible de la classe de test (la partie "package XXX;" écrite au début du programme Java à tester).
  4. Cliquez sur Terminer.
パッケージ名と名前を書くクラスの名前を入力します。入力したら「完了」をクリックします

Il n'y a pas de bibliothèque pour JUnit3 au début, il vous sera donc demandé si vous voulez l'ajouter. Sélectionnez "Effectuer l'action suivante", sélectionnez "Ajouter la bibliothèque JUnit 3 au chemin de construction" et appuyez sur OK.

「次のアクションを実行」を選択し、「JUnit 3 ライブラリーをビルド・パスに追加」を選択し、OKを押します
Le cas de test JUnit créé est juste un fichier de programme Java. Cette fois, écrivez comme suit.

CartTest.java


package myStore;

import junit.framework.TestCase;

import java.util.List;

public class CartTest extends TestCase {
public void test Vérifier s'il a été ajouté au panier() {
				//Faites d'abord les produits à introduire pour le test
		Product apple = new Product("A001", "Pomme", 158);
		Product orange = new Product("A002", "Orange", 258);

		//Créer un panier
		Cart cart = new Cart();
		//Ajouter des pommes et des oranges
		cart.add(apple);
		cart.add(orange);
		
		//Vérifier ici
		List<Product> list = cart.getList(); //Obtenez la liste dans le panier
		
		//Vérifiez si le panier contient deux
		assertEquals(2, list.size());
		
		//Vérifiez si le contenu du panier est correct
		Product item;
		item= list.get(0);  //Retirez le premier article du panier et lancez la vérification
		assertEquals("Vérification que le premier ID de produit dans le panier est A001", "A001", item.getProductId());
		assertEquals("Vérification que le premier nom de produit dans le panier est apple", "Pomme", item.getProductName());
		assertEquals("Vérification de savoir si le premier prix du panier est de 158", (Integer)158, item.getPrice());
		
		item = list.get(1); //Retirez le deuxième article du panier et lancez la vérification
		assertEquals("Vérification que le premier ID de produit dans le panier est A002", "A002", item.getProductId());
		assertEquals("Vérification que le premier nom de produit dans le panier est orange", "Orange", item.getProductName());
		assertEquals("Vérification que le premier prix du panier est de 258", (Integer)258, item.getPrice());
	}
}

Les promesses de JUnit 3 sont les suivantes. --ʻImporter junit.framework.TestCase; `écrire

  • La classe Test hérite de la classe TestCase avec étend TestCase
  • Les modificateurs de méthode de test commencent par public void et le nom commence par test

Créez selon les règles ci-dessus. Vous pouvez créer autant de méthodes de test que vous le souhaitez en commençant par test, veuillez donc créer des tests avec différents modèles. De plus, le nom de la méthode contient du japonais, ce qui n'est pas un problème pour Java (pas de problème en termes de spécifications). Dans JUnit, le japonais est souvent utilisé pour faciliter la compréhension du test en cours [^ 1]. N'est-ce pas plus facile à comprendre que d'écrire «testNo1»?

Vous pouvez également remarquer que le premier argument de assertEquals contient une chaîne, mais considérez-la comme un commentaire. Si vous laissez cela, lorsque vous testez avec JUnit, ce premier argument sera affiché sous forme de message et vous pourrez voir ce que le test prévu a échoué.

[^ 1]: Cependant, s'il y a un espace demi-largeur, une erreur se produira, alors choisissez un mot qui peut exprimer le test en un mot.

Créer un cas de test JUnit 4

Créer un cas de test JUnit4
Créer un cas de test JUnit4
1. Sélectionnez Nouveau test JUnit 4 2. Entrez le nom de la classe pour écrire le scénario de test dans Nom (ligne rouge). "Test cible Test" semble être bon. 3. Pour le nom du package (ligne bleue), spécifiez le même package que la cible de la classe de test (la partie "package XXX;" écrite au début du programme Java à tester). 4. Cliquez sur Terminer. パッケージ名と名前を書くクラスの名前を入力します。入力したら「完了」をクリックします

Il n'y a pas de bibliothèque pour JUnit 4 au début, il vous sera donc demandé si vous voulez l'ajouter. Sélectionnez "Effectuer l'action suivante", sélectionnez "Ajouter la bibliothèque JUnit 4 au chemin de construction" et appuyez sur OK.

「次のアクションを実行」を選択し、「JUnit 4 ライブラリーをビルド・パスに追加」を選択し、OKを押します
Le cas de test JUnit créé est juste un fichier de programme Java. Cette fois, écrivez comme suit.

CartTest2.java


package myStore;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;

public class CartTest {
	@Test
public void Vérifier s'il a été ajouté au panier() {
		//Faites d'abord les produits à introduire pour le test
		Product apple = new Product("A001", "Pomme", 158);
		Product orange = new Product("A002", "Orange", 258);

		//Créer un panier
		Cart cart = new Cart();
		//Ajouter des pommes et des oranges
		cart.add(apple);
		cart.add(orange);

		//Vérifier ici
		List<Product> list = cart.getList(); //Obtenez la liste dans le panier

		//Vérifiez si le panier contient deux
		assertEquals(2, list.size());

		//Vérifiez si le contenu du panier est correct
		Product item;
		item= list.get(0);  //Sortez le premier article du panier
		assertThat(item.getProductId(), is("A001")); //Vérification de l'ID produit du produit extrait
		assertThat(item.getProductName(), is("Pomme")); //Vérification du nom de produit du produit extrait
		assertThat(item.getPrice(), is(158)); //Vérification du nom de produit du produit extrait

		item = list.get(1); //Retirez le deuxième article du panier et lancez la vérification
		assertThat(item.getProductId(), is("A002")); //Vérification de l'ID produit du produit extrait
		assertThat(item.getProductName(), is("Orange")); //Vérification du nom de produit du produit extrait
		assertThat(item.getPrice(), is(258)); //Vérification du nom de produit du produit extrait
	}
}

Les promesses de JUnit 4 sont les suivantes.

  • Écrivez d'abord ce qui suit
    • import static org.hamcrest.CoreMatchers.*;
    • import static org.junit.Assert.*;
    • import org.junit.Test;
  • Le modificateur de méthode de test est public void
  • Ecrire @ Test avant la méthode de test
  • La vérification doit être écrite comme ʻassertThat (la cible de vérification, est (valeur souhaitée)) `

Créez selon les règles ci-dessus. Vous pouvez créer autant de méthodes de test que vous le souhaitez en ajoutant @ Test, veuillez donc créer des tests avec différents modèles. De plus, le nom de la méthode contient du japonais, ce qui n'est pas un problème pour Java (pas de problème en termes de spécifications). Dans JUnit, le japonais est souvent utilisé pour faciliter la compréhension du test en cours [^ 1]. N'est-ce pas plus facile à comprendre que d'écrire «testNo1»?

Vous pouvez également remarquer que le premier argument de assertEquals contient une chaîne, mais considérez-la comme un commentaire. Si vous laissez cela, lorsque vous testez avec JUnit, ce premier argument sera affiché sous forme de message et vous pourrez voir ce que le test prévu a échoué.

C'est un serpent, mais vous pouvez écrire du code qui est presque le même que JUnit 3

CartTest.java


package myStore;

import static org.junit.Assert.*;
import org.junit.Test;
import java.util.List;

public class CartTest {
	@Test
public void Vérifier s'il a été ajouté au panier() {
		//Faites d'abord les produits à introduire pour le test
		Product apple = new Product("A001", "Pomme", 158);
		Product orange = new Product("A002", "Orange", 258);

		//Créer un panier
		Cart cart = new Cart();
		//Ajouter des pommes et des oranges
		cart.add(apple);
		cart.add(orange);

		//Vérifier ici
		List<Product> list = cart.getList(); //Obtenez la liste dans le panier

		//Vérifiez si le panier contient deux
		assertEquals(2, list.size());

		//Vérifiez si le contenu du panier est correct
		Product item;
		item= list.get(0);  //Retirez le premier article du panier et lancez la vérification
		assertEquals("Vérification que le premier ID de produit dans le panier est A001", "A001", item.getProductId());
		assertEquals("Vérification que le premier nom de produit dans le panier est apple", "Pomme", item.getProductName());
		assertEquals("Vérification de savoir si le premier prix du panier est de 158", (Integer)158, item.getPrice());

		item = list.get(1); //Retirez le deuxième article du panier et lancez la vérification
		assertEquals("Vérification que le deuxième ID de produit dans le panier est A002", "A002", item.getProductId());
		assertEquals("Vérification que le deuxième nom de produit du panier est orange", "Orange", item.getProductName());
		assertEquals("Vérification que le deuxième prix du panier est de 258", (Integer)258, item.getPrice());
	}
}

Comment écrire JUnit4

J'ai utilisé «Assert Equals» au début, voici donc un cours supplémentaire. Dans JUnit 4, vous pouvez écrire comme suit. A partir de maintenant, ce sera le principal.

assertThat( target, is("target") );

C'est presque la même chose que «Assert Equals», mais cela a le gros avantage de pouvoir lire de gauche à droite. C'est comme affirmer que la cible est "cible" (vérifiez que la cible est "cible"). Vous pouvez également écrire comme ça. «Is» et «not» sont appelés Matchers.

assertThat( target, is( not( "not target") ) )

référence: Java Master - Introduction à l'utilisation de base de JUnit Comment utiliser JUnit (Débutant)

Exécutez JUnit

Exécutez le scénario de test créé. Sélectionnez le menu Exécuter → Exécuter → Test JUnit.

スクリーンショット 2020-08-10 11.27.02.png

Ensuite, l'écran suivant apparaîtra quelque part sur l'écran.

S'il n'apparaît pas, sélectionnez le menu "Fenêtre" -> "Vue Vue" -> "Autre" puis sélectionnez "Java" -> "JUnit" (ligne rouge).
「ウィンドウ」メニュー→「ビューの表示」→「その他」を選択 「Java」→「JUnit」(赤線部)を選択
JUnitの実行画面

Cliquez maintenant sur le triangle à gauche de myStore.CartTest. Vous pouvez voir quel test vous avez fait comme ci-dessous. Les tests réussis sont affichés en vert et les tests infructueux sont affichés en rouge. クラス内で実行したテストを表示

Au fait, changeons "A001" sur la 28ème ligne du programme de test en "A003" et réessayons. Vous pouvez cliquer avec le bouton droit de la souris pour l'exécuter de la même manière qu'avant, mais si vous avez une vue JUnit, vous pouvez la réexécuter en appuyant sur "Ré-exécuter le test" (ligne rouge). 「テストの再実行」(赤線部)を押すと再実行可能

Le fichier ayant été modifié en changeant "A001" en "A003", une boîte de dialogue apparaîtra vous demandant si vous souhaitez l'enregistrer. S'il n'y a pas de problème, cliquez sur "OK". Si vous décochez la case à côté du nom du fichier, le programme sera exécuté avant que le fichier ne soit enregistré. 保存して起動ダイアログが表示されたら「OK」を押す

Ensuite, une croix outremer sera attachée en bas à gauche de l'icône. C'est un signe d'échec. Cliquez ensuite sur le test qui a échoué pour voir où il a échoué dans le cas de test. Double-cliquez dessus pour voir la ligne en question. 失敗したテストをクリックすると、テストケースのどこで失敗したか表示されます。これをダブルクリックすると対象の行が表示されます。

De plus, si vous regardez derrière le junit.framework.ComparisonFailure: de la trace de l'échec, vous pouvez voir la description de "Il y a une confirmation que le premier ID produit du panier est A001" dans les détails de l'erreur. .. De plus, la valeur correcte est affichée dans "Attendu: est" et la valeur réelle (résultat de l'exécution) est affichée dans "mais: était". エラーの詳細にカートの1つめの商品IDがA001であるかの確認があることが確認できる

Eh bien, c'est une longue histoire, mais c'est tout.


Qu'est-ce qu'un test de colonne? Qu'est-ce que la qualité? Que inspecter et comment?

C'est juste un poème

JUnit a écrit que l'exécution et la vérification sont deux choses importantes. Parmi ceux-ci, je voudrais aborder la vérification. C'est super compliqué ici, vous pouvez donc l'ignorer. La validation consiste à vérifier si la valeur du résultat de l'exécution est la même que le résultat attendu, mais il existe une controverse sur ce qu'il faut valider. Il y a peut-être une réponse correcte, mais je ne sais pas (je sais @ t_wada-san ...).

Par exemple, supposons que vous ayez la classe suivante.

SomeClass.java


class SomeClass {
  private String somethingvalue = "";
  public void setSomethingValue(String somethingvalue) {
    this.somethingvalue = somethingvalue;
  }
}

Cette classe ne peut contenir que des données pour de futures extensions. Il y a un setSomethingValue qui définit les données somethingvalue à conserver. Cependant, il n'y a pas de getSomethingValue pour obtenir la valeur de value. Que dois-je faire avec ce test setSomethingValue? Ma réponse personnelle est «basée sur les directives et les spécifications du projet». Tout d'abord, même s'il s'agit d'une variable privée (propriété), la valeur de value peut être connue en utilisant la fonction appelée reflet en Java. [^ 2] En plus de cela, sur les projets et les spécifications

――Si le projet ou la spécification dit "mis à valeur", il est fort probable qu'il sera testé.

  • Si la politique est "Ne pas vérifier les variables privées" ou "Vérifier avec les propriétés et méthodes publiées par la classe", elle ne sera pas testée (car il n'y a pas d'autre moyen d'accéder à la valeur que la réflexion).

Je voudrais adopter cette dernière perspective, mais dans ce cas, il y a un problème quelque peu ennuyeux. Lors de l'ajout d'une méthode qui affiche à plusieurs reprises les valeurs suivantes pour le nombre de fois spécifié

public String repeatSpeak(int times) {
  String result = "";
  for (int i=0; i < times; i++) {
    result += this.value;
  }
  return result;
}

Ce repeatSpeak est une méthode publique (= supposée être utilisée par quelqu'un), donc elle sera testée. À ce stade, la valeur change en fonction de la «valeur». Donc, vous écririez également un test qui utilise setValue pour changer valeur. Je pense qu'il est possible de tester indirectement plutôt que directement comme ça.

Il est nécessaire pour le développement de l'équipe d'avoir une ** perspective unifiée ** dans le projet basée sur des perspectives telles que «quoi», «comment» et «qui», alors comment le faire sur le lieu d'affectation, etc. Demandez si vous voulez tester. Si vous n'avez pas décidé, laissez les membres de l'équipe partager une perspective unifiée au début du développement.

[^ 2]: Référez-vous à ce qui suit pour réflexion: Samurai blog- [Introduction to Java] Exécution de méthodes et changement de champs avec réflexion, Hishidama Réflexion sur la page de la note technique,

Recommended Posts

[Pour les nouveaux venus] Introduction de JUnit
Paramètres Gradle pour l'utilisation de JUnit 5
Présentation de "" Monitoring Tool "" pour surveiller Docker
[Pour nos nouveaux arrivants] À propos des méthodes isXXX
Présentation des conseils Java de GreenMail à Junit5
Junit
Points clés pour l'introduction de gRPC en Java
Idée d'introduction de symboles pour la POO dans l'organigramme