Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Coding Releases > Coding Snippets
You last visited: Today at 02:39

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



fibAlyzer1.0.php - Ist es nun ein Fibonacci oder doch nicht??!

Discussion on fibAlyzer1.0.php - Ist es nun ein Fibonacci oder doch nicht??! within the Coding Snippets forum part of the Coding Releases category.

Reply
 
Old   #1
 
SHA256's Avatar
 
elite*gold: 0
Join Date: Oct 2014
Posts: 31
Received Thanks: 1
Post fibAlyzer.php - Ist es nun ein Fibonacci oder doch nicht??!

Guten Abend.
Hier release ich den fibAlyzer 1.0...

Die PHP Klasse analysiert einen Komma unterteilten string mit zahlen, und berechnet daraus, ob es sich um eine Fibonacci Zahlenfolge handelt.

Eigentliches Ziel der Arbeit war es, mehrere Mathematische arten von Zahlwiederholungen zu analysieren, möchte es gerne auch erweitern, muss aber noch googlen es noch so gibt.(Vll kennt von euch wer eine?). Sodass , sollte es keine Fibonacci sein, automatisch überprüft wird, ob's vielleicht eine andere Logisch begründbare ist..

Vielleicht lernt der eine oder andere was daraus, hab alles schön kommentiert^^
das ganze ist Objektorientiert.. einfach zu implementieren und zu erweitern

Hier der code:

1.0.1

1.0
SHA256 is offline  
Thanks
1 User
Old 11/14/2014, 22:41   #2

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
Arrow Coding Releases -> Coding Snippets

#moved
snow is offline  
Old 11/17/2014, 20:26   #3
 
elite*gold: 0
Join Date: Nov 2010
Posts: 700
Received Thanks: 507
Also ich interessiere mich sehr für Mathematik und finde es deshalb auch interessant. Hier ist eine Seite die ziemlich viele Zahlenfolgen umfasst. Kannst dir ja mal so ein paar spannende raussuchen.
Interessant wäre halt ein Code der nicht nach vorgefertigten Schemen sucht, sondern versucht eine Schema herauszufinden. Ich weis das ist nicht so leicht, aber wäre auch mal spannend so etwas zu schreiben.
supercracker13 is offline  
Old 11/19/2014, 00:21   #4
 
SHA256's Avatar
 
elite*gold: 0
Join Date: Oct 2014
Posts: 31
Received Thanks: 1
Hey cool das du es interessant findest! Ich glaub du hast den link vergessen^^bitte post ihn doch mal =)

Ja, leider weiss ich nicht wie genau ich so einen Algorithmus zusammenstellen soll, aber ich möchte das auf jedenfalls mal probieren. Ich denk aber auch, das sowas nicht mit 10 Zahlen funktioniert sondern mit 100 oder 1000.

danke nochmal für dein Feedback und bitte um deinen link.
Mit freundlichen Grüßen
SHA256 is offline  
Old 11/19/2014, 19:34   #5
 
elite*gold: 0
Join Date: Nov 2010
Posts: 700
Received Thanks: 507
Oh Tatsächlich. Hab das ganz vergessen.
Hier ist jetzt aber wirklich der Link ^^

supercracker13 is offline  
Old 11/25/2014, 01:01   #6
 
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
Welchen Sinn macht es dass calculator von alyzer erbt?
dowhile is offline  
Old 11/25/2014, 14:12   #7
 
SHA256's Avatar
 
elite*gold: 0
Join Date: Oct 2014
Posts: 31
Received Thanks: 1
Also calculater ist für die Berechnungen selbst zuständig, also es ist sowas wie ein Taschenrechner, alyzer analysiert die Rückgabewerte und macht das mit der Benutzer ein/ausgabe. Somit ist das alles schön getrennt int übersichtlich.
SHA256 is offline  
Old 11/25/2014, 15:06   #8
 
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
Wenn du mehrere Zahlenreihen mit verschiedenen Analysern analysierst, die dann alle mit Calculate eine gemeinsame Schnittstelle haben, macht dein Code mehr Sinn (template method). Aber dann ist die Methode "fibonacci" irgendwie schlecht gewählt, oder? Weil bei dem Ansatz wäre die Vererbung gerade dazu da, den Analysier-Algorithmus auszutauschen, und dann ist die Fibonacci Folge nur ein Spezialfall.

