1. Teoria 2 (24/02/2011) - Composició i information hiding
1.1. Temari
- Classes i instàncies
- La classe Moneder
- Diagrames de classe UML
- Mòduls, classes i programes
- Information hiding
- Paràmetres: valors per omisió
1.2. Xuletari
- Conceptualment, una classe d’objectes és el conjunt de tots els objectes instància que tenen els mateixos mètodes i atributs.
- Quan definim una classe, definim el «patró comú» de totes les instàncies d’aquella classe.
- Els diccionaris de Python també són instàncies d’objecte, per exemple la classe dict. Per aquesta raó sovint usem els seus mètodes:
- d = {1: ’a’, 2: ’b’} print(a.keys())
- Usarem la notació UML Class Diagram (Unified Modeling Language). La relació entre wallet’s i dict’s és de composició. Un wallet està composat d’un dict. Es representa amb un linia acabada en un diamant negre pel costat de la classe que agrega. En una composició, la vida de la instància contenidora condiciona al vida de la instancia continguda.
- Si des del programa P accedim als mètodes de les instàncies però no als seus atributs, P no està vinculat a la implementació d’aquests atributs. Quan els atributs canvien, NO cal modificar P.
- Funció pura:
- Una funció que no modifica cap dels objectes que reb com a paràmetres. La majoria de les funcions pures són molt profitoses.
- Modificador:
- Una funció que canvia un o més dels objectes que reb com a paràmetres. La majoria d'elles no tenen utilitat o poden provocar problemes en projectes reals, ja que són menys permeables als canvis.
- Estil de programació funcional(functional programming style):
- Estil en el disseny de programes en el qual la majoria de funcions són pures.
- Desenvolupament de prototips (prototype development):
- Una forma de desenvolupar programes començant amb un prototip i anar millorant-lo a base de provarlo i trobar-li errors.
- Desenvolupament planejat (planned development):
- Una forma de desenvolupa un problema que implica coneixement d'alt nivell sobre allò que s'està tractant. Es prioritza un pla previ abans que no pas el prototype development.
- Algoritme:
- Un conjunt d'instruccions per resoldre una classe de problemes mitjançant un procés mecànic, sense intel ligència.
- Els mètodes són igual que les funcions, amb dues diferències:
- Es defineixen dins d'una classe per tal de fer explícita la relació entre la classe i el mètode.
- La sintaxi per invocar un mètode és diferent de la sintaxi per cridar a una funció. S'utilitza el punt "." .
Some languages make it possible to change the definition of the built- in operators when they are applied to user-defined types. This feature is called operator overloading. It is especially useful when defining new mathematical types. For example, to override the addition operator +, we provide a method named add: