Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JAVA] Hoe werkt methode execute van event?

Pagina: 1
Acties:

  • jeetn
  • Registratie: April 2006
  • Laatst online: 16-10-2024
Hallo,

Ik ben een 3de jaars Informatica student te Kortrijk. Voor school moeten we een project uitwerken voor een externe opdrachtgever. We werken volgens de gelaagde architectuur en zijn bezig met het schrijven van de events.

Nu begrijp ik niet hoe de execute methode werkt en wat deze exact doet. Ik vind op google hier niet al te veel info over... Hopelijk kunnen jullie helpen...

Dit is de gelaagde architectuur die we hanteren:

Afbeeldingslocatie: http://users.telenet.be/jeetn86/gelaagdeArchitectuur.JPG

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

• Open je project in je IDE
• Zet een breakpoint op de methode die je wil inspecten
• Run je class in debug mode
• Aanschouw de stack trace?

Stop uploading passwords to Github!


  • jeetn
  • Registratie: April 2006
  • Laatst online: 16-10-2024
De events moeten nog geschreven worden. Daarom dat ik deze vraag stel...

Ik moet dus nog de execute methode schrijven, maar weet niet wat daarin moet worden geschreven en wat die methode exact doet...

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Hoe het niet moet, staat hier uitgelegd.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 19:04

voodooless

Sound is no voodoo!

Misschien kun je je verhaal en vraag iets meer verduidelijken?

Normaalgesproken loop je gewoon alle listeners af en voer je dar hun event receive methode uit.

[ Voor 44% gewijzigd door voodooless op 18-02-2008 10:33 ]

Do diamonds shine on the dark side of the moon :?


  • jeetn
  • Registratie: April 2006
  • Laatst online: 16-10-2024
Eum...

Het is dus de 1ste keer dat we een project in JAVA maken. We werken OO en met bovenstaand model van de gelaagde architectuur. Het is bovendien een web-applicatie die we moeten ontwikkelen, waarschijnlijk een belangrijk detail dat ik ben vergeten te vermelden...

De events worden aangeroepen door de functies en de functies worden op hun beurt aangeroepen door de GUI...

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 19:04

voodooless

Sound is no voodoo!

Tja, dat verhaal maakt het allemaal niet echt veel duidelijker imho.

Misschien even een concreet voorbeeld van zo'n event?

Do diamonds shine on the dark side of the moon :?


  • jeetn
  • Registratie: April 2006
  • Laatst online: 16-10-2024
Hieronder zie je een voorbeeld welke wij hanteren om onze events te schrijven. Dit voorbeeld staat in onze cursus OOA.

code:
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
/**
* Deze klasse is verantwoordelijk voor
* voor de uitvoering van het event
* uitlenen.
*/
public class UitlenenEvent
{
    //Attributen
    private LidBag lener;
    private ExemplaarBag ex;
    private UitleningBag uitl;
    private int errorcode = -1;

    /**
    * Constructor
    * een UitleningBag cre˜Aren met
    * datumUitlening = vandaag
    * datumMoetTerug = vandaag + 3 weken
    * id = uId
    * exId = e.getId;
    * lenerId = lener.getId;
    * lener = l
    * ex = e
    * @param l Het lid betrokken bij de uitlening.
    * @param e Het exemplaar dat uitgeleend wordt.
    * @param vandaag De huidige datum.
    * @param uId Id van de uitlening (is uniek).
    */
    public UitlenenEvent(
    LidBag l, ExemplaarBag e,
    Datum vandaag, ObjectId uId)
    {
    // ...
    }
    /**
    * Testen van de precondities:
    * Is het exemplaar uitleenbaar?
    * Heeft het lid minder dan vijf uitleningen?
    * @return errorcode
    * 0 : alle precondities vervuld;
    * 201: exemplaar niet in status uitleenbaar;
    * 202: lid heeft al vijf uitleningen.
    */
    public int validate()
    {
        if (ex.getStatus().getStatusValue() <> ExemplaarStatus.UITLEENBAAR)
        {
            return 201;
        }
        else
        {
            if (lener.getAantalUitleningen >= 5)
            {
                return 202;
            }
            else
            {
                return 0;
            }
        }
    }
    /**
    * @pre errorcode = 0;
    * uitvoeren van het event:
    * status exemplaar op "uitgeleend"
    * aantalUitleningen bij lener met een verhogen
    *
    */
    execute()
    {
    // code voor uitvoering event
    }
    /**
    * @return UitleningBag die bij de uitvoering
    * van constuctor gecre\"eerd werd.
    */
    public UitleningBag getUitlening()
    {
        return uitl;
    }
    /**
    * @return ExemplaarBag betrokken bij
    * deze uitlening.
    */
    public ExemplaarBag getExemplaar()
    {
        return ex;
    }
    /**
    * @return LidBag betrokken bij deze
    * uitlening
    */

    public LidBag getLid()
    {
    return lener;
    }
    /**
    *
    * @return int errorcode
    */
    public int getErrorcode()
    {
        return errorcode;
    }
}

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 19:04

voodooless

Sound is no voodoo!

Vreemd... je zou toch verwachten dat een Event een of andere interface implementeert of dat er een abstracte superclasse is, aangezien ik aanneem dat methoden als execute() en getErrorcode() generiek zijn voor alle events.

Verder zien we zien we nu een event (voor zover je dat een event kunt noemen)... Maar dan? Je moet dus een manier hebben om deze vanuit de GUI aan te roepen? Lijkt me niet zo lastig toch?

[ Voor 5% gewijzigd door voodooless op 18-02-2008 11:41 ]

Do diamonds shine on the dark side of the moon :?


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 20-11 09:15

NetForce1

(inspiratie == 0) -> true

in de methode body van execute() zal je dus code moeten plaatsen die doet wat beschreven is in de javadoc.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * @pre errorcode = 0;
 * uitvoeren van het event:
 * status exemplaar op "uitgeleend"
 * aantalUitleningen bij lener met een verhogen
 *
 */
execute() {
    if (errorcode != 0) {
        throw new IllegalStateException() //of iets dergelijks
    }
    // zet status van exemplaar op uitgeleend
    // verhoog aantal uitleningen bij lener
}

Maargoed, dit is wel heel erg basic, misschien nog even babbelen met je docent ofzo?

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 20-11 09:31
Als ik jouw model bekijk dan zou ik het eerder commands noemen dan events (Command pattern).
Tenminste, ik kan mij voorstellen dat de GUI events dispatched die worden afgevangen in een controller klasse (die jouw input functies bundeld voor een bepaald GUI component?). Die controller voert vervolgens commands uit die (hoofdzakelijk) het model (jouw databags?) manipuleren.
Eventueel kan je dan een history van uitgevoerde commands bijhouden en zo undo/redo/macro functionaliteit inbouwen.

  • jeetn
  • Registratie: April 2006
  • Laatst online: 16-10-2024
FallenAngel666 schreef op maandag 18 februari 2008 @ 11:32:
Als ik jouw model bekijk dan zou ik het eerder commands noemen dan events (Command pattern).
Tenminste, ik kan mij voorstellen dat de GUI events dispatched die worden afgevangen in een controller klasse (die jouw input functies bundeld voor een bepaald GUI component?). Die controller voert vervolgens commands uit die (hoofdzakelijk) het model (jouw databags?) manipuleren.
Eventueel kan je dan een history van uitgevoerde commands bijhouden en zo undo/redo/macro functionaliteit inbouwen.
Zou het mogelijk zijn om hier een concreet voorbeeld van te geven?

  • momania
  • Registratie: Mei 2000
  • Laatst online: 00:01

momania

iPhone 30! Bam!

jeetn schreef op maandag 18 februari 2008 @ 11:46:
[...]


Zou het mogelijk zijn om hier een concreet voorbeeld van te geven?
Gewoon basic MVC voorbeelden zoeken. ;)

Neem je whisky mee, is het te weinig... *zucht*


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 19:04

voodooless

Sound is no voodoo!

Ik denk dat je beter naar een heel ander model kan als je met web gui's werkt. Ik zou eerst eens even uitzoeken hoe dat in zijn werk gaat voordat je in het diepe duikt.

Do diamonds shine on the dark side of the moon :?


  • jeetn
  • Registratie: April 2006
  • Laatst online: 16-10-2024
FallenAngel666 schreef op maandag 18 februari 2008 @ 11:32:
Als ik jouw model bekijk dan zou ik het eerder commands noemen dan events (Command pattern).
Tenminste, ik kan mij voorstellen dat de GUI events dispatched die worden afgevangen in een controller klasse (die jouw input functies bundeld voor een bepaald GUI component?). Die controller voert vervolgens commands uit die (hoofdzakelijk) het model (jouw databags?) manipuleren.
Eventueel kan je dan een history van uitgevoerde commands bijhouden en zo undo/redo/macro functionaliteit inbouwen.
Bij ons is het zo dat de GUI een inputfunctie dispatched die wordt afgevangen door een event. Dat event gaat dan vervolgens onze databags gaan manipuleren.

Dan is mijn vraag: Hoe kan ik ervoor zorgen dat ons event die databags gaat manipuleren?? Hoe moet ik dat doen? Hoe schrijf ik dat in code?

In uw geval zou et zijn: Hoe gaan die commands het model manipuleren?

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 19:04

voodooless

Sound is no voodoo!

Zoals je altijd een database manipuleert... Door middel van een JDBC koppeling of een of ander framework daaromheen.

Do diamonds shine on the dark side of the moon :?

Pagina: 1