Klassen (oder vielmehr ihre Instanzen) dienen zur Darstellung von Dingen. Klassen werden verwendet, um die Operationen zu definieren, die von einer bestimmten Klasse von Objekten (ihren Instanzen) unterstützt werden. Wenn Ihre Anwendung den Überblick behalten muss, Person
handelt es sich wahrscheinlich um eine Klasse. Die Instanzen dieser Klasse repräsentieren bestimmte Personen, die Sie verfolgen.
Funktionen dienen zur Berechnung von Dingen. Sie empfangen Eingaben und erzeugen eine Ausgabe und / oder haben Auswirkungen.
Klassen und Funktionen sind keine wirklichen Alternativen, da sie nicht für die gleichen Dinge sind. Es ist nicht wirklich sinnvoll, eine Klasse zu bilden, um "das Alter einer Person anhand ihres Geburtstagsjahres und des aktuellen Jahres zu berechnen". Sie können oder nicht Klassen zu einem der Begriffe darstellen Person
, Age
, Year
und / oder Birthday
. Aber selbst wenn Age
es sich um eine Klasse handelt, sollte man nicht daran denken, das Alter einer Person zu berechnen. Vielmehr führt die Berechnung des Alters einer Person zu einer Instanz der Age
Klasse.
Wenn Sie Personen in Ihrer Anwendung modellieren und eine Person
Klasse haben, kann es sinnvoll sein, die Altersberechnung als Methode der Person
Klasse zu verwenden. Eine Methode ist im Grunde eine Funktion, die als Teil einer Klasse definiert ist. Auf diese Weise definieren Sie "die Operationen, die von einer bestimmten Klasse von Objekten unterstützt werden", wie bereits erwähnt.
Sie können also für Ihre Personenklasse eine Methode zur Berechnung des Alters der Person erstellen (wahrscheinlich wird das Geburtstagsjahr aus dem Personenobjekt abgerufen und das aktuelle Jahr als Parameter empfangen). Die Berechnung wird jedoch weiterhin von einer Funktion durchgeführt (nur eine Funktion, die zufällig eine Methode für eine Klasse ist).
Oder Sie können einfach eine eigenständige Funktion erstellen, die Argumente empfängt (entweder ein Personenobjekt, aus dem ein Geburtsjahr abgerufen werden soll, oder einfach das Geburtsjahr selbst). Wie Sie bemerken, ist dies viel einfacher, wenn Sie noch keine Klasse haben, zu der diese Methode natürlich gehört! Sie sollten niemals eine Klasse erstellen, nur um eine Operation durchzuführen. Wenn das alles ist, was die Klasse zu bieten hat, sollte die Operation nur eine eigenständige Funktion sein.