Thread View: be.comp.programming
11 messages
11 total messages
Started by Passero
Thu, 11 Mar 2004 18:02
vraagje over een ontwerp
Author: Passero
Date: Thu, 11 Mar 2004 18:02
Date: Thu, 11 Mar 2004 18:02
23 lines
2442 bytes
2442 bytes
we zijn bezig met een project met een programma te schrijven voor ons project van school. Dat programma moet klimatogrammen tekenen aan de hand van de gegevens die de gebruiker ingeeft. Hij moet ook gegevens kunnen importeren uit tekstfiles enzo. Wij hebben nu discussie gehad met onze docenten over het domeinmodel. In onze boek (Applying uml and patterns van Craig Larman) staat dat een domeinmodel enkel de conceptuele klassen zijn dus die hebben niets te maken met de GUI. Moet je die grens altijd strikt gescheiden houden of kan je daar over gaan? In ons geval vind ik het wel nuttig om in ons domeinmodel de klasse Grafiek in op te nemen. Later moeten we dan een package "Domein" maken waar die klasse implementeren. De klasse grafiek hebben we nu al geschreven en erft van een JPAnel in Java, dus is eigenlijk wel een beetje GUI. Mijn argumentatie is: je hebt toch geen klimatogram zonder grafiek dus die 2 dingen horen samen dus hoort het toch wel bij het domein en niet bij de gui. Mijn docenten willen nu dat ik die loskoppel van mijn domein. Dat is op zich niet veel werk maar kdenk toch dat mijn denkwijze relatief goed is. Daarom graag eens jullie mening hierover. --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.600 / Virus Database: 381 - Release Date: 28/02/2004
Re: vraagje over een ontwerp
Author: Edwin Martin
Date: Thu, 11 Mar 2004 20:05
Date: Thu, 11 Mar 2004 20:05
35 lines
3067 bytes
3067 bytes
Passero wrote: > we zijn bezig met een project met een programma te schrijven voor ons > project van school. Dat programma moet klimatogrammen tekenen aan de hand > van de gegevens die de gebruiker ingeeft. Hij moet ook gegevens kunnen > importeren uit tekstfiles enzo. > Wij hebben nu discussie gehad met onze docenten over het domeinmodel. In > onze boek (Applying uml and patterns van Craig Larman) staat dat een > domeinmodel enkel de conceptuele klassen zijn dus die hebben niets te maken > met de GUI. Moet je die grens altijd strikt gescheiden houden of kan je daar > over gaan? In ons geval vind ik het wel nuttig om in ons domeinmodel de > klasse Grafiek in op te nemen. Later moeten we dan een package "Domein" > maken waar die klasse implementeren. De klasse grafiek hebben we nu al > geschreven en erft van een JPAnel in Java, dus is eigenlijk wel een beetje > GUI. Mijn argumentatie is: je hebt toch geen klimatogram zonder grafiek dus > die 2 dingen horen samen dus hoort het toch wel bij het domein en niet bij > de gui. Mijn docenten willen nu dat ik die loskoppel van mijn domein. Dat is > op zich niet veel werk maar kdenk toch dat mijn denkwijze relatief goed is. > Daarom graag eens jullie mening hierover. Als de opdracht is om de grafiek en de GUI los van elkaar te maken, dan zou ik dat ook doen. Dat is ook het principe van OO-programmeren: "eilandjes" (classes) maken binnen je programma, die met weinig lijnen (method-calls/members) met elkaar zijn verbonden. Om een voorbeeld te geven waar jouw methode de fout in gaat: stel dat de gebruiker een grafiek wil laten tekenen op een webserver waar helemaal geen GUI voorhanden is, om het resultaat in een HTML-pagina op te nemen? Groeten, Edwin Martin -- http://www.bitstorm.org/
Re: vraagje over een ontwerp
Author: John Bokma
Date: Thu, 11 Mar 2004 20:47
Date: Thu, 11 Mar 2004 20:47
15 lines
1897 bytes
1897 bytes
Edwin Martin wrote: > Om een voorbeeld te geven waar jouw methode de fout in gaat: stel dat de > gebruiker een grafiek wil laten tekenen op een webserver waar helemaal > geen GUI voorhanden is, om het resultaat in een HTML-pagina op te nemen? Dat geeft dus, met Java, in de praktijk inderdaad een probleem, omdat bijvoorbeeld font render informatie van de X server verkregen wordt. Een oplossing die ik in het verleden gebruikt heb is dingen omleiden naar een library die dit ondervangt (uiteraard niet allemaal zelf geschreven) -- John Freelance Perl / Java developer available - Mail for more info
Re: vraagje over een ontwerp
Author: Rudi Angela
Date: Fri, 12 Mar 2004 08:50
Date: Fri, 12 Mar 2004 08:50
36 lines
3313 bytes
3313 bytes
In <RQ14c.31002$_L6.2008369@phobos.telenet-ops.be> Passero wrote: > we zijn bezig met een project met een programma te schrijven voor ons > project van school. Dat programma moet klimatogrammen tekenen aan de > hand van de gegevens die de gebruiker ingeeft. Hij moet ook gegevens > kunnen importeren uit tekstfiles enzo. Wij hebben nu discussie gehad > met onze docenten over het domeinmodel. In onze boek (Applying uml and > patterns van Craig Larman) staat dat een domeinmodel enkel de > conceptuele klassen zijn dus die hebben niets te maken met de GUI. > Moet je die grens altijd strikt gescheiden houden of kan je daar over > gaan? In ons geval vind ik het wel nuttig om in ons domeinmodel de > klasse Grafiek in op te nemen. Later moeten we dan een package > "Domein" maken waar die klasse implementeren. De klasse grafiek hebben > we nu al geschreven en erft van een JPAnel in Java, dus is eigenlijk > wel een beetje GUI. Mijn argumentatie is: je hebt toch geen > klimatogram zonder grafiek dus die 2 dingen horen samen dus hoort het > toch wel bij het domein en niet bij de gui. Mijn docenten willen nu > dat ik die loskoppel van mijn domein. Dat is op zich niet veel werk > maar kdenk toch dat mijn denkwijze relatief goed is. Daarom graag eens > jullie mening hierover. Iedere klasse die erft van JPanel of andere wijze gestoeld is op de Swing GUI moet uit het domeinmodel gehouden worden. Het moet voor jou domeinmodel niet uitmaken of hij nou wordt aangestuurd vanuit een Swing GUI of bijv. vanaf de command line of mogelijk zelfs vanuit een script. Een domeinmodel bevat de abstracte kennis over een domein. Ik kan mij in het domein van klimatogrammen een Grafiek-klasse voorstellen waarin alle algemene kennis van grafieken is ondergebracht (bijv. bepaling van maximum, minimum, interpolatie, etc), zonder die klasse afhankelijk te maken van specifieke GUI-klassen. Oftewel, het concept grafiek is zelf abstract (het bestond immers lang voor Swing, Java of enige programmeertaal). Ik zou voorstellen om in het domein een Grafiek-klasse op te nemen zonder enige UI afhankelijkheid, en in de UI een klasse GrafiekPanel die weet hoe hij een grafiek op het scherm zet. Rudi Angela
Re: vraagje over een ontwerp
Author: Koen
Date: Fri, 12 Mar 2004 13:45
Date: Fri, 12 Mar 2004 13:45
20 lines
1932 bytes
1932 bytes
"Passero" <bla@bla.bla> wrote in message news:<RQ14c.31002$_L6.2008369@phobos.telenet-ops.be>... > Mijn argumentatie is: je hebt toch geen klimatogram zonder grafiek dus > die 2 dingen horen samen dus hoort het toch wel bij het domein en niet bij > de gui. Mijn docenten willen nu dat ik die loskoppel van mijn domein. Dat is > op zich niet veel werk maar kdenk toch dat mijn denkwijze relatief goed is. > Daarom graag eens jullie mening hierover. Ik zou het loskoppelen, en dit is waarschijnlijk ook de bedoeling van de opdracht van je leraar. Wanneer je de GUI en het model gescheiden houdt is het eenvoudig om je grafiek in een ander formaat te laten zien, of in verschillende formaten tegelijk. Wanneer je klasse Grafiek ook 'zichzelf tekent' wordt dit een stuk moeilijker. Daarom is het erg gebruikelijk in OO om het model en de GUI in verschillende klassen te stoppen. Je zou eens wat kunnen opzoeken over het 'model-view-controller' paradigma. succes, - Koen.
Re: vraagje over een ontwerp
Author: Passero
Date: Fri, 12 Mar 2004 18:35
Date: Fri, 12 Mar 2004 18:35
36 lines
3031 bytes
3031 bytes
"Rudi Angela" <olmeca@netscape.net> schreef in bericht news:20040312095007220+0100@aruba.etowns.net... > Iedere klasse die erft van JPanel of andere wijze gestoeld is op de > Swing GUI moet uit het domeinmodel gehouden worden. Het moet voor jou > domeinmodel niet uitmaken of hij nou wordt aangestuurd vanuit een Swing > GUI of bijv. vanaf de command line of mogelijk zelfs vanuit een script. > Een domeinmodel bevat de abstracte kennis over een domein. Ik kan mij in > het domein van klimatogrammen een Grafiek-klasse voorstellen waarin alle > algemene kennis van grafieken is ondergebracht (bijv. bepaling van > maximum, minimum, interpolatie, etc), zonder die klasse afhankelijk te > maken van specifieke GUI-klassen. Oftewel, het concept grafiek is zelf > abstract (het bestond immers lang voor Swing, Java of enige > programmeertaal). > Ik zou voorstellen om in het domein een Grafiek-klasse op te nemen > zonder enige UI afhankelijkheid, en in de UI een klasse GrafiekPanel die > weet hoe hij een grafiek op het scherm zet. > Ok bedankt, ik zal dat doen. Ik zal nu een nieuwe klasse maken in mijn domeinmodel die enkel de niet gui elementen bijhoudt. Ik zal dan een implementatie maken van die klasse en die abstract maken zodat wanneer je een gui wil maken je die klasse moet laten erven van de grafiek. Als je dan een grafiek in de commandline wil maken kan je gewoon een andere klasse maken die ook erft van de abstracte klasse. Zo hoef je de veel gebruikte methode zoals gemiddelde berekenen enzo niet meer implementeren want die hebben niets te maken met de gui. Zou dat een goed idee zijn? > Rudi Angela --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.600 / Virus Database: 381 - Release Date: 28/02/2004
Re: vraagje over een ontwerp
Author: Koen Hautekeete
Date: Fri, 12 Mar 2004 18:45
Date: Fri, 12 Mar 2004 18:45
27 lines
2545 bytes
2545 bytes
Passero wrote: > "Rudi Angela" <olmeca@netscape.net> schreef in bericht > news:20040312095007220+0100@aruba.etowns.net... > > [...] > > > Ok bedankt, ik zal dat doen. Ik zal nu een nieuwe klasse maken in mijn > domeinmodel die enkel de niet gui elementen bijhoudt. Ik zal dan een > implementatie maken van die klasse en die abstract maken zodat wanneer je > een gui wil maken je die klasse moet laten erven van de grafiek. Als je dan > een grafiek in de commandline wil maken kan je gewoon een andere klasse > maken die ook erft van de abstracte klasse. Zo hoef je de veel gebruikte > methode zoals gemiddelde berekenen enzo niet meer implementeren want die > hebben niets te maken met de gui. Zou dat een goed idee zijn? Ik zou hier eerder composition toepassen ipv inheritance. Als je in een bepaalde situatie nood hebt aan een Grafiek object dan maak je hiervan een instantie aan. bvb een GrafiekPanel, afgeleid van JPanel met als field een Grafiek object. Indien je inheritance toepast ga je de twee(gui en business logic) toch weer op een bepaalde manier met elkaar vermengen. Koen
Re: vraagje over een ontwerp
Author: Passero
Date: Fri, 12 Mar 2004 19:12
Date: Fri, 12 Mar 2004 19:12
33 lines
2872 bytes
2872 bytes
"Koen Hautekeete" <koen.hautekeete.news@pandora.be> schreef in bericht news:wzn4c.32180$b%6.2058340@phobos.telenet-ops.be... > > Ik zou hier eerder composition toepassen ipv inheritance. Als je in een > bepaalde situatie nood hebt aan een Grafiek object dan maak je hiervan > een instantie aan. bvb een GrafiekPanel, afgeleid van JPanel met als > field een Grafiek object. Indien je inheritance toepast ga je de > twee(gui en business logic) toch weer op een bepaalde manier met elkaar > vermengen. > Aja, dus gewoon in mijn GUI klasse een attribuut opnemen van de klasse Grafiek? Verlies ik niet zo een beetje het idee van inkapseling? De GUI klasse moet alles kennen wat in de klasse Grafiek zit dus voor elk attribuut ga ik een getter en/of setter moeten schrijven. Is dat wel handig? Is het dan niet gewoon beter om te erven en om een attribuut JPanel te gebruiken en dan een methode voorzien die dat JPAnel retourneert? Mijn klasse Grafiek is dan toch nog altijd compleet onafhankelijk van mijn GUI want er zal geen enkele methode zijn die met de GUI te maken heeft. Enkel de berekeningen en de lijsten met waarden zullen er in die klasse zijn. Uiteindelijk moet mijn gui klasse ook al die dingen kennen dus dan heb ik toch hoge koppeling, zeer hoge koppeling en das toch niet zo goed? > Koen --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.600 / Virus Database: 381 - Release Date: 28/02/2004
Re: vraagje over een ontwerp
Author: Koen Hautekeete
Date: Fri, 12 Mar 2004 19:33
Date: Fri, 12 Mar 2004 19:33
58 lines
4124 bytes
4124 bytes
Passero wrote: > "Koen Hautekeete" <koen.hautekeete.news@pandora.be> schreef in bericht > news:wzn4c.32180$b%6.2058340@phobos.telenet-ops.be... > > >>Ik zou hier eerder composition toepassen ipv inheritance. Als je in een >>bepaalde situatie nood hebt aan een Grafiek object dan maak je hiervan >>een instantie aan. bvb een GrafiekPanel, afgeleid van JPanel met als >>field een Grafiek object. Indien je inheritance toepast ga je de >>twee(gui en business logic) toch weer op een bepaalde manier met elkaar >>vermengen. >> > > > Aja, dus gewoon in mijn GUI klasse een attribuut opnemen van de klasse > Grafiek? Inderdaad. > Verlies ik niet zo een beetje het idee van inkapseling? De GUI klasse moet > alles kennen wat in de klasse Grafiek zit dus voor elk attribuut ga ik een > getter en/of setter moeten schrijven. Enkel voor de velden die je wil tonen (of "mogen" getoond worden aan de gebruiker) in je GUI een getter, een setter is niet direct noodzakelijk. > Is dat wel handig? Is het dan niet > gewoon beter om te erven en om een attribuut JPanel te gebruiken en dan een > methode voorzien die dat JPAnel retourneert? Mijn klasse Grafiek is dan toch > nog altijd compleet onafhankelijk van mijn GUI want er zal geen enkele > methode zijn die met de GUI te maken heeft. De klasse Grafiek is even onafhankelijk van de GUI als je ze gebruikt in een Panel klasse. Er zal geen enkele method op voorkomen die met de GUI te maken heeft. > Enkel de berekeningen en de > lijsten met waarden zullen er in die klasse zijn. Uiteindelijk moet mijn gui > klasse ook al die dingen kennen dus dan heb ik toch hoge koppeling, zeer > hoge koppeling en das toch niet zo goed? Je GUI-klasse mag die zaken niet kennen, dat is de verantwoordelijkheid van de klasse Grafiek. De GUI kan de klasse Grafiek wel gebruiken om de resultaten ervan te tonen, bvb de waarden tonen die door Grafiek berekend zijn of input van de gebruiker doorgeven aan Grafiek om de Grafiek instantie vervolgens berekeningen te laten uitvoeren. Je kan dit oplossen door bvb gebruik te maken van het Observer pattern zodat de gui automatisch verwittigt wordt als het grafiek object wijzigt en zichzelf dan automatisch update. Een goed boek over oa deze problematiek is Design patterns van "The gang of four" of Refactoring van Martin Fowler. Groeten Koen
Re: vraagje over een ontwerp
Author: Gerrit Cornelis
Date: Fri, 12 Mar 2004 19:46
Date: Fri, 12 Mar 2004 19:46
51 lines
3470 bytes
3470 bytes
"Passero" <bla@bla.bla> wrote in message news:8Yn4c.32247$Jq.2162811@phobos.telenet-ops.be... > > "Koen Hautekeete" <koen.hautekeete.news@pandora.be> schreef in bericht > news:wzn4c.32180$b%6.2058340@phobos.telenet-ops.be... > > Aja, dus gewoon in mijn GUI klasse een attribuut opnemen van de klasse > Grafiek? > Verlies ik niet zo een beetje het idee van inkapseling? Neen want met inheritance is er totaal geen inkapseling. Daar geef je de hele klasse open en bloot. > De GUI klasse moet > alles kennen wat in de klasse Grafiek zit dus voor elk attribuut ga ik een > getter en/of setter moeten schrijven. Merk even het verschil op: de GUI klasse moet helemaal niet alles kennen wat je grafiek klasse kent maar het moet wel aan alle waardes aankunnen. Je Domeinklasse berekent, de GrafiekUI klasse tekent. Dat zijn 2 fundamenteel verschillende dingen. Je gaat helemaal geen code duplicatie hebben. Verantwoordelijkheden: Domeinklasse : de berekingen etc GUIklasse : waardes op een bepaalde manier op een scherm brengen Is dat wel handig? Is het dan niet > gewoon beter om te erven en om een attribuut JPanel te gebruiken en dan een > methode voorzien die dat JPAnel retourneert? Mijn klasse Grafiek is dan toch > nog altijd compleet onafhankelijk van mijn GUI want er zal geen enkele > methode zijn die met de GUI te maken heeft. Enkel de berekeningen en de > lijsten met waarden zullen er in die klasse zijn. Uiteindelijk moet mijn gui > klasse ook al die dingen kennen dus dan heb ik toch hoge koppeling, zeer > hoge koppeling en das toch niet zo goed? Er bestaat geen hogere koppeling in OO dan inheritance, compositie is altijd minder gekoppeld dan inheritance. hoe gaat je interface naar je JPanel attribuut er uit zien, denk je? ga je veel van de interface van een JPanel moeten gebruiken of weinig? Een sterke koppeling naar een interface is niet perse slecht. Zeker voor klassen die verantwoordelijk zijn om een bepaald iets op het scherm te brengen is het te verwachten dat ze alle attributen van die domein klasse gebruiken. gC
Re: vraagje over een ontwerp
Author: Passero
Date: Fri, 12 Mar 2004 20:08
Date: Fri, 12 Mar 2004 20:08
70 lines
4458 bytes
4458 bytes
"Koen Hautekeete" <koen.hautekeete.news@pandora.be> schreef in bericht news:5go4c.32289$Pf2.2296964@phobos.telenet-ops.be... > > > > Aja, dus gewoon in mijn GUI klasse een attribuut opnemen van de klasse > > Grafiek? > > Inderdaad. > > > Verlies ik niet zo een beetje het idee van inkapseling? De GUI klasse moet > > alles kennen wat in de klasse Grafiek zit dus voor elk attribuut ga ik een > > getter en/of setter moeten schrijven. > > Enkel voor de velden die je wil tonen (of "mogen" getoond worden aan de > gebruiker) in je GUI een getter, een setter is niet direct noodzakelijk. > > > Is dat wel handig? Is het dan niet > > gewoon beter om te erven en om een attribuut JPanel te gebruiken en dan een > > methode voorzien die dat JPAnel retourneert? Mijn klasse Grafiek is dan toch > > nog altijd compleet onafhankelijk van mijn GUI want er zal geen enkele > > methode zijn die met de GUI te maken heeft. > > De klasse Grafiek is even onafhankelijk van de GUI als je ze gebruikt in > een Panel klasse. Er zal geen enkele method op voorkomen die met de > GUI te maken heeft. > > > Enkel de berekeningen en de > > lijsten met waarden zullen er in die klasse zijn. Uiteindelijk moet mijn gui > > klasse ook al die dingen kennen dus dan heb ik toch hoge koppeling, zeer > > hoge koppeling en das toch niet zo goed? > > Je GUI-klasse mag die zaken niet kennen, dat is de verantwoordelijkheid > van de klasse Grafiek. De GUI kan de klasse Grafiek wel gebruiken om de > resultaten ervan te tonen, bvb de waarden tonen die door Grafiek > berekend zijn of input van de gebruiker doorgeven aan Grafiek om de > Grafiek instantie vervolgens berekeningen te laten uitvoeren. > > Je kan dit oplossen door bvb gebruik te maken van het Observer pattern > zodat de gui automatisch verwittigt wordt als het grafiek object wijzigt > en zichzelf dan automatisch update. > > Een goed boek over oa deze problematiek is Design patterns van "The gang > of four" of Refactoring van Martin Fowler. > Heel boeiende materie vind ik persoonlijk ;) Het probleem is dat ik moeilijk al die patterns kan implementeren in het project. We zijn tijd gebonden en ik moet al 2 pattersn uitwerken voor mijn opdracht voor ontwerp + nog eens dit project met de grafiek. We moeten het adapter pattern bespreken voor het importeren en exporteren van de klimatogramgegevens naar bestanden en het iterator pattern voor het doorlopen van de klimatogrammanen. Als ik daarbij nog eens observer moet leren en implementeren sla ik volledig tilt denk ik ;). Kzal maken dak het ken tegen volgend jaar, dan kan ik het mss gebruiken voor ons project :d. > Groeten > > Koen --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.600 / Virus Database: 381 - Release Date: 28/02/2004
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads