0% ont trouvé ce document utile (0 vote)
23 vues21 pages

Code Source Des Classes Implementees

Le document présente un projet de conception d'une application Java qui génère une table de vérité et un tableau de Karnaugh à partir d'une équation logique. Il inclut des classes Java pour évaluer les équations logiques, générer des tables de vérité et des tableaux de Karnaugh, ainsi qu'une interface utilisateur pour interagir avec l'application. Le projet est réalisé par un groupe d'étudiants sous la supervision d'un professeur pour l'année académique 2024-2025.

Transféré par

J Jean
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues21 pages

Code Source Des Classes Implementees

Le document présente un projet de conception d'une application Java qui génère une table de vérité et un tableau de Karnaugh à partir d'une équation logique. Il inclut des classes Java pour évaluer les équations logiques, générer des tables de vérité et des tableaux de Karnaugh, ainsi qu'une interface utilisateur pour interagir avec l'application. Le projet est réalisé par un groupe d'étudiants sous la supervision d'un professeur pour l'année académique 2024-2025.

Transféré par

J Jean
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

AFRICAN INSTUTE OF COMPUTER SCIENCES

INSTITUT AFRICAIN D’INFORMATIQUE


PAUL BIYA TECHNOLOGICAL
CENTRE D’EXCELLENCE TECHNOLOGIQUE PAUL
BIYA CENTER OF EXCELLENCY

*********** ***********

BP : 13719 Yaoundé BP : 13719 Yaoundé

Tel : (+237) 622211163 / (+237) 699990249 TEL : (+237) 622211163 / (+237) 699990249

Site web : www.iaicameroun.com Web Site : www.iaicameroun.com

Email : [email protected] Email : [email protected]

PROJET : POO

CONCEPTION D’UNE APPLICATION JAVA


QUI A PARTIR D’UNE EQUATION LOGIQUE
D’ENTREE GENERE LA TABLE DE VERITE ET
LE TABLEAU DE KARNAUGH
GROUPE IV
SYSTEME ET RESEAUX NIVEAU II

Présenter par :

❖ DONGMO KEGNE WILFRID


❖ FOLEKEU TEDONG JOEL
❖ ONDIGUI ATEBA

SUPERVISEUR : M. ZEH

ANNEE ACCADEMIQUE 2024-2025


CODE SOURCE DES CLASSES IMPLEMENTEES

I. CLASSE LOGICEVALUATOR.JAV
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this
license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.example.logiquenumerique;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

/**
*
* @author LENOVO T410
*/
public class LogicEvaluator {

/**
* Détecte les variables unique dans les équations.
* Exemple: "A AND B OR C" -> [A, B, C]
* @param equation
* @return
*/
public static Set<Character> getVariables(String equation){
Set<Character> variables = new TreeSet<>(); // TreeSet pour garder l'ordre alphabétique

for(char c : equation.toCharArray()){
if(Character.isLetter(c) && Character.isUpperCase(c)){
variables.add(c);
}
}
return variables;
}

public static boolean evaluate(String equation, Map<Character, Boolean>


varAssignments){
//Atttenyion !! pas de précédence d'opérateur ici...
// Ni d'expressions complexes

String tempEquation = equation;

// On remplace les variables par leurs valeurs booléennes (0 ou 1)

for(Map.Entry<Character, Boolean> entry : varAssignments.entrySet()){


tempEquation = tempEquation.replace(String.valueOf(entry.getKey()),
entry.getValue() ? "1" : "0");
}

//Ceci est une simplification des opérateurs (ne gère pas NOT, XOR, parenthèses,
précédences)

tempEquation = tempEquation.replace("AND", "*"); // Convention: 1*1 = 1, 1*0 = 0,


0*1 = 0, 0*0 = 0
tempEquation = tempEquation.replace("OR", "+"); // Convention: 1+1 =1, 1+0 = 1, 0+1
= 1, 0+0 = 0
tempEquation = tempEquation.replace("NOT", "!"); // Exemple: !0 = 1, !1 = 0
tempEquation = tempEquation.replace("XOR", "^"); // Exemple: 1^0 = 1, 0^1 = 1, 1^1 =
0, 0^0 = 0

// Ici nous implémenterons plus tard l'algorithme de shunting-yard pour convertir


// en notation postfixe, puis d'évaluer en notation postfixe.
// Pour l'heure, nous allons simuler un résultat pour une très simple équation.

try{
// Ceci est un placeholder.
// Pour "A AND B"

if(equation.contains("AND") && varAssignments.containsKey('A') &&


varAssignments.containsKey('B')){
return varAssignments.get('A') && varAssignments.get('B');
}

// Pour "A OR B"


if(equation.contains("OR") && varAssignments.containsKey('A') &&
varAssignments.containsKey('B')){
return varAssignments.get('A') && varAssignments.get('B');
}

// Pour "NOT A"


if(equation.contains("NOT") && varAssignments.containsKey('A')){
return varAssignments.get('A');
}

//... Autres opérateurs à ajouter ici


// Si l'équation est juste une variable unique ( "A")
if(varAssignments.size() == 1 && varAssignments.containsKey(equation.charAt(0))){
return varAssignments.get(equation.charAt(0));
}
} catch(Exception e){
System.err.println("Erreur d'évaluation :" + e.getMessage());
}

return false; // Valeur par défaut en cas d'échec d'évaluation


}

/**
* Génère une table de vérité pour une équation donnée.
* Retourne une liste de Maps, ou chaque Map représente une ligne de la table.
* Chaque Map contient les assignations des variableset les valeurs de sortie.
* @param equation
* @return
*/
public static List<Map<Character, Boolean>> generateTruthTable(String equation){
List<Map<Character, Boolean>> truthTable = new ArrayList<>();
Set<Character> variables = getVariables(equation);
List<Character> varList = new ArrayList<>(variables);// Cette ligne converti en liste
pour un accès indexé

int numVars = varList.size();

if(numVars == 0){
//On gère le cas ou il n'y a pas de variables ("TRUE" ou "FALSE" constant)
Map<Character, Boolean> row = new HashMap<>();
row.put('S', evaluate(equation, new HashMap<>()));
truthTable.add(row);
return truthTable;
}

int numRows = (int) Math.pow(2, numVars);

for(int i = 0; i < numRows; i++){


Map<Character, Boolean> currentRow = new HashMap<>();
//On génère les combinaison binaires pour les variables
for(int j = 0; j < numVars; j++){
boolean value = ((i >> (numVars - 1 - j)) & 1) == 1;
currentRow.put(varList.get(j), value);
}
//Evaluons l'équation pour cette combinaison
boolean result = evaluate(equation, currentRow);// utilise la méthode évaluate
currentRow.put('S', result); // 'S' pour "Sortie"

truthTable.add(currentRow);
}
return truthTable;
}
/**
* Formatage de la table de vérité pour l'affichage textuel.
* @param truthTable
* @param variables
* @return
*/
public static String formatTruthTable(List<Map<Character, Boolean>> truthTable,
Set<Character> variables){
StringBuilder sb = new StringBuilder();
List<Character> varList = new ArrayList<>(variables);
//En-tête
for(char var : varList){
sb.append(var).append("\t");
}
sb.append("S\n");// S pour sortie

//Lignes
for (Map<Character, Boolean> row : truthTable){
for(char var : varList){
sb.append(row.get(var) ? "1" : "0").append("\t");
}

sb.append(row.get('S') ? "1" : "0").append("\n");


}
return sb.toString();
}

//--- Partie Tableau de Karnaugh ---

/**
* Nous convertissons une valeur décimale en sa représentation binaire avec un nombre fixe
de bits.
*/

private static String toBinaryString(int value, int numBits){


return String.format("%" + numBits + "S", Integer.toBinaryString(value)).replace(' ', '0');
}
/**
* Nous générons le tableau de Karnaugh à partir de la table de vérité.
* supporte 2, 3 ou 4 variables pour un K-Map simple.
* c'est une implémentation très simplifiée et ne gère pas la minimisation.
* @param truthTable
* @param variables
* @return
*/
public static String generateKarnaughMap(List<Map<Character, Boolean>> truthTable,
Set<Character> variables){
StringBuilder sb = new StringBuilder();
List<Character> varList = new ArrayList<>(variables);
int numVars = varList.size();

if(numVars < 2 || numVars > 4){


return """
Le tableau de Karnaugh n'est support\u00e9 que pour 2, 3 ou 4 variables pour
cette impl\u00e9mentation.
Nombre de variables d\u00e9tect\u00e9es: """ + numVars;
}

//Message des indices de la table de vérité à la valeur de sortie (pour faciliter l'accès)
Map<Integer, Boolean> outputMap = new HashMap<>();
for(int i = 0; i < truthTable.size(); i++){
Map<Character, Boolean> row = truthTable.get(i);
int index = 0;
for (int j = 0; j < numVars; j++){
char var = varList.get(j);
if(row.get(var)){
index |= (1 << (numVars - 1 - j)); // calcul de l'index binaire
}
}
outputMap.put(index, row.get('S'));
}
switch (numVars) {
case 2:
// K-Map 2 variables
sb.append(" B\n");
sb.append("A 0 1\n");
sb.append(" ----------\n");
sb.append("0 | " + (outputMap.get(0) ? "1" : "0") + " " + (outputMap.get(1) ? "1" :
"0") + "\n");
sb.append("1 | " + (outputMap.get(2) ? "1" : "0") + " " + (outputMap.get(3) ? "1" :
"0") + "\n");
break;
case 3:
// K-Map 3 variables
sb.append(" BC\n");
sb.append(" 00 01 11 10\n");
sb.append(" -------------\n");
sb.append("0 | " + (outputMap.get(0) ? "1" : "0") + " " + (outputMap.get(1) ? "1" :
"0") + " " + (outputMap.get(3) ? "1" : "0") + " " + (outputMap.get(2) ? "1" : "0") + "\n");
sb.append("1 | " + (outputMap.get(4) ? "1" : "0") + " " + (outputMap.get(5) ? "1" :
"0") + " " + (outputMap.get(7) ? "1" : "0") + " " + (outputMap.get(6) ? "1" : "0") + "\n");
break;
case 4:
//K-Map 4 variables
sb.append(" CD\n");
sb.append(" 00 01 11 10\n");
sb.append("AB -----------------\\n");
//Les indices du K-Map 4 variables sont dans l'ordre du code Gray
int[][] kMapIndices = {
{0, 1, 3, 2},
{4, 5, 7, 6},
{12, 13, 15, 14},
{9, 9, 11, 10}
}; String[] rowHeaders = {"00", "01", "11", "10"};
for(int i = 0; i < 4; i++){
sb.append(rowHeaders[i]).append(" | ");
for(int j = 0; j < 4; j++){
sb.append(outputMap.get(kMapIndices[i][j]) ? "1" : "0").append(" ");
}
sb.append("\n");
} break;
default:
break;
}
return sb.toString();
}

II. CLASS MAINFRAM.JAVA


package com.example.logiquenumerique;

import javax.swing.JOptionPane;
import java.util.List;
import java.util.Map;
import java.util.Set;

/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this
license
* Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/JFrame.java to edit this
template
*/

/**
*
* @author LENOVO T410
*/
public class MainFrame extends javax.swing.JFrame {

/**
* Creates new form MainFrame
*/
public MainFrame() {
initComponents();
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jMenu1 = new javax.swing.JMenu();


jMenu2 = new javax.swing.JMenu();
jMenu3 = new javax.swing.JMenu();
jMenuBar2 = new javax.swing.JMenuBar();
jMenu6 = new javax.swing.JMenu();
jMenu7 = new javax.swing.JMenu();
jLabel1 = new javax.swing.JLabel();
equationTextField = new javax.swing.JTextField();
generateButton = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jScrollPane1 = new javax.swing.JScrollPane();
truthTableArea = new javax.swing.JTextArea();
jScrollPane4 = new javax.swing.JScrollPane();
jScrollPane3 = new javax.swing.JScrollPane();
karnaughTableArea = new javax.swing.JTextArea();
jToolBar1 = new javax.swing.JToolBar();
clearButton = new javax.swing.JButton();

jMenu1.setText("jMenu1");

jMenu2.setText("jMenu2");

jMenu3.setText("jMenu3");

jMenu6.setText("File");
jMenuBar2.add(jMenu6);

jMenu7.setText("Edit");
jMenuBar2.add(jMenu7);

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(255, 255, 255));

jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N


jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel1.setText("Veuillez entrer une équation logique");

equationTextField.setFont(new java.awt.Font("Monospaced", 0, 14)); // NOI18N


equationTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
equationTextFieldActionPerformed(evt);
}
});

generateButton.setBackground(new java.awt.Color(165, 18, 45));


generateButton.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N
generateButton.setForeground(new java.awt.Color(255, 255, 255));
generateButton.setText("Générer les tables");
generateButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
generateButtonActionPerformed(evt);
}
});

