Archief - Programmeren

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Qualistor

Legacy Member
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

Legacy Member
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

Legacy Member
!2u55!4n zei:
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

Legacy Member
Qualistor zei:
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

Legacy Member
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

Legacy Member
Qualistor zei:
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...

Qualistor

Legacy Member
...

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

Legacy Member
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

Legacy Member
QplQyer zei:
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

Legacy Member
Code:
.. 

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

Legacy Member
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

Legacy Member
Qualistor zei:
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

Legacy Member
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

Legacy Member
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)

cram

Legacy Member
:niceone:
!2u55!4n zei:
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

Legacy Member
cram zei:
: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 :'(.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan