Springen naar inhoud

Java: signatuur van een functie



  • Log in om te kunnen reageren

#1

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 22 januari 2013 - 20:51

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!

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 22 januari 2013 - 21:48

Bedoelen ze geen abstracte klasse/functie?

#3

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 22 januari 2013 - 22:06

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!

#4

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 22 januari 2013 - 22:12

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.

#5

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 22 januari 2013 - 22:18

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!

#6

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 22 januari 2013 - 22:24

Inderdaad dus je hebt een interface Functie:
interface Functie{
	double nulpunt();
}

En dan heb je een klasse die de interface implementeert:
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.

#7

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 22 januari 2013 - 22:26

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

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

public Functie(String naam){
  this.naam = naam;
}

verwijderd, een abstracte klasse heeft geen objecten, je kan er dus ook geen maken...

Veranderd door Kwintendr, 22 januari 2013 - 22:30

Het Wetenschapsforum heeft ook een facebook pagina!

#8

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 22 januari 2013 - 22:33

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.

#9

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 22 januari 2013 - 22:42

Oke, dit is dan mijn interface:

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!

#10

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 22 januari 2013 - 22:47

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).

#11

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 22 januari 2013 - 22:49

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!

#12

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 22 januari 2013 - 22:59

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


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
}

#13

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 22 januari 2013 - 23:03

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!

#14

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 22 januari 2013 - 23:07

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 ;)

#15

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 22 januari 2013 - 23:11

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!






Also tagged with one or more of these keywords: informatica

0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures