fanelf.de: Funktionen vs Klassen

Beitrag lesen

objektorientierung bedeutet als erstes, einen zusammmenhang zu kapseln. dies erleichtert den überblick über diesen "kleinen" zusammenhang, ohne zu wissen, in welchem "großen" zusammenhang diese kapselung verwendet wird. moderne vorgehensweisen sind anders nicht mehr denkbar.

kapselung hält attribute (ausprägungen) und methoden (fähigkeiten) in einem überschaubaren und geschlossenen zusammenhang. somit ist nach außen quasi eine "lebende" black-box (instanz) am großen zusammenhang beteiligt.

wird keine "lebende" black-box benötigt, reicht es aus, nur die methoden zu kapseln. dies ist der algorithmus, wie das datenargument behandelt wird. typische beispiele sind die math und i/o funktionen. hier liegt die verantwortung mit der versorgung der richtigen daten außerhalb der funktion.

stell dir mal die funktion gibAlter(mensch[name]) vor. hier hättest du z.b. in einem separaten array mensch[name] alle attribute als reine daten vorliegen, welche du dieser funktion übergibst. die funktion würde nun aus dem geburtsdatum das alter ermitteln. du hättest dann zwar die berechnung des alters gekapselt, aber nicht sicher gestellt, daß du die dazu richtigen daten übergibst. die fehlersuche gestaltet sich in solchen fällen meist recht schwierig, da du beides koordinieren mußt, besonders dann, wenn sich die struktur des arrays mensch mal ändert.

verbindest du aber die berechnung des alters direkt mit dem menschen, hast du die daten und die auf einen kleinen überschaubaren teil gekapselt. es ist sicher einfacher, da dich die datenstruktur von mensch außerhalb der kapselung nicht interessiert. statt dessen kommunizierst du einfach nur mir dem objekt.