PDA

Volledige versie bekijken : Programmeren



Qualistor
23 mei 2004, 14:57
helloooooooooow,

kweet nie ofdat het hier thuishoort, maar kheb een probleem in java
dit is de opgave die ik gekregen heb, maar kweet nie oedak er moet aan beginnen :(

" Ontwerp een programma om twee compexe getallen in te lezen dmv invoervakjes,bewerkingen (+,-,*,/ de kiezen door overeenkomstige drukknoppen) en het resultaat uit te lezen .
De twee complexe getallen zijn een instaniering van de klasse Complex, die je zelf ontwerpt. "

iemand die me kan helpen??
kzou je alvast enorm dankbaar zijn

grtzzzz

russian
23 mei 2004, 15:03
Je kan misschien concrete vragen stellen in de plaats van te bedelen naar de oplossing :naughty: . Het is een eenvoudige oefening, maar ik heb momenteel geen tijd om ze op te lossen (examens).

Je kan misschien beginnen met een Klasse ComplexGetal te schrijven die het reële en het imaginaire deel van een complex getal bijhoudt (twee variabelen). Definieer hiervoor een aantal basisfuncties (tel twee getallen op,..,.. .). Ten slotte schrijf je een GUI in swing die de vereisten implementeert door de voorheen gedefinieerde functies aan te roepen.
Instantiëring: de twee getallen zijn twee objecten van de klasse ComplexGetal.
Het is misschien verstandig om gebruik te maken van een grafische compiler (aanmaken van een project).

De klasse Complex:

class Complex {
private int re; // alleen toegankelijk binnen deze klasse
private int im;

public Complex() { // openbaar
re = 0;
im = 0;
}

public Complex( double a, double b) {
re = a;
im = b;
}

public void optel(Complex a) {
re += a.re;
im += a.im;
}

// Omdat de datamembers zijn afgeschermd, is de functie toString nodig
// om de gegevens af te drukken
public String toString() {
return (String.valueOf(re) + " + j" + String.valueOf(im) );
}

}

Qualistor
23 mei 2004, 15:10
Je kan misschien concrete vragen stellen in de plaats van te bedelen naar de oplossing :naughty: . Het is een eenvoudige oefening, maar ik heb momenteel geen tijd om ze op te lossen (examens).

Je kan misschien beginnen met een Klasse ComplexGetal te schrijven die het reële en het imaginaire deel van een complex getal bijhoudt (twee variabelen). Definieer hiervoor een aantal basisfuncties (tel twee getallen op,..,.. .). Ten slotte schrijf je een GUI in swing die de vereisten implementeert door de voorheen gedefinieerde functies aan te roepen.

sorry m'n vraag is niet om de gehele oplossing te krijgen hoor ..
kheb wat hulp nodig bij het maken van die klasse ComplexGetal ..

kheb 2 tekstvakjes per complex getal, een vakje reeel & een vakje imaginair ..
maar hoe kan ik die getallen in de klasse stoppen om ermee te rekenen?
met Get.Text mss, maar hoe reken je er dan mee??

alvast bedankt voor m'n vele vragen

russian
23 mei 2004, 15:15
sorry m'n vraag is niet om de gehele oplossing te krijgen hoor ..
kheb wat hulp nodig bij het maken van die klasse ComplexGetal ..

kheb 2 tekstvakjes per complex getal, een vakje reeel & een vakje imaginair ..
maar hoe kan ik die getallen in de klasse stoppen om ermee te rekenen?
met Get.Text mss, maar hoe reken je er dan mee??

alvast bedankt voor m'n vele vragen

Inderdaad, je kan de invoer tekstueel opvragen. Vervolgens zet je die met een gepaste functie (java.sun tutorial) om naar het type double. Initialiseer dan een nieuw object Complex NieuwGetal(re,im). Re en im zijn de invoer (tekst die je hebt omgezet naar een double). Vervolgens pas je de gepaste functies toe.
De opgave peilt naar de orde en structuur van programmeren. Let hier op!

Qualistor
23 mei 2004, 15:21
thx, je hebt me goed op weg geholpen ..
verstond het principe nie goed ivm die private, maar na uw stukje eens te ontleden begin ik het te snappen ;)

merci voor de hulp é
grtzzz

russian
23 mei 2004, 15:24
thx, je hebt me goed op weg geholpen ..
verstond het principe nie goed ivm die private, maar na uw stukje eens te ontleden begin ik het te snappen ;)

merci voor de hulp é
grtzzz
Ik ben een liefhebber van C++, mijn Java kennis is eerder beperkt.
Een belangrijk punt bij OO (object oriented) programmeren is belangrijke data verbergen (data hiding). Dit gebeurt door data private te maken. Zodoende kan je enkel impliciet (via een functie) aan de gevoelige data. Het is vaak gevaarlijk om gevoelige data publiek te maken. Indien je dit toch zou doen kan je uw imaginair deel bijvoorbeeld benaderen door NieuwGetal.im te gebruiken. Echter af te raden...

russian
23 mei 2004, 15:26
merci voor de hulp é
grtzzz

Awel ik heb een nieuw horloge nodig :D :D :D .

Qualistor
23 mei 2004, 15:32
...

public Complex( ) { // openbaar
re = 0;
im = 0;
}

public Complex( double a1, double b1) {
re = a1;
im = b1;
}

public Complex( double a2, double b2) {
re = a2;
im = b2;
}

public void optel(Complex a) { // en hier zit ik vast ????
re += a.re;
im += a.im;
}
}


...
mss een stomme fout ofzo dunnow .. maar ben nog maar nieuweling :(

grtzzz

...



als je dus wilt optellen van 2 complexe getallen, dan ik heb ik 4 vakjes, dus van die vier vakjes maak ik een double ..
bekom ik dan zoiets??

QplQyer
23 mei 2004, 15:36
Double.parseDouble(String s) zal hier dan wel van pas komen om van String naar double om te zetten dus, in case you haven't found that out yet :)

*edit* lees net je post hierboven, ik snap niet waarom je twee constructors staan hebt met dezelfde argumenten, dat gaat prob niet compilen.

Qualistor
23 mei 2004, 15:37
Double.parseDouble(String s) zal hier dan wel van pas komen om van String naar double om te zetten dus, in case you haven't found that out yet :)

jup da zit er al in ..

thx ;)

grtz

QplQyer
23 mei 2004, 15:44
..

public Complex( ) { // openbaar
re = 0;
im = 0;
}

public Complex( double a1, double b1) {
re = a1;
im = b1;
}

public Complex( double a2, double b2) {
re = a2;
im = b2;
}

public void optel(Complex a) { // en hier zit ik vast ????
re += a.re;
im += a.im;
}
}


...
mss een stomme fout ofzo dunnow .. maar ben nog maar nieuweling

grtzzz

...


dus zoals in mijn vorige post zijn edit: die twee constructors met dezelfde argumenten, dat gaat niet gaan, je hebt maar één constructor nodig voor je klasse hé.

je doet dan iets als:

-de string omzetten naar double van 't eerste complexe getal en ook omzetten van het tweede, je slaat ze op in vakje1 tem vakje4)
en dan:

Complex complex1=new Complex(double vakje1,double vakje2)
Complex complex2=new Complex(double vakje3,double vakje4)
complex1.optel(complex2)

ik hoop dat dat kan helpen ofzo, ben nie zeker of je dit al had of niet :)

Qualistor
23 mei 2004, 15:58
hmmm .. die klasse's, gaat boven m'n petje .. kan nie echt volgen :(

dus ik lees de 4 getalletjes uit de tekstvakken, zet ze om naar double ..
maar nu om dat in die klasse te zetten en dermee te rekenen , da snap ik niet meer :s

grtz

russian
23 mei 2004, 16:08
hmmm .. die klasse's, gaat boven m'n petje .. kan nie echt volgen :(

dus ik lees de 4 getalletjes uit de tekstvakken, zet ze om naar double ..
maar nu om dat in die klasse te zetten en dermee te rekenen , da snap ik niet meer :s

grtz

Het is nochtans heel eenvoudig.

String zinEen, zinTwee;
zinEen = ...;
zinTwee = ...;

In het bovenstaande maak en initialiseer je twee objecten van de klasse (type) String. Je kan hier verschillende functies op toepassen (concat,...).
De klasse Complex volgt eenzelfde gedachtengang. Je definieert twee getallen van de klasse (type) Complex:

Complex cGetal1, cGetal2;
cGetal1 = combiantie van vakje 1 en vakje 2;
cGetal2 = combinatie van vakje 3 en vakje 4;

Hoe maak je nu een object van een klasse? Door zijn constructor aan te roepen, in dit geval Complex(a,b). Je roept voor elk nieuw object die constructor aan, dus het is overbodig verschillende constructoren aan te maken.

cGetal1 = new Complex(r1,i2);
cGetal2 = new Complex(r3,i4);
cGetal1.Optel(cGetal2);

cGetal1 bevat de oplossing.

russian
23 mei 2004, 16:15
Probeer het in eerste instantie te begrijpen, alvorens het te implementeren. Eventueel een eenvoudig voorbeeldje op het internet bestuderen die het klasse concept illustreert.

QplQyer
23 mei 2004, 16:16
Awel ehm hmmz hoe moet ik dat uitleggen.
Een klasse is een verzameling van verschillende objecten die dus gezamenlijke eigenschappen hebben.
Hier bijvoorbeeld is dit de verzameling van de complexe getallen.
De eigenschappen? men kan ze optellen, aftrekken, vermenigvuldigen en delen.
En het bestaat uit twee reeele getallen, imaginair en reeël deel.

Dus de gelijkenissen sla je op in een klasse, en ook de bewerkingen.

Een object van een klasse is een element van de verzameling, bv 3+5i, 0+7i, 5+0i, ..
Een object maak je door:

Complex mijncomplexgetal = new Complex();

te doen, new Complex() roept de constructor aan van de klasse.
Een constructor reserveert geheugenruimte en maakt je object, dat dus een element is van de verzameling, aan.

een constructor is een gewone functie, dus die kan argumenten bevatten, in dit geval zijn dat dus het reeele deel en het imaginaire deel, dus de constructor zal er zoiets achtigs uitzien:

public Complex(double reel, double imag)
{
this.reel=reel;
this.imag=imag;
}

die constructor slaat het reele deel op in een variabele en het imaginaire deel op in een variabele.

Dan kan je ook nog een functie optel definieren zoals je deed, dan krijg je:

optel(Complex complexgetal2)

deze functie is een bewerking over het veld van de complexe getallen als je het wiskundig uitdrukt en zou dus eigenlijk twee argumenten moeten hebben, namelijk:
complex1+complex2 -> f(complex1,complex2) (wiskundig uitgedrukt)

dit zou je kunnen doen met bv een static methode, dan kan je gewoon tikken:

Complex.optel(complex1,complex2)

complex1 en complex2 zijn dus twee objecten van je klasse, en de functie optel is een statische methode van je klasse.

of je kan het gewoon public en niet statisch maken, dan kan je de methode optel zo aanroepen:

complex1.optel(complex2)

dan roep je een methode aan van je object complex1, dat dus een object is van de klasse complex, dus je roep eigenlijk ook de methode optel aan van je klasse, dit is nu echter een dynamische functie.


Hmmz ik denk dat mijn uitleg enkel voor verwarring gaat zorgen, dus als je nog vragen hebt, stel ze maar, ik hoop dat ik klasse en object een beetje duidelijk heb uitgelegd?

wat je dus moet doen is:

een klasse Complex schrijven, en die klasse bevat:

twee variabelen voor het imaginaire en reele deel
een functie optel (al of niet statisch)
een constructor (om een object van die klasse aan te maken)

russian
23 mei 2004, 16:19
...

In mijn tijd bestond zo een hulp niet ze :D .

QplQyer
23 mei 2004, 16:22
In mijn tijd bestond zo een hulp niet ze :D .

hehe :)
ik denk alleen dat ik em meer ga verward hebben maar ja :)

Qualistor
23 mei 2004, 16:25
I'm reading ;)

mercie voor de hulp é gasten

grtzzzz

