|
|
| (Hi ha 23 revisions intermèdies del mateix usuari que no es mostren) |
| Línia 1: |
Línia 1: |
| − | torna [[ M3 - Programació ]]
| |
| | | | |
| − | == Programació Orientada a objectes (POO) ==
| |
| − |
| |
| − | La POO és un paradigma de programació.
| |
| − |
| |
| − | Es representa el sistema com una col·lecció d’objectes amb certes propietats.
| |
| − |
| |
| − | Aquests reben estímuls externs o esdeveniments interns, i en resposta:
| |
| − |
| |
| − | * Intercanvien informació
| |
| − | * Canvien el seu '''estat '''(Les seves propietats)
| |
| − | * Produeixen resultats observables (Informació per consola, creació d'un botó, etc...)
| |
| − |
| |
| − | Les responsabilitats del Sistema queden així repartides entre els objectes que col·laboren entre ells
| |
| − |
| |
| − | Per comunicar-se els objectes intercanvien '''''missatges'''''.
| |
| − |
| |
| − | == Les Classes i els objectes ==
| |
| − |
| |
| − | Una '''classe''' descriu la estructura d'entitats del mateix tipus. Cadascuna d'aquestes entitats s'anomena '''objecte'''.
| |
| − |
| |
| − | La classe recull totes les propietats i comportaments comuns d’aquestes entitats, però no les que difereixen.
| |
| − |
| |
| − | Els '''objectes''' són instàncies d’una classe, representen un estat real d’un classe on les propietats que defineixen la classe tenen un valor concret.
| |
| − |
| |
| − | Es poden descriure els objectes des d’un punt vista
| |
| − |
| |
| − | * Estàtic: El valor de les seves propietats, '''atributs''' (''Estat'')
| |
| − | * Dinàmica: Com respon a esdeveniments externs, '''mètodes''' (''Comportament'')
| |
| − |
| |
| − | [[File: ObjectClass.png]]
| |
| − |
| |
| − | === Descripció estàtica. Atributs ===
| |
| − |
| |
| − | Els atributs, poden ser de dos tipus segons l’àmbit:
| |
| − |
| |
| − | * Atributs '''d’instància''' poden tenir un valor diferent per a cada objecte.
| |
| − | * Atributs '''de classe'''. Tenen el mateix valor per a tots els objectes de la classe. Només hi ha una còpia de l'atribut que comparteixen tots els objectes de la classe.
| |
| − |
| |
| − | Es defineixen diferents nivells d’accés sobre els atributs, de manera general:
| |
| − |
| |
| − | * Visibilitat '''pública''': Atributs accessibles externament.
| |
| − | * Visibilitat '''privada''': Només accessibles internament.
| |
| − | * Visibilitat '''protegida''': Només accessibles internament i des dels descendents.
| |
| − |
| |
| − | === Descripció dinàmica. Mètodes ===
| |
| − |
| |
| − |
| |
| − | Pot haver-hi quatre tipus de operacions o mètodes:
| |
| − |
| |
| − | * '''Constructors i destructors''': Els primers es criden en el moment que s’instancia una classe, o sigui quan es crea un objecte. Tenen el mateix nom que la classe. Java no necessita destructors.
| |
| − | * '''Modificadors''' (Setter): Permeten modificar el valor d’un atribut
| |
| − | * '''Consultors''' (Getter): Permeten obtenir el valor d’un atribut
| |
| − | * '''Altres'''. Qualsevol altre mètode
| |
| − |
| |
| − | Les operacions també poden tenir diferents àmbit:
| |
| − |
| |
| − | * Operacions '''d’objecte'''. S’apliquen als objectes de la classe.
| |
| − | * Operacions '''de classe'''. S’apliquen a la classe (Per exemple les operacions constructores i destructores, i els Getter/Setter sobre atributs de classe).
| |
| − |
| |
| − |
| |
| − | Els nivells d’accés sobre els mètodes,de manera general:
| |
| − |
| |
| − | * Visibilitat '''pública''': Atributs accessibles externament.
| |
| − | * Visibilitat '''privada''': Només accessibles internament.
| |
| − |
| |
| − |
| |
| − | Exemple
| |
| − |
| |
| − | {|
| |
| − | | [[File: alumne.jpg]]
| |
| − | |
| |
| − | (+) Significa public
| |
| − |
| |
| − | (-) Significa privat
| |
| − |
| |
| − | Subratllat fa referència a àmbit de classe
| |
| − | |}
| |
| − |
| |
| − | === Instanciació, ús dels objectes ===
| |
| − |
| |
| − | Per exemple suposem la classe ''Qualsevol'', aquesta classe té
| |
| − | * Un atribut ''atribut1''
| |
| − | * Un mètode
| |
| − |
| |
| − | === Tipus primitius vs Objectes ===
| |
| − |
| |
| − | == Conversions de tipus ==
| |