[informatica] Java: signatuur van een functie

Moderators: ArcherBarry, Fuzzwood

Gebruikersavatar
Berichten: 768

Java: signatuur van een functie

Hallo iedereen,

Wat wordt bedoeld met de signatuur van een functie? Ik heb al gegoogled, maar daar geraak ik niet wijzer uit. We moeten een programma schrijven en er is ene klasse die alleen de signatuur van de functie bevat. Ik weet ondertussen al dat je de naam moet meegeven, maar ze zeggen ook iets van de argumenten. Wat bedoelen ze juist met die argumenten?
Het Wetenschapsforum heeft ook een facebook pagina!

Gebruikersavatar
Berichten: 2.609

Re: Java: signatuur van een functie

Bedoelen ze geen abstracte klasse/functie?

Gebruikersavatar
Berichten: 768

Re: Java: signatuur van een functie

neen, dit is het letterlijk gekopieerd:

9 Nulpunten van functies

Het is de bedoeling om in deze opgave een nulpunt van een ree ̈le functie in 1 ree ̈le variabele te vinden. Het algoritme om dit te realiseren wordt in de klasse Functie geprogrammeerd. Deze klasse zelf specificeert ech- ter niet de functie waarvan de nulpunten moeten gezocht worden. Ze bevat enkel de signatuur van de functie. Naast het zoeken van een nulpunt van een functie, bevat deze klasse bovendien methoden om de afgeleide van de functie in een willekeurig punt numeriek te bepalen, en om de functie in tabelvorm naar een bestand weg te schrijven.
Het Wetenschapsforum heeft ook een facebook pagina!

Gebruikersavatar
Berichten: 2.609

Re: Java: signatuur van een functie

Dan bedoelen ze dat Functie een interface is. (Wat in essentie een abstracte klasse is.)

Specifieke functies zoals sinus, veelterm moeten die interface dan implementeren.

Gebruikersavatar
Berichten: 768

Re: Java: signatuur van een functie

Om een object aan te maken, hoe doe je dat dan? Een interface heeft toch geen objecten? Ik zie een interface zo: dat is een blauwdruk voor alle klassen die het implementeert. Dus als er een methode inzit en je hebt a implements B, dan moet a alle methodes bevatten die B bevat, natuurlijk wel concreet ingevuld dan.
Het Wetenschapsforum heeft ook een facebook pagina!

Gebruikersavatar
Berichten: 2.609

Re: Java: signatuur van een functie

Inderdaad dus je hebt een interface Functie:

Code: Selecteer alles

interface Functie{

double nulpunt();

}
En dan heb je een klasse die de interface implementeert:

Code: Selecteer alles

class Rechte implements Functie{

int a,b; // rechte = a*x + b

double nulpunt(){

return -b/a;

}

}

Je kan dan in je main programma een object aanmaken via

Functie f = new Rechte();

Ik ben niet helemaal zeker van de syntax maar dit is het idee.

Gebruikersavatar
Berichten: 768

Re: Java: signatuur van een functie

Ik snap wat je doet, is het dan juist wat ik doen?

Code: Selecteer alles


package Nulpuntenvaneenfunctie;

public abstract class Functie {

private int aantalit = 100;

private double epsilon = Math.pow(10, -10);

private double delta = Math.pow(10,-10);

private String naam;

private int a;

public abstract double afgeleide(double a);

public abstract double nulpunt(double b);

}

En dan heb je natuurlijk verschillende klassen voor verschillende functies.

EDIT: ik heb

Code: Selecteer alles


public Functie(String naam){

  this.naam = naam;

}

verwijderd, een abstracte klasse heeft geen objecten, je kan er dus ook geen maken...
Het Wetenschapsforum heeft ook een facebook pagina!

Gebruikersavatar
Berichten: 2.609

Re: Java: signatuur van een functie

Ik denk dat het mooier is om met een interface te werken en daar enkel dingen in te zetten die alle functies zullen hebben. (Allez uiteraard heeft niet elke functie een nulpunt, maar daar zou je bv een Exception kunnen throwen.)

Ik weet niet wat al je private attributen betekenen, maar iets als een naam hoeft niet per se in een attribuut te staan. Je kan zeggen dat name() een abstract method is die een String teruggeeft. Elke functie moet die dan implementeren zodat die de juiste naam returnet.

Gebruikersavatar
Berichten: 768

Re: Java: signatuur van een functie

Oke, dit is dan mijn interface:

Code: Selecteer alles


package Nulpuntenvaneenfunctie;

public interface Functie {

public int aantalit = 100;

public double epsilon = Math.pow(10, -10);

public double delta = Math.pow(10,-10);

public abstract double afgeleide(double a);

public abstract double nulpunt(double b);

}

De bedoeling is om nulpunten te berekenen en de afgeleide. Mijn volgende vraag is dan de volgende. Er staat dan:

De klasse BoogTangens

Deze klasse moet in staat zijn om functies van de vorm Bgtg(x) ax b voor te stellen. Programmeer

het nodige om

• objecten van deze klasse te initialiseren via opgave van de getallen
a en b

• nulpunten van deze functie te zoeken mits opgave van een beginschatting

Dan moet je nog een klasse maken die de afgeleide berekent. Maar ik zit met een probleem dan. Er staat dat de klasse functie de volgende methodes moet bevatten (wij gebruiken nu een interface, maar het probleem komt op hetzelfde neer):

- een die de nulpunten berekent

- een die de afgeleide berekent

Onder de klasse BoogTangens staat de klasse BoogTangensAfgeleid. In de klasse BoogTangens moet je (zoals hierboven beschreven) geen methode hebben om de afgeleide te bepalen. Je kan dan de klasse BoogTangens dan toch niet implementeren met de interface?
Het Wetenschapsforum heeft ook een facebook pagina!

Gebruikersavatar
Berichten: 2.609

Re: Java: signatuur van een functie

Nee ik zou gewoon een klasse BoogTangens maken die Functie implementeert.

In afgeleide(double a) zet jij dan analytisch de formule van de afgeleide van die BoogTangens en je geeft de waarde voor x = a terug.

Voor het nulpunt kan je mss eerst een superklasse FunctieMetNulpunt maken en BoogTangens die laten extenden. In FunctieMetNulpunt kan je dan een methode schrijven die het nulpunt vindt (mogelijk met hulp van de afgeleide).

Gebruikersavatar
Berichten: 768

Re: Java: signatuur van een functie

en wat moet er dan gebeuren met die klasse BoogTangensAfgeleid? Die moet gemaakt worden, dat is een deel van de opdracht
Het Wetenschapsforum heeft ook een facebook pagina!

Gebruikersavatar
Berichten: 2.609

Re: Java: signatuur van een functie

Goh ik zie dan evt iets als volgt, maar OO design is mijn sterkste kant niet.

Code: Selecteer alles


interface Functie{

double evaluate(double x); // geef de waarde van de functie in x

}

interface AfleidbareFunctie extends Functie{

double afgeleide(double x);

}

abstract class FunctieMetNulpunt extendsFunctie{

double nulpunt(){

  // implementeer hier een functie die het nulpunt zoekt (je zal daar de evaluate() methode voor nodig hebben)

}

}

class BoogTangens extends FunctieMetNulpunt implements AfleidbareFunctie{

// nulpunt is al geimplementeerd in FunctieMetNulpunt

// evaluate() en afgeleide() moeten nog geimplementeerd worden, gebruik hiervoor de analytische formules

}


Gebruikersavatar
Berichten: 768

Re: Java: signatuur van een functie

Ik heb door wat er bedoeld wordt. In de klasse Boogtangensafgeleid bepaal je het met de formule en in de klasse BoogTangens met de definitie van de afgeleide... Dat mocht wel iets duidelijker vermeld staan :)
Het Wetenschapsforum heeft ook een facebook pagina!

Gebruikersavatar
Berichten: 2.609

Re: Java: signatuur van een functie

Oké als je verder kan dan is het goed, maar mss post je in de toekomst best de volledige opgave, want zo is het teveel puzzelwerk ;)

Gebruikersavatar
Berichten: 768

Re: Java: signatuur van een functie

Ja, ik zal het uiteindelijk ook te denken. Jij kon onmogelijk weten dat dat het probleem was. Moest je nog geinteresseerd zijn, dan gooit ik het er wel op ;)
Het Wetenschapsforum heeft ook een facebook pagina!

Reageer