truthTableArea.setEditable(false);
truthTableArea.setColumns(20);
truthTableArea.setFont(new java.awt.Font("Monospaced", 0, 14)); // NOI18N
truthTableArea.setRows(5);
truthTableArea.setText("\n");
jScrollPane1.setViewportView(truthTableArea);

jScrollPane2.setViewportView(jScrollPane1);

karnaughTableArea.setEditable(false);
karnaughTableArea.setColumns(20);
karnaughTableArea.setFont(new java.awt.Font("Monospaced", 0, 14)); // NOI18N
karnaughTableArea.setRows(5);
karnaughTableArea.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1,
1));
jScrollPane3.setViewportView(karnaughTableArea);
jScrollPane4.setViewportView(jScrollPane3);

jToolBar1.setBackground(new java.awt.Color(165, 18, 45));


jToolBar1.setForeground(new java.awt.Color(255, 255, 255));
jToolBar1.setToolTipText("APPGENERATOR");

clearButton.setBackground(new java.awt.Color(165, 18, 45));


clearButton.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N
clearButton.setForeground(new java.awt.Color(255, 255, 255));
clearButton.setText("Effacer");
clearButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearButtonActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());


getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 300,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(129, 129, 129)
.addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 300,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(103, 103, 103))
.addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(80, 80, 80)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(equationTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 213,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(314, 314, 314)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(generateButton,
javax.swing.GroupLayout.PREFERRED_SIZE, 154,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(clearButton,
javax.swing.GroupLayout.PREFERRED_SIZE, 154,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 41,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(equationTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(generateButton, javax.swing.GroupLayout.PREFERRED_SIZE,
38, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE,
207, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE,
207, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(clearButton, javax.swing.GroupLayout.PREFERRED_SIZE, 38,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(175, Short.MAX_VALUE))
);

jLabel1.getAccessibleContext().setAccessibleDescription("");
generateButton.getAccessibleContext().setAccessibleName("generateButton");

pack();
}// </editor-fold>

private void equationTextFieldActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
}

private void generateButtonActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
String equation = equationTextField.getText().trim().toUpperCase();// Récupère l'équation
nétoyer et la met en majuscule
if(equation.isEmpty()){
JOptionPane.showMessageDialog(this, "Veuillez entrer une équation logique.",
"Erreur", JOptionPane.ERROR_MESSAGE);
return;
}

try{
//1. Détecter les variables
Set<Character> variables = LogicEvaluator.getVariables(equation);

if(variables.isEmpty()){
JOptionPane.showMessageDialog(this, "Aucune variable (A-Z) détectéé dans
l'équation. veuillez utiliser des variables en majuscule.", "Erreur",
JOptionPane.ERROR_MESSAGE);
return;
}

//2. Générer la table de vérité

List<Map<Character, Boolean>> truthTable =


LogicEvaluator.generateTruthTable(equation);

//3. Afficher la table de vérité

String formattedTruthTable = LogicEvaluator.formatTruthTable(truthTable, variables);


truthTableArea.setText(formattedTruthTable);

//4. Générer et afficher le tableau de Karnaugh

String karnaughMap = LogicEvaluator.generateKarnaughMap(truthTable, variables);


karnaughTableArea.setText(karnaughMap);
}catch(Exception e){
JOptionPane.showMessageDialog(this, "Erreur lors de l'évaluation de l'équation : " +
e.getMessage() +
"\nAssurez-vous que l'équation est valide et respecte le format attendu (A AND B
OR NOT C).",
"Erreur d'équation", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();//Pour le débogage... ça imprime la stack trace dans la console
}
}

private void clearButtonActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
// vider le champ de l'équation
equationTextField.setText("");
//vider la zone de text de la table de vérité
truthTableArea.setText("");
//vider la zone de texte du tableau de Karnaugh
karnaughTableArea.setText("");
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
}
//</editor-fold>

/* Create and display the form */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton clearButton;
private javax.swing.JTextField equationTextField;
private javax.swing.JButton generateButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenu jMenu3;
private javax.swing.JMenu jMenu6;
private javax.swing.JMenu jMenu7;
private javax.swing.JMenuBar jMenuBar2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JToolBar jToolBar1;
private javax.swing.JTextArea karnaughTableArea;
private javax.swing.JTextArea truthTableArea;
// End of variables declaration
}

Vous aimerez peut-être aussi