Btw. du solltest die Methode fibonacci in alyzer noch als abstract deklarieren, denn sonst kommen IDEs damit nicht zurecht. Und beim Lesen ist es auch verwirrend, wenn auf einmal eine Methode aufgerufen wird, die in der Klasse gar nirgends deklariert wird.
dowhile is offline  
Old 11/25/2014, 17:08   #9
 
SHA256's Avatar
 
elite*gold: 0
Join Date: Oct 2014
Posts: 31
Received Thanks: 1
Ich kann dir jetzt echt gar nicht folgen... Was meinst du mit gemeinsamer Schnittstelle? Was meinst du mit "Analysier-Algorithmus auszutauschen"

In wie fern kommen IDEs nicht damit zurecht?

Meinst du mit verwirrend den Methodenaufruf in alyzer auf line 46? Wenn ja - Ja okay, aber die Methode ist doch in der Kindklasse.

Mit freundlichen Grüßen
SHA256 is offline  
Old 11/25/2014, 21:19   #10
 
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
Angenommen, du möchtest später neben der Fibonacci Folge auch die Folge des unendlichen Kettenbruchs analysieren. Dann könntest du mit deinem Design mehrere Unterklassen von Calculator bilden, die jeweils eine andere Folge untersuchen (also Polymorphie), die aber alle durch die Methoden in Alyzer gleich angesprochen werden können. Hast du deswegen die Vererbung eingebaut?
Wenn ja, ist, finde ich, der Name "fibonacci" für die Methode, die du in den erbenden Klassen implementierst, aber schlecht gewählt, weil sie sich dann nicht auf einen speziellen Algorithmus bezieht, zumindest nicht aus Sicht von Calculator.
Wenn das nicht deine Absicht war, verstehe ich dich nicht: Wieso ist es übersichtlicher, wenn ich das in zwei Klassen aufteilen, wenn es für Klassen, die deinen Code nutzen, ohnehin keinen Unterschied macht?

Beim zweiten meinte ich diesen Aufruf, ja. In anderen Sprachen geht das nicht, was du machst, denn dort würdest du eine undefinierte Methode aufrufen. In Alyzer gibt es nämlich in deinem Code kein "fibonacci()". In Calculator schon, das stimmt; wenn du aber nur Alyzer betrachtest, besteht kein Bezug zu irgendeiner erbenden Klasse.

Angenommen, du schreibst: new alyzer()->calcMap(); Das wäre ein Fehler, da fibonacci nirgendwo definiert wird (und in anderen Sprachen wäre das schon beim Kompilieren ein Fehler). Dass es ein fibonacci() in deinem alyzer Objekt gibt, wird erst zur Laufzeit bekannt, nämlich wenn du eben ein calculator Objekt anstatt direkt ein alyzer Objekt erstellt. IDEs führen den Code aber nicht aus, und deswegen haben die keine Ahnung, welche Methoden erst zur Laufzeit bekannt sein werden. Zudem ist dein Code so fehleranfällig, denn ein weiterer Entwickler übersieht leicht, dass er eine Methode implementieren muss, wenn er von alyzer erbt (und ebenso sieht er nicht direkt, dass keine Objekte direkt von alyzer angelegt werden dürfen).

Um das zu lösen, gibt es abstrakte Methoden/Klassen: Du kannst auch in PHP die Methode fibonacci() in alyzer als abstract deklarieren:

protected abstract function fibonacci();

Damit schaffst du eine Vorschrift für erbende Klassen, dass diese diese Methode implementieren müssen (oder deren Kinder). Zudem weiß so die IDE, ohne den Code auszuführen, dass diese Methode auf jeden Fall vorhanden sein wird, und wenn direkt ein Objekt von alyzer angelegt wird, ist auch direkt ersichtlich, dass das nicht erlaubt ist.
Abstrakte Methoden sind im Grunde das selbe wie die Deklarationen in einer Schnittstelle, nur in einer abstrakten Klasse.
dowhile is offline  
Thanks
1 User
Old 11/25/2014, 22:56   #11
 
SHA256's Avatar
 
elite*gold: 0
Join Date: Oct 2014
Posts: 31
Received Thanks: 1
Ahhh. Das mit der abstrakten Klasse hört sich sehr gut an. Aber ich kann auf Methoden der abstrakten Klasse zugreifen oder?
Eine Abstrakte Klasse ist also wie eine Schnittstelle oder so wie eine api, wo ich Methoden in der implementierenden Klasse definieren kann, um dann die rückgabewerte der Methode in der implementierenden Klasse auswerten kann oder? Hab ich das richtig verstanden?

Wenn ja definieren ich jetzt alayzer als abstrakt und den fibonacci ebenso darin.

erweitere alayzer um calculator und das wars doch auch schon oder? Zeile 46 ändere ich einfach in calculator::fibonacci()?
SHA256 is offline  
Old 11/26/2014, 16:42   #12
 
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
Ja, ich glaube du sagst das richtige. Ein Beispiel vielleicht noch:

Code:
abstract class Parent {

  public function say() { echo "Hello, " . $this->getName(); }

  protected abstract function getName();
}

class ChildMax extends Parent {

  protected function getName() { return "Max"; }
}

class ChildTom extends Parent {

  protected function getName() { return "Tom"; }
}

class ChildFoo extends Parent {} // Fehler: abstrakte Methode nicht implementiert

new ChildMax()->say(); // Max
new ChildTom()->say(); // Tom
new Parent() // Fehler: Klasse abstrakt
Deine Änderungen hören sich richtig an. Zeile 46 musst du aber nicht ändern, denn du kannst die abstrakte Methode trotzdem ganz normal aufrufen. calculator::fibonacci() wäre bei statischen Methoden richtig, oder? (und so eine hast du hier ja nicht)
dowhile is offline  
Old 11/26/2014, 18:38   #13
 
SHA256's Avatar
 
elite*gold: 0
Join Date: Oct 2014
Posts: 31
Received Thanks: 1
Alles klar, hab den code nun umgeschrieben! und auch eine neue Methode eingebaut.
SHA256 is offline  
Reply


Similar Threads Similar Threads
Neustart oder doch nicht?
01/08/2013 - Flyff - 7 Replies
Hey hey :) Ich hab mal ne Frage nebenbei: Ich bin momentan am Überlegen, ob ich mit Flyff neu anfangen soll. Rentiert es sich überhaupt? Da man jetzt problemlos sunkisten kann, würde ich mir meinen Supporter gleich mit hochziehen. Zu welcher Klasse würdet ihr mir raten? Welcher Server?
Anklage oder doch nicht?
05/14/2012 - Off Topic - 37 Replies
Guten Tag, ich melde mich mal wieder. Dieses mal ist es aber kein freudiger Anlass. Ich wurde öfters von einem meiner Mitschüler bedroht. Er geht ab und zu zu mir und sagt: Lass mich und meine freundin in ruhe! Nur belästige ich weder ihn noch seine Freundin. Er hat mir heute erneut gedroht mit einem Rechen, den er in der Hand hatte, in mein Gesicht zu schleudern... Ich wäre sehr dankbar für eure Unterstützung.
Alles geschafft ... Oder doch nicht: world geht nicht
12/15/2009 - WoW Private Server - 5 Replies
So ... ich habe in den letzden Tagen hier 2 Themen geposted :D (Habe auch alle Probleme gelöst) Ausser einen: http://img96.imageshack.us/img96/4757/wtfgt.jpg Das Bild erklärt glaub ich alles :D Vielen Dank schonmal im Voraus
Bann? oder doch nicht?!
07/13/2007 - World of Warcraft - 17 Replies
Hi, heute morgen wollte ich mich wie gewohnt einloggen, doch da strahlte mir diese meldung entgegen: http://i8.tinypic.com/5xfbm7n.jpg naja ich hab erstmal gedacht, scheiße gelaufen, dann flott zur acc verwaltung geschaut:



All times are GMT +1. The time now is 02:39.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.