? funktionen ?

DeMo

Gesperrt
hi leude
habe Probs mit Funktionen also will selber welche erstellen , weiß aber net so recht ob das schlau ist ? Und wie man das anstellt ? und Wann es besser ist keine funktionen zuerstellen... usw.

kennt jemand vieleicht eine Seite wo es gute tutorials dazu gibt oder vieleicht kann es jemand hier auf die schnelle erklären
^^

danke im vorraus
mfg DeMo
 

Surma

Erfahrenes Mitglied
also, es kann nie falsch sein eine funktion zu schreiben.
Es ist nur schlauer (macht also Code uebersichtlicher), wenn man oft verwendete routinen in einer funktion zusammenfast.

funktionen (function) sind das selbe wie prozeduren (procedure), nur, das funktionen einen Wert eines bestimmten Types zurueckgeben muessen.

Dafuer musst die dir mal die Pascalgrundlagen ergooglen
 

Patrick Kamin

Erfahrenes Mitglied
-

Hallo,
Funktionen und Prozeduren eignen sich nur, wenn du erstens funktional programmieren möchtest und zweitens wiederverwendbaren Code auslagern möchtest. Andere Möglichkeit wäre die objektorientierte Version, dass sollte aber wohl noch etwas vorraus gegriffen sein.
 

Sebastian Wramba

Erfahrenes Mitglied
Re: -

Original geschrieben von Patrick Kamin
Andere Möglichkeit wäre die objektorientierte Version, dass sollte aber wohl noch etwas vorraus gegriffen sein.

Könntest du das ganz kurz mal erläutern? Danke... :)
(Ich muss den Krampf mit dem OOP-Zeugs auch irgendwann mal verstehen.. was das besondere daran ist, ab welchem Zeitpunkt genau man objekt-orientiert programmiert... etc. etc.)
 

Patrick Kamin

Erfahrenes Mitglied
-

Könntest du das ganz kurz mal erläutern? Danke...
"Ganz kurz" ist gut, da haben andere 1200 Seiten Schinken drüber geschrieben :)
Aber ich kann ja mal versuchen, dass an einem kleinen Beispiel zu erklären.

Gehen wir davon aus, dass wir eine Simulation von einem Hausbau programmieren wollen. Das Haus soll einen Keller, Erdgeschoss und eine erste Etage bekommen. Jede dieser Etagen benötigt natürlich einen Fussboden, es muss tapeziert werden und Möbel gekauft werden.

Wenn wir jetzt funktional programmieren, dann schreiben wir uns für jede dieser Aufgaben eine Funktion/Prozedur und übergeben zum jeweiligen Zeitpunkt den Keller/Erdgeschoss/1.Etage als Parameter an diese Funktionen, damit die Vorgänge erledigt werden.

Wenn wir unseren Hausbau objekt-orientiert betrachten, dann wäre jede Etage ein Objekt für sich, dass bestimmte Methoden beinhaltet, in unserem Fall (Fussboden verlegen, tapezieren und Möbel kaufen). Diese Funktionen werden jetzt nicht mehr allgemein betrachtet, sondern jedes Objekt hat diese Methoden.
Wenn wir noch kurz die Vererbung betrachten, ein wichtiger Bestandteil objekt-orientierter Programmierung, dann kann man ja sagen, dass der Keller, das Erdgeschoss und die 1. Etage gleiche Funktionen/Methoden beinhalten, also auf der gleichen Grundbasis aufbauen. Somit können wir uns eine Grundklasse bauen, die in Pseudocode ungefähr so aussieht.
Code:
class Etage {
  procedure FussbodenVerlegen;
  procedure Tapezieren;
  procedure MoebelKaufen;
}
Das wäre jetzt unsere Grundklasse, von der wir jetzt ableiten werden und die einzelnen Etagen spezialisieren. Die Idee ist aber das wichtigste, dass gleiche Objekte von einer gemeinensamen Basisklasse abgeleitet werden.

Wenn wir jetzt den Keller modellieren, leiten wir von unserer Etagen-Klasse einfach ab, was bedeutet, dass unsere Keller-Klasse die Methoden/Prozeduren der Grundklasse erbt, also auch inne hat.
Code:
class Keller  extends(erbt von) Etage {
  procedure SpeisekammerBauen;
}
class ErsteEtage extends Etage {
  procedure WendeltreppeBauen;
}
Wie man hier jetzt sieht, spezialisieren wir unsere Basisklasse, von der wir ableiten und nichts anderes ist objekt-orientierte Programmierung.

Ich hoffe, es ist ein bisschen klar geworden, welche Idee dahinter steckt.

Gruß
 
Zuletzt bearbeitet:

Surma

Erfahrenes Mitglied
Re: Re: -

Original geschrieben von Sebastian Wramba
(Ich muss den Krampf mit dem OOP-Zeugs auch irgendwann mal verstehen.. was das besondere daran ist, ab welchem Zeitpunkt genau man objekt-orientiert programmiert... etc. etc.)
Genau deswegen hab ich Java erstmal beisiete gelegt und mit C++ angefangen.
@DeMo: Alles klar jetzt?
 

Surma

Erfahrenes Mitglied
Na ich meine, ich hab mit C++ angefangen, um OOP zu raffen. Java war mir dafuer zu hoch (mit den ganzen sch***** try-except-Djungel)
 

Patrick Kamin

Erfahrenes Mitglied
-

Fehler abzufangen hat doch nichts mit OOP zu tun? Das musst du näher erklären.

Außerdem gibt es die Möglichkeit auch bei c++, wirst du wahrscheinlich aufgrund deines Traumas nicht nutzen :), aber ist dennoch ein wichtiger Bestandteil moderner Programmierung. Denn ständig Fehlercodes abzufragen wie bei C, ist doch auch nicht das Wahre.