cram
23 mei 2004, 16:26
:niceone:
Je kan misschien concrete vragen stellen in de plaats van te bedelen naar de oplossing :naughty: . Het is een eenvoudige oefening, maar ik heb momenteel geen tijd om ze op te lossen (examens).

Je kan misschien beginnen met een Klasse ComplexGetal te schrijven die het reële en het imaginaire deel van een complex getal bijhoudt (twee variabelen). Definieer hiervoor een aantal basisfuncties (tel twee getallen op,..,.. .). Ten slotte schrijf je een GUI in swing die de vereisten implementeert door de voorheen gedefinieerde functies aan te roepen.
Instantiëring: de twee getallen zijn twee objecten van de klasse ComplexGetal.
Het is misschien verstandig om gebruik te maken van een grafische compiler (aanmaken van een project).

De klasse Complex:

class Complex {
private int re; // alleen toegankelijk binnen deze klasse
private int im;

public Complex() { // openbaar
re = 0;
im = 0;
}

public Complex( double a, double b) {
re = a;
im = b;
}

public void optel(Complex a) {
re += a.re;
im += a.im;
}

// Omdat de datamembers zijn afgeschermd, is de functie toString nodig
// om de gegevens af te drukken
public String toString() {
return (String.valueOf(re) + " + j" + String.valueOf(im) );
}

}

Ik snap erde ballen van wa da golle hier allemaal typt.Maar kvind het wel tof dat men elkaar hier helpt met elkaars taak.

russian
23 mei 2004, 16:37
:niceone:

Ik snap erde ballen van wa da golle hier allemaal typt.Maar kvind het wel tof dat men elkaar hier helpt met elkaars taak.
Ik twijfel er niet aan dat jij dat ook zou doen voor ons :unsure: :unsure: :unsure: .

Huiswerkforum :'(.

stoffer
23 mei 2004, 17:03
Het probleem dat ge hebt gaat waarschijnlijk het feit zijn dat ge met die textboxes enzo moet werken.
De klasse zelf is gewoon hetgeen hier al een paar keer staat.

Dit in een klasse stoppen:


TextField box_getal1;
public venster (String eventuele_uitkomst) {
String het_eerste_getal;
setLayout(new FlowLayout());
setTitle("Complexe getallen optellen");

addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

box_getal1 = new TextField();
add(url);
Button BTenter = new Button("Enter");
BTenter.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
getal1 = box_getal1.getText();
het_eerste_getal = querystring.prog(getal1);
}
});
add(BTenter);

Label Weergave = new Label(het_eerste_getal);
add(Weergave);

Button quit = new Button("Quit");
quit.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(e.getSource());
System.exit(0);
}
});
add(quit);

setSize(800,100);
setVisible(true);
}


Volgens mij zou dit stukske een vensterke moeten maken, daarin een textvak plaatsen, een enterknop een quitknop en wanneeer je op enter duwt zal het het getal van uw textbox tonen op een label.

wlibaers
23 mei 2004, 22:30
hehe :)
ik denk alleen dat ik em meer ga verward hebben maar ja :)


Als je dat soort dingen leuk vindt:
http://groups.google.be/groups?as_umsgid=clcm-20020319-0003@plethora.net
Op "Complete Thread" als je de antwoorden wil zien. Er zitten er heel wat grappige bij. Ik heb daar zelf een antwoord gestuurd dat wel correct is, maar dat toch bijna gegarandeerd een buis zou opleveren voor wie het inlevert :D

Of zoals Francis Glassborow het formuleert:

The only times we do homework is when we can do it in such a way that
your instructor will know that it was not your work. That amuses the
warped minds of some people here, but will be little help to you :-)

QplQyer
23 mei 2004, 22:36
Als je dat soort dingen leuk vindt:
http://groups.google.be/groups?as_umsgid=clcm-20020319-0003@plethora.net
Op "Complete Thread" als je de antwoorden wil zien. Er zitten er heel wat grappige bij. Ik heb daar zelf een antwoord gestuurd dat wel correct is, maar dat toch bijna gegarandeerd een buis zou opleveren voor wie het inlevert :D


Hehe inderdaad wel enkele grappige dingen tussen :)