Programeer opdrachtenOpdracht : opdr2_grendel.txt

Terug naar de inzendingen
Opdracht 2,Tom Grendel
22-Jan-2005
 Hier staat mijn OOP stijl versie in Java: http://home.wanadoo.nl/grendel/tg/src/hotel/.
  Ik heb er een GUI (Kamer.java) bijgemaakt met de Sun ONE Studio IDE
 (het .form bestand moet je maar niet op letten, dat is XML dat de IDE erbij maakt).
 
 Bij een versie met meerdere kamers zou je voor elke kamer
 een nieuwe instantie van het Control object kunnen aanmaken.
 1 
*****opdracht2b.txt*****
  
 2-----------------
 3lichtpunten [2]
 4   - plafond
 5   - schemerlamp
 6
 7schakelaars [3]
 8   - deur[1] -----------------------> 2 lampen allebei (lamp 0);
 9  |
 10  |-------------------> if (plafondlamp aan (lamp 1)) beide lampen uit (lamp 0);
 11  |
 12  |-------------------> if (schemerlamp aan (lamp 2)) plafondlamp aan (lamp 1);
 13
 14   - bed p -----------------------> if (plafondlamp aan (lamp 1) beide uit (lamp 0);
 15     bed s -----------------------> if (schemerlamp aan (lamp 2) beide uit (lamp 0);
 16
 17
 18hotelbalie
 19----------------
 20schakelaar   -----------------------> lampen uit (lamp 0)
 21
 22
 23De opdracht:
 24Maak een programma die dit systeem mogenlijk maakt.
 25Het programma krijgt voor de hotelkamer een enkele integer variabele binnen.
 26hiervoor gelden de volgende waardes
 270) Er is geen schakelaar ingedrukt.
 281) Centrale lamp schakelaar bij het bed is ingedrukt
 292) Schemer lamp schakelaar bij het bed is ingedrukt.
 303) Beide schakelaars bij het bed zijn gelijktijdig ingedrukt.
 314) Schakelaar bij de deur is ingedrukt.
 328) Schakelaar bij de balie is ingedrukt.
 33
 34Het programma geeft ook weer een integer waarde terug
 350) Alle lampen uit
 361) Centrale lamp aan
 372) Schemerlamp aan
 38B
 393) Beide lampen aan 
 1 
*****kamer.form*****
  
 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      
 138        
 139          
 140        
 141      
 142    
 143    
 144      
 145        
 146      
 147      
 148        
 149          
 150        
 151      
 152    
 153    
 154      
 155        
 156      
 157      
 158        
 159          
 160        
 161      
 162    
 163    
 164      
 165        
 166      
 167      
 168        
 169          
 170        
 171      
 172    
 173    
 174      
 175        
 176      
 177      
 178        
 179          
 180        
 181      
 182    
 183    
 184      
 185        
 186      
 187      
 188        
 189          
 190        
 191      
 192    
 193  
 194
 1 
*****kamer.java*****
  
 2/*
 3 * Name:        Kamer.java
 4 * Author:      Thomas Grendel
 5 * Description: GUI screen representing the hotel room
 6 * This program is hereby donated to the Public Domain. 
 7 * Created on January 21, 2005, 9:57 PM
 8 */
 9
 10package hotel;
 11
 12public class Kamer extends javax.swing.JFrame {
 13    
 14    Control ctrl = new Control();
 15    int lamp;
 16    
 17    /** Creates new form Kamer */
 18    public Kamer() {
 19        initComponents();
 20    }
 21    
 22    /** This method is called from within the constructor to
 23     * initialize the form.
 24     * WARNING: Do NOT modify this code. The content of this method is
 25     * always regenerated by the Form Editor.
 26     */
 27    private void initComponents() {//GEN-BEGIN:initComponents
 28        jPanel1 = new javax.swing.JPanel();
 29        jrPlafond = new javax.swing.JRadioButton();
 30        jrSchemer = new javax.swing.JRadioButton();
 31        jbDeur = new javax.swing.JButton();
 32        jbBed1 = new javax.swing.JButton();
 33        jbBed2 = new javax.swing.JButton();
 34        jbBalie = new javax.swing.JButton();
 35        jbBeide = new javax.swing.JButton();
 36        jtfStatus = new javax.swing.JTextField();
 37        jLabel1 = new javax.swing.JLabel();
 38        jLabel2 = new javax.swing.JLabel();
 39        jLabel3 = new javax.swing.JLabel();
 40        jLabel4 = new javax.swing.JLabel();
 41        jLabel5 = new javax.swing.JLabel();
 42
 43        getContentPane().setLayout(null);
 44
 45        addWindowListener(new java.awt.event.WindowAdapter() {
 46            public void windowClosing(java.awt.event.WindowEvent evt) {
 47                exitForm(evt);
 48            }
 49        });
 50
 51        jPanel1.setLayout(null);
 52
 53        jPanel1.setBorder(new javax.swing.border.EtchedBorder());
 54        jrPlafond.setText("Plafond");
 55        jPanel1.add(jrPlafond);
 56        jrPlafond.setBounds(20, 10, 68, 24);
 57
 58        jrSchemer.setText("Schemerlamp");
 59        jPanel1.add(jrSchemer);
 60        jrSchemer.setBounds(20, 40, 105, 24);
 61
 62        getContentPane().add(jPanel1);
 63        jPanel1.setBounds(20, 40, 140, 80);
 64
 65        jbDeur.setText("Deur");
 66        jbDeur.addActionListener(new java.awt.event.ActionListener() {
 67            public void actionPerformed(java.awt.event.ActionEvent evt) {
 68                jbDeurActionPerformed(evt);
 69            }
 70        });
 71
 72        getContentPane().add(jbDeur);
 73        jbDeur.setBounds(210, 110, 80, 26);
 74
 75        jbBed1.setText("Bed p");
 76        jbBed1.addActionListener(new java.awt.event.ActionListener() {
 77            public void actionPerformed(java.awt.event.ActionEvent evt) {
 78                jbBed1ActionPerformed(evt);
 79            }
 80        });
 81
 82        getContentPane().add(jbBed1);
 83        jbBed1.setBounds(210, 30, 80, 26);
 84
 85        jbBed2.setText("Bed s");
 86        jbBed2.addActionListener(new java.awt.event.ActionListener() {
 87            public void actionPerformed(java.awt.event.ActionEvent evt) {
 88                jbBed2ActionPerformed(evt);
 89            }
 90        });
 91
 92        getContentPane().add(jbBed2);
 93        jbBed2.setBounds(210, 70, 80, 26);
 94
 95        jbBalie.setText("Balie");
 96        jbBalie.addActionListener(new java.awt.event.ActionListener() {
 97            public void actionPerformed(java.awt.event.ActionEvent evt) {
 98                jbBalieActionPerformed(evt);
 99            }
 100        });
 101
 102        getContentPane().add(jbBalie);
 103        jbBalie.setBounds(210, 150, 80, 26);
 104
 105        jbBeide.setText("Bed beide");
 106        jbBeide.addActionListener(new java.awt.event.ActionListener() {
 107            public void actionPerformed(java.awt.event.ActionEvent evt) {
 108                jbBeideActionPerformed(evt);
 109            }
 110        });
 111
 112        getContentPane().add(jbBeide);
 113        jbBeide.setBounds(300, 50, 90, 26);
 114
 115        jtfStatus.setEditable(false);
 116        getContentPane().add(jtfStatus);
 117        jtfStatus.setBounds(20, 130, 140, 20);
 118
 119        jLabel1.setText("4");
 120        getContentPane().add(jLabel1);
 121        jLabel1.setBounds(190, 110, 20, 16);
 122
 123        jLabel2.setText("1");
 124        getContentPane().add(jLabel2);
 125        jLabel2.setBounds(190, 30, 20, 16);
 126
 127        jLabel3.setText("2");
 128        getContentPane().add(jLabel3);
 129        jLabel3.setBounds(190, 70, 10, 16);
 130
 131        jLabel4.setText("8");
 132        getContentPane().add(jLabel4);
 133        jLabel4.setBounds(190, 150, 20, 16);
 134
 135        jLabel5.setText("3");
 136        getContentPane().add(jLabel5);
 137        jLabel5.setBounds(400, 50, 10, 16);
 138
 139        pack();
 140        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
 141        setSize(new java.awt.Dimension(425, 227));
 142        setLocation((screenSize.width-425)/2,(screenSize.height-227)/2);
 143    }//GEN-END:initComponents
 144    
 145    private void jbBeideActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbBeideActionPerformed
 146        control(3);
 147    }//GEN-LAST:event_jbBeideActionPerformed
 148    
 149    private void jbBalieActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbBalieActionPerformed
 150        control(8);
 151    }//GEN-LAST:event_jbBalieActionPerformed
 152    
 153    private void jbBed2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbBed2ActionPerformed
 154        control(2);
 155    }//GEN-LAST:event_jbBed2ActionPerformed
 156    
 157    private void jbBed1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbBed1ActionPerformed
 158        control(1);
 159    }//GEN-LAST:event_jbBed1ActionPerformed
 160    
 161    private void jbDeurActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbDeurActionPerformed
 162        control(4);
 163    }//GEN-LAST:event_jbDeurActionPerformed
 164    
 165    /** Exit the Application */
 166    private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
 167        System.exit(0);
 168    }//GEN-LAST:event_exitForm
 169    
 170    private void control(int optie) {
 171        ctrl.setOptie(optie);
 172        lamp = ctrl.getLamp();
 173        
 174        switch(lamp) {
 175            case 0:
 176                jrPlafond.setSelected(false);
 177                jrSchemer.setSelected(false);
 178                break;
 179            case 1:
 180                jrPlafond.setSelected(true);
 181                break;
 182            case 2:
 183                jrSchemer.setSelected(true);
 184                break;
 185            case 3:
 186                jrPlafond.setSelected(true);
 187                jrSchemer.setSelected(true);
 188                break;
 189        }
 190        if ((jrPlafond.isSelected() && jrSchemer.isSelected()) == true)
 191            ctrl.setLamp(3);
 192        
 193        
 194        jtfStatus.setText(ctrl.whichLamp());
 195        
 196    }
 197    
 198    
 199    public static void main(String args[]) {
 200        new Kamer().show();
 201    }
 202    
 203    
 204    // Variables declaration - do not modify//GEN-BEGIN:variables
 205    private javax.swing.JRadioButton jrPlafond;
 206    private javax.swing.JPanel jPanel1;
 207    private javax.swing.JButton jbDeur;
 208    private javax.swing.JButton jbBeide;
 209    private javax.swing.JTextField jtfStatus;
 210    private javax.swing.JButton jbBed2;
 211    private javax.swing.JButton jbBed1;
 212    private javax.swing.JButton jbBalie;
 213    private javax.swing.JLabel jLabel5;
 214    private javax.swing.JLabel jLabel4;
 215    private javax.swing.JLabel jLabel3;
 216    private javax.swing.JLabel jLabel2;
 217    private javax.swing.JLabel jLabel1;
 218    private javax.swing.JRadioButton jrSchemer;
 219    // End of variables declaration//GEN-END:variables
 220    
 221}
 1 
