HOGESCHOOL ROTTERDAM/RIVIO HOGESCHOOL ROTTERDAM / RIVIO MODULEWIJZER INFPRO03 Object georiënteerd programmeren Aantal studiepunten 2cp Module-eigenaar INF 6-4-2005 INFPRO03 20-07-17 1 HOGESCHOOL ROTTERDAM/RIVIO A4-Modulebeschrijving Modulecode: Modulenaam: Belasting (aantal CP): Relatie met andere onderwijs Vereiste voorkennis: Programmasoort Werkvormen: Looptijd Toetsing: Vrijstelling: Leermiddelen: INFPRO03 Object georiënteerd programmeren 2 Competenties en Leerdoelen: Van de competentie realiseren op niveau 2.: een object georiënteerd ontwerp programmeren en implementeren m.b.v. een objectgeoriënteerde programmeertaal tot een werkend systeem. Inhoud: Het programmeren in java van een object georiënteerd ontwerp in UML: Implementatie van classes en objects Implementatie van statisch gedrag Implementatie van generalization-specialisation Implementatie van relationships Implementatie van usecases en sequence diagrammen Voorbereiding voor IAN02 en project 7/8. Bouwt voort op de programmeer modulen. INFPRG00, INFPRG01 en INFPRG02 kennisgestuurd Hoorcollege en practicum Week1 t/m week4 Practicum toets na 4 weken Practical object-oriented development with UML and Java ISBN: 0-13-067238-6 Introduction to Java programming ISBN: 0-13-185721-5 Opmerkingen: Auteur(s): VersieDatum: Module beheerder: INFPRO03 20-07-17 C.H.Bos 6-4-2005 2 HOGESCHOOL ROTTERDAM/RIVIO Inhoudsopgave HOGESCHOOL ROTTERDAM / RIVIO ....................................................................................................................1 A4-Modulebeschrijving .............................................................................................................................................2 1. Algemene omschrijving.................................................................................................................................4 1.1 Inleiding ..........................................................................................................................................................4 1.2 Inhoud .............................................................................................................................................................4 1.3 Relatie met andere onderwijseenheden.....................................................................................................4 1.4 Leerdoelen en competenties .......................................................................................................................4 1.5 Werkvorm(en) ................................................................................................................................................4 1.6 Literatuur en ICT-bronnen ............................................................................................................................4 2. Programma ...............................................................................................................................................................5 week 1 ........................................................................................................................................................................5 week 2 ........................................................................................................................................................................5 week 3 ........................................................................................................................................................................5 week 4 ........................................................................................................................................................................6 week 5 ........................................................................................................................................................................6 3 Toetsing en beoordeling .............................................................................................................................................6 3.1 procedure.............................................................................................................................................................6 3.2 toetsmatrijs praktijktentamen . ..........................................................................................................................6 3.3 voorbeeldtoets praktijktentamen ......................................................................................................................7 INFPRO03 20-07-17 3 HOGESCHOOL ROTTERDAM/RIVIO 1. Algemene omschrijving 1.1 Inleiding In de praktijk vindt de software systeem ontwikkeling steeds meer object georiënteerd plaats. Dit omdat object georiënteerde software systemen beter herbruikbaar, uitbreidbaar en onderhoudbaar zijn. Van het te maken (complexe) software systeem wordt eerst een ontwerp gemaakt in UML waarna dit ontwerp wordt geprogrammeerd. 1.2 Inhoud Het programmeren in java van een object georiënteerd ontwerp in UML: Implementatie van classes en objects Implementatie van statisch gedrag Implementatie van generalization-specialisation Implementatie van relationships Implementatie van usecases en sequence diagrammen 1.3 Relatie met andere onderwijseenheden Om deze module succesvol af te ronden is het noodzakelijk dat men al vertrouwd is met met: Statements voor toekenning, selectie en herhaling. (programmeren 0) Classes, datamembers, arrays en methods (programmeren 1) Object based programmeren (programmeren 2) Deze module is voorbereidend voor de module object georiënteerd ontwerpen (ian02) en voor project 7/8 waarin een software systeem zal worden ontwikkeld. 1.4 Leerdoelen en competenties Van de competentie realiseren op niveau 2.: een object georiënteerd ontwerp programmeren en implementeren m.b.v. een objectgeoriënteerde programmeertaal tot een werkend systeem. 1.5 Werkvorm(en) Week 1 t/m week 3: 2 uur hoorcollege en 3 uur practicum. Week 4: 5 uur practicum Week 5: 2 uur tentamen 1.6 Literatuur en ICT-bronnen Verplichte literatuur: Introduction to JAVA programming Y. Daniel Liang Pearson Prentice Hall ISBN: Practical Object-oriented development with UML en Java. Richard C. Lee, William M. Tepfenhart. Prentice Hall ISBN 0-13-067238-6 Aanbevolen literatuur: Objectgeorienteerde Software engineering een projectmatige aanpak Evelyn Stiller & Cathie leBlanc Addison Wesley ISBN: 90-430-0636-X INFPRO03 20-07-17 4 HOGESCHOOL ROTTERDAM/RIVIO 2. Programma Het doel van de module is een gegeven ontwerp in UML diagrammen (class- en sequence) te kunnen programmeren. In de hoorcolleges zullen een aantal UML taalelementen worden behandeld en hoe deze geïmplementeerd kunnen worden. Bij het practicum zal een gegeven ontwerp geïmplementeerd worden. Hierbij wordt er samengewerkt in groepen van maximaal 3 personen. week 1 2 uur hoorcollege Onderwerpen: wat is een object en wat is een class? Wat is UML? Notatie van een object en een class in UML Implementatie van classes en objects in Java. Implementatie van statisch gedrag 3 uur practicum: Van het gegeven class diagram de classes implementeren in Java. Waar mogelijk de methodes van de classes implementeren. Classes testen m.b.v. een driver. Zelfstudie: Bestuderen uit het studieboek hoofdstuk blz 24 t/m 28, 395 t/m 398, 401 t/m 403, hoofdstuk 13 en 14 Afmaken implementatie van classes uit het gegeven ontwerp. week 2 2 uur hoorcollege Onderwerpen: Generalization-specialisation Notaties in UML Mapping naar inheritance Derived- en base class Polymorfisme Relationships; association, aggregation, composition Implementing relationships (1:1, 1:N, N:M) Implementing aggregation 3 uur practicum: Van het gegeven class diagram de overerving en relationships implementeren in Java. Implementatie van de grafische user interface. Het geheel testen m.b.v. een driver. Zelfstudie: Bestuderen uit het studieboek blz 406 t/m410, hoofdstuk 16, 17 en eventueel hoofdstuk 6 uit Introduction to Java programming. Afmaken implementatie van het gegeven ontwerp zover mogelijk. week 3 2 uur hoorcollege Onderwerpen: Usecases en usecasediagram Sequence diagram, synchrone en asynchrone messages 3 uur practicum: Implementatie van het gehele ontwerp. Zelfstudie: Bestuderen uit het studieboek blz 398 t/m 400, 411 t/m 414, blz 71 t/m 78, en hoofdstuk 10. Verder werken aan implementatie van het gehele ontwerp. INFPRO03 20-07-17 5 HOGESCHOOL ROTTERDAM/RIVIO week 4 5 uur practicum: Implementatie van het gehele ontwerp afmaken en laten controleren. Zelfstudie: Bestuderen van alle behandelde stof. week 5 2 uur schriftelijk tentamen. 3 Toetsing en beoordeling 3.1 procedure De module wordt beoordeeld op de uitgewerkte practicum case en een praktijktentamen, weging 50%-50% mits beide onderdelen met een 4 of hoger beoordeeld zijn, anders is het eindcijfer het laagste van beide. 3.2 toetsmatrijs praktijktentamen . Toetsvorm: praktijktentamen 1. het kunnen implementeren van classes in UML notatie in java code. (30%) Implementatie van: class naam attributen met datatypen methoden met parameters en return type modifiers private protected en public class attributen en methoden 2. het kunnen implementeren van relaties tussen classes in en classdiagram in java. (20%) Implementatie van: Associaties, aggregaties, composities. (1:1, 1:N, N:M), rollen. Overerving, super en subclasses, abstract classes Interfaces 3. het kunnen implementeren van usecases met bijbehorende sequence diagrammen in UML tot een werkend java programma. (50%) INFPRO03 20-07-17 6 HOGESCHOOL ROTTERDAM/RIVIO 3.3 voorbeeldtoets praktijktentamen Gegeven is het ontwerp van een applicatie waarmee eenvoudige rekensommen kunnen worden geoefend. De grafische userinterface ziet er als volgt uit: Als de applicatie wordt opgestart ziet men dit scherm met alle tekstvelden leeg. Drukt men op de knop “maak nieuwe toets” wordt er een nieuwe toets gemaakt bestaande uit 10 sommen waarvan er 5 optelsommen zijn en 5 vermenigvuldigsommen. De eerste som wordt op het scherm getoond. Als er een som wordt getoond kan de gebruiker een antwoord intypen in het tekstveld rechts van het gelijkteken. Als een antwoord is ingetypt moet de gebruiker op de “OK” knop drukken. Het systeem zal dan het gegeven antwoord vergelijken met het juiste antwoord. Als het antwoord goed is wordt de volgende som getoond, anders wordt het getal in het tekstveld “aantal foute antwoorden” met 1 verhoogd. Als er op de knop “volgende som” gedrukt wordt, wordt de volgende som getoond. De code van de class Hoofdscherm is gegeven. Opdracht1 (3 punten) Schrijf de code van de klassen Toets, Som, OptelSom en VermenigvuldigSom, dit wil zeggen De class declaratie, de data member declaraties en van de methoden de signaturen. Opdracht 2. ( 2 punten) Vul de code aan voor de implementatie van de associaties. Opdracht 3 (5 punten) Vul de code aan van de methode actionPerformed in de class Hoofdscherm en de code van de andere classes aan de hand van de sequence diagrammen. INFPRO03 20-07-17 7 HOGESCHOOL ROTTERDAM/RIVIO Klasse diagram: INFPRO03 20-07-17 8 HOGESCHOOL ROTTERDAM/RIVIO Sequence diagram: programma starten INFPRO03 20-07-17 9 HOGESCHOOL ROTTERDAM/RIVIO sequence diagram: nieuwe toets maken INFPRO03 20-07-17 10 HOGESCHOOL ROTTERDAM/RIVIO sequence diagram: antwoord geven INFPRO03 20-07-17 11 HOGESCHOOL ROTTERDAM/RIVIO sequence diagram: volgende som INFPRO03 20-07-17 12 HOGESCHOOL ROTTERDAM/RIVIO import javax.swing.*; import java.awt.*; import java.awt.event.*; public class HoofdScherm extends JFrame implements ActionListener { JTextField tf_aantalFouten; JTextField operand1,operator,operand2,antwoord; JButton bt_maaktoets,bt_volgendesom,bt_antw_ok; Toets toets; public HoofdScherm() { super("sommen maken"); Container con=getContentPane(); con.setLayout(new GridLayout(3,1)); JPanel p1=new JPanel(); JLabel l1=new JLabel("aantal foute antwoorden"); p1.add(l1); tf_aantalFouten=new JTextField(3); p1.add(tf_aantalFouten); con.add(p1); JPanel p2=new JPanel(); operand1=new JTextField(2); p2.add(operand1); operator=new JTextField(2); p2.add(operator); operand2=new JTextField(2); p2.add(operand2); JLabel gelijk=new JLabel("="); p2.add(gelijk); antwoord=new JTextField(2); p2.add(antwoord); con.add(p2); bt_antw_ok=new JButton("OK"); bt_antw_ok.addActionListener(this); p2.add(bt_antw_ok); JPanel p3=new JPanel(); bt_maaktoets=new JButton("maak nieuwe toets"); bt_maaktoets.addActionListener(this); p3.add(bt_maaktoets); bt_volgendesom=new JButton("volgende som"); bt_volgendesom.addActionListener(this); p3.add(bt_volgendesom); con.add(p3); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400,300); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource()==bt_maaktoets) { //zelf invullen } else if (e.getSource()==bt_volgendesom) { //zelf invullen } else if (e.getSource()==bt_antw_ok) { //zelf invullen INFPRO03 20-07-17 13 HOGESCHOOL ROTTERDAM/RIVIO } } public void geefWeerSom(Som som) { if (som!=null) { operand1.setText(""+som.getOperand1()); operator.setText(""+som.getOperator()); operand2.setText(""+som.getOperand2()); } else { JOptionPane.showMessageDialog(null,"er zijn geen sommen meer", "Toets sommen",JOptionPane.INFORMATION_MESSAGE); } } public void geefweerAantalFouten(int aantalFouten) { tf_aantalFouten.setText(""+aantalFouten); } public static void main(String[] args) { new HoofdScherm(); } } INFPRO03 20-07-17 14