Diferència entre revisions de la pàgina «DAM-M3-UF4. Conceptes d'Orientació a Objectes»
(→Encapsulament. Ocultació) |
|||
Línia 12: | Línia 12: | ||
=== Encapsulament. Ocultació === | === Encapsulament. Ocultació === | ||
+ | La programació orientada a objectes es basa en el principi de que la classe ha de tenir el control total sobre les variables dels seus objectes, tant per consultar-les com per modificar-les. | ||
− | + | Això implica que la classe ha d’establir qualsevol operació que es vulgui fer sobre els seus objectes i les seves variables, impedint que externament es puguin realitzar operacions no definides. (Ocultació). En general ocultant l'accés directe a la informació que conté l'objecte, les dades. | |
+ | |||
+ | Cada objecte manté el seu estat i el seu comportament particulars, i alhora només mostra a l’exterior la informació necessària per tal que els altres objectes puguin interactuar amb ell. (Encapsulament). | ||
+ | |||
+ | El conjunt d’operacions / atributs que els objectes mostren per tal que s’interactuï amb ells s’anomena Interfase. | ||
+ | |||
+ | D’aquesta manera es protegeix l’objecte de canvis en el seu estat de manera incoherent o inesperada i s’amaga la implementació de les seves operacions, així també es poden fer canvis que mentre no modifiquin la interfase seran transparents a la resta del Sistema. | ||
=== Composició. Associació de classes === | === Composició. Associació de classes === |
Revisió del 17:37, 5 set 2012
torna M3 - Programació
Contingut
Els pilars de la OO
- Encapsulament i Ocultació. Restricció d'accés a les dades
- Composició. Relació entre objectes
- Herència. Relació entre classes
- Polimorfisme. Determinació del comportament en temps d'execució
http://es.scribd.com/doc/52944613/17/Encapsulacion-y-ocultacion-de-datos
Encapsulament. Ocultació
La programació orientada a objectes es basa en el principi de que la classe ha de tenir el control total sobre les variables dels seus objectes, tant per consultar-les com per modificar-les.
Això implica que la classe ha d’establir qualsevol operació que es vulgui fer sobre els seus objectes i les seves variables, impedint que externament es puguin realitzar operacions no definides. (Ocultació). En general ocultant l'accés directe a la informació que conté l'objecte, les dades.
Cada objecte manté el seu estat i el seu comportament particulars, i alhora només mostra a l’exterior la informació necessària per tal que els altres objectes puguin interactuar amb ell. (Encapsulament).
El conjunt d’operacions / atributs que els objectes mostren per tal que s’interactuï amb ells s’anomena Interfase.
D’aquesta manera es protegeix l’objecte de canvis en el seu estat de manera incoherent o inesperada i s’amaga la implementació de les seves operacions, així també es poden fer canvis que mentre no modifiquin la interfase seran transparents a la resta del Sistema.
Composició. Associació de classes
La composició de classes fa referència a usar instàncies de classes (objectes) dins altres objectes.
package dam.m3.uf4; public class Punt { private int x; private int y; public Punt(int x, int y) { super(); this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } } |
package dam.m3.uf4; public class Cercle { private Punt centre; private int radi; public Punt getCentre() { return centre; } public void setCentre(Punt centre) { this.centre = centre; } public int getRadi() { return radi; } public void setRadi(int radi) { this.radi = radi; } } |
La representació de la composició (En UML s'anomena associació)
El tractament d'atributs amb multiplicitat 1 (unaris) d'altres classes és igual que els atributs de tipus primitius.
La principal complicació és la gestió de la inicialització, cal recordar que mentre un objecte no s'instància té un valor null i l'accés a les seves propietats genera error en temps d'execució.
/* Aquest constructor, deixa la responsabilitat de l'objecte * centre a la entitat externa que instància el Cercle. * * Cercle c1 = new Cercle(new Punt(2,4), 10) * Cercle c2 = new Cercle(null, 10) */ public Cercle(Punt centre, int radi) { this.centre = centre; this.radi = radi; } /* Aquest constructor pren tota la responsabilitat i obliga * a la entitat externa a proporcionar tota la informació necessària. * * Cercle c1 = new Cercle(new Punt(2,4), 10) * Cercle c2 = new Cercle(null, 10) */ public Cercle(int x, int y, int radi) { this.centre = new Punt(x,y); this.radi = radi; } /* Aquest constructor sempre inicialitza centre = null * * Cercle c3 = new Cercle(10) */ public Cercle(int radi) { this.radi = radi; }
Multiplicitat
En general la composició pot implicar una relació 1:molts entre dues classes
Tipus de composició. UML associació, composició i agregació
http://www.dcc.uchile.cl/~psalinas/uml/modelo.html