Verkapselung
Die erste Säule der objektorientierten Programmierung istverkapselung . Die Idee hinter der Kapselung ist, dass Sie jeden Typ oder jede Klasse diskret und in sich geschlossen halten möchten. Dadurch können Sie die Implementierung einer Klasse ändern, ohne eine andere Klasse zu beeinflussen.
Eine Klasse, die eine Methode bereitstellt, die andere Klassen verwenden können, wird alsserver
bezeichnet. Eine Klasse, die diese Methode verwendet, wird aufgerufeneda client
. Das Ziel der Kapselung ist, dass Siekann die Details ändern, wie ein Server seine Arbeit macht, ohne etwas in der Implementierung des Clients zu brechen.
Dies wird erreicht, indem eine helle und leuchtende Linie zwischen dempublic interface
einer Klasse und ihremprivate implementation
gezogen wird. Die öffentliche Schnittstelle istein von Ihrer Klasse ausgestellter Vertrag, der besagt, dass ich verspreche, diese Arbeit tun zu können. Insbesondere werden Sie sehen, dass ein publicinterface diese Methode mit diesen Parametern aufruft, und ich mache diese Arbeit und gebe diesen Wert zurück. Ein Client kann sich darauf verlassen, dass sich eine öffentliche Schnittstelle nicht ändert. Wenn sich die öffentliche Schnittstelle ändert, muss der Client neu kompiliert und möglicherweise neu signiert werden.
Die private Implementierung hingegen ist für den Server privat. Dem Designer der Serverklasse steht es frei, zu ändernwie er die in der öffentlichen Schnittstelle versprochene Arbeit ausführt, solange er weiterhin die Bedingungen seines impliziten Vertrags erfüllt: Er muss die angegebenen Parameter annehmen, die versprochene Arbeit ausführen und den versprochenen Wert zurückgeben.
Sie könnten beispielsweise eine öffentliche Methode haben, die Folgendes verspricht:Gib mir einen Dollarbetrag und ein paar Jahre, und ich gebe den Barwert zurück. Wie Sie diesen Betrag berechnen, ist Ihr Geschäft; Wenn ein Kunde einen Dollarbetrag und mehrere Jahre liefert, müssen Sie den Barwert zurückgeben. Sie können dies zunächst implementieren, indem Sie eine Wertetabelle führen. Sie können dies zu einem späteren Zeitpunkt ändern, um den Wert mithilfe der entsprechenden Algebra zu berechnen. Das ist Ihr Geschäft, und hat keinen Einfluss auf theclient. Solange Sie das publicinterface nicht ändern (z., solange Sie thenumber oder Art von Parametern nicht ändern (oder die Art von thereturn Wert ändern), werden Ihre Klienten nicht brechen, während Sie theimplementation ändern.