inkapseling
de eerste pijler van objectgeoriënteerd programmeren isencapsulatie . Het idee achter encapsulation is dat u elk type of klasse discreet en self-contained wilt houden. Dit stelt u in staat om de implementatie van een klasse te veranderen zonder invloed te hebben op een andere klasse.
een klasse die een methode biedt die andere klassen kunnen gebruiken, wordt eenserver
genoemd. Een klasse die deze methode gebruikt is calleda client
. Het doel van encapsulation is dat je de details van hoe een server zijn werk doet kunt veranderen zonder iets te breken in de implementatie van de client.
dit wordt bereikt door een heldere en glanzende lijn te trekken tussen depublic interface
van een klasse en haarprivate implementation
. De publieke interface is een contract uitgegeven door uw klas dat zegt, Ik beloof dat ik dit werk kan doen. Specifiek, je zult zien dat een publicinterface zegt noem deze methode, met deze parameters, endi zal dit werk doen en deze waarde retourneren. Een klant kan vertrouwen op een publieke interface om niet te veranderen. Als de openbare interface verandert, moet de cliënt opnieuw worden gecompileerd en eventueel opnieuw worden ontworpen.
de particuliere uitvoering daarentegen is privé voor de server. De ontwerper van de server klasse is vrij om te veranderen hoe hij het beloofde werk doet in de publicinterface, zolang het blijft voldoen aan de voorwaarden van zijn eenvoudig contract: het moet de gegeven parameters nemen, het beloofde werk doen, en de beloofde waarde teruggeven.
bijvoorbeeld, u kunt een openbare methode hebben die als volgt belooft:Geef me een dollar bedrag en een aantal jaren, en ik geef de netto contante waarde terug. Hoe u berekentdat bedrag is uw bedrijf; als een klant levert een dollar bedrag en een aantal jaren, moet u de netto contante waarde terug te keren. Je kunt dat in eerste instantie implementeren door een tabel met waarden bij te houden. U kunt dat op een later tijdstip wijzigen om de waarde te berekenen met behulp van de passende algebra. Dat is uw zaak, en heeft geen invloed op de klant. Zolang u de publicinterface niet wijzigt (bijv., zolang u het aantal of het type van de verwachte parameters niet wijzigt of het type van de omzetwaarde niet wijzigt), zullen uw clients niet breken terwijl u de implementatie wijzigt.