start | find | index | login or register | edit
OOP
by earl, 8558 days ago
Object-Oriented Programming

OOP ist ein programmierkonzept. am besten zu sehen ist es im gegensatz zu seinem direkten gegenueber - der prozeduralen programmierung: aktionen werden auf objekte angewendet, im vordergrund stehen objekte selbst. objekte interagieren - Rather than thinking about what events happen and how they happen, we think about what entities exist and how they interact.

im satz 'Click the button' ist das button das objekt. in OOP koennte das folgendermassen codiert werden:
button.click()
prozedurale programmierung konzentriert sich dagegen auf die 'verben' - das wuerde zu code aehnlich dem folgenden fuehren:
click( button )

Nun, was braucht eine Programmiersprache nun, um als OOP-Language zu gelten - anders gefragt, was sind die Kernkonzepte der objektorientierten Programmierung?

Encapsulation - Kapselung
Inheritance/Delegation - Vererbung/Delegation
Polymorphism - Polymorphie



"Encapsulation - Kapselung"
(1) attributes of an object can only be seen or modified by calling the object's methods; or
(2) implementation of the object can change (within reasonable bounds) without changing the interface visible to callers.

The 2nd is the stronger definition, arguing for minimizing the number of "getter/setter" "properties" exported by the object, substituting "logical business interfaces to functionality" instead.

the hiding of the details of implementation of an object behind an interface

ein Interface ist die 'view' - die sicht - die der rest eines systemes von einem objekt hat. das ist ueblicherweise eine menge von operationen die im rahmen des abstraktionsprozesses des objektes gefunden wurden.

eine Operation ist ein prozess durch den ein objekt manipuliert wird um ein definiertes ergebnis zu erzielen.

-- http://www.sum-it.nl/enencaps.html



"Inheritance/Delegation - Vererbung/Delegation"
Definition of one object extends/changes that of another.

klassen koennen von basisklassen 'abgeleitet' werden, die funktionalitaet der basisklasse sowie die interna werden dabei 'vererbt' (inherited). die zugriffsberechtigung der erbenden klasse auf die eigenschaften der beerbten klassen kann oft parametrisiert werden.

wichtig ist, dass hier die kompletten eigenschaften mitgeerbt werden - und solange sie nicht ueberschrieben werden, in der kind-klasse das selbe machen wie in der basis-klasse. hier ist ein gegensatz zu den ueblichen implementativen methoden zur polymorphie: dort werden nur interface-contracts erzwungen.

-- http://www.sum-it.nl/eninheri.html



"Polymorphism - Polymorphie"
The ability to work with several different kinds of objects as if they were the same.

wird in C++ ueber 'rein abstrakte klassen' und in java ueber 'interfaces' geloest. (pure abstract classes in c++ sind klassen mit virtual =0; funtions.)

diese dinge beschreiben nur ein interface, bieten jedoch keine implementation. zum beispiel kann ein interface 'Toy' postulieren, dass man mit Toy's spielen kan (playWith). wichtig ist dass ein Toy sozusagen nur ein konzept ist, aber das ein Toy selbst nicht angreifbar ist. konkrete instanzen, wie zum beispiel ein matchbox-auto oder ein ball sind angreifbar. das Toy ist jedoch das abstrakte konzept dahinter.

man kann sowohl mit einem matchbox-auto als auch mit einem ball 'spielen' - generell: mit einem objekt der art 'Toy' kann man spielen.

-- http://c2.com/cgi/wiki?PolymorphismExample
-- http://www.sum-it.nl/enpolymo.html
powered by vanilla
echo earlZstrainYat|tr ZY @.
earl.strain.at • esa3 • online for 8662 days • c'est un vanilla site