*****Control.java*****
  
 2/*
 3 * Name:        Control.java
 4 * Author:      Thomas Grendel
 5 * Description: The control class that receives switch options and sets the light
 6 * This program is hereby donated to the Public Domain. 
 7 * Created on January 21, 2005, 10:02 PM
 8 */
 9
 10package hotel;
 11
 12public class Control {
 13    private int optie;
 14    private int lamp;
 15    
 16    /** default constructor */
 17    public Control() {
 18    }
 19    
 20    /** constructor met optie */
 21    public Control(int optie) {
 22        this.optie = optie;
 23    }
 24    
 25    /** Om de status van de lampen terug te krijgen in tekst */
 26    public String whichLamp() {
 27        String which = "";
 28        switch(lamp) {
 29            case 0:
 30                which = "Alle lampen uit";
 31                break;
 32            case 1:
 33                which = "Plafond lamp aan";
 34                break;
 35            case 2:
 36                which = "Schemerlamp aan";
 37                break;
 38            case 3:
 39                which = "Beide lampen aan";
 40                break;
 41        }
 42        return which;
 43    }
 44
 45/* getters en setters */
 46    
 47    public void setOptie(int optie) {
 48        this.optie = optie;
 49        switch(optie) {
 50            case 0: 
 51                break;
 52            case 1:
 53                bedp();
 54                break;
 55            case 2:
 56                beds();
 57                break;
 58            case 3:
 59                both();
 60                break;
 61            case 4:
 62                deur();
 63                break;
 64            case 8:
 65                lamp = 0;
 66                break;
 67        }
 68                
 69    }
 70    
 71    public int getOptie() {
 72        return optie;
 73    }
 74    public void setLamp(int lamp) {
 75        this.lamp = lamp;
 76    }
 77    public int getLamp() {
 78        return lamp;
 79    }
 80    
 81    /** bed plafond */
 82    private void bedp() {
 83        if (lamp == 1)
 84            lamp = 0;
 85        else 
 86            lamp = 1;
 87    }
 88    
 89    /** bed schemer */
 90    private void beds() {
 91        if (lamp == 2)
 92            lamp = 0;
 93        else
 94            lamp = 2;
 95    }
 96    
 97    /** beide bed knoppen tegelijk ingedrukt */
 98    private void both() {
 99        if (lamp == 3)
 100            lamp = 0;
 101        else
 102            lamp = 3;
 103    }
 104    
 105    private void deur() {
 106        if (lamp == 0)
 107            lamp = 3;
 108        else if (lamp == 1)
 109            lamp = 0;
 110        else if (lamp == 2)
 111            lamp = 3;
 112        else
 113            lamp = 0;
 114    }
 115             
 116}
 
 
Mijn commentaar
 
 Tom, mooi en compleet uitgewerkt.
 Mijn belangrijkste opmerking,
 probeer in je code zelf ook wat meer commentaar te zetten.
 De werking van het eigenlijke programma, moet ik aan de hand van de code
 maar zelf uitzoeken.
 daar heeft de hotelbaas niet zo veel zin in !