Diferència entre revisions de la pàgina «POO Introducció»
(Es crea la pàgina amb «Pots introduïr-te al tema amb la següent presentació: * http://www.slideshare.net/jpadillaa/programacion-orientada-a-objetos-en-python * http://es.wikipedia.org/wiki/P…».) |
|||
Línia 2: | Línia 2: | ||
* http://www.slideshare.net/jpadillaa/programacion-orientada-a-objetos-en-python | * http://www.slideshare.net/jpadillaa/programacion-orientada-a-objetos-en-python | ||
* http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos | * http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos | ||
+ | |||
+ | |||
+ | == Introducció == | ||
+ | La Programació Orientada a Objectes (a partir d'ara POO) és un paradigma de programació que utilitza objectes. Els '''objectes''' són estructures de dades que disposen de '''atributs''' (variables internes) i '''mètodes''' (funcions internes). Restula útil per modelar el món real, però no sempre té perquè tenir una correspondència. | ||
+ | |||
+ | Algunes definicions importants: | ||
+ | * '''Classe''': definició de les propietats (atributs i mètodes) d'un tipus d'objecte. Definint una classe definim un '''tipus''', no un objecte real. | ||
+ | * '''Objecte/Instància''': objecte real creat en temps d'execució i que ocupa un espai en memòria. | ||
+ | |||
+ | Els objectes, doncs, tenen aquestes propietats: | ||
+ | * '''Estat''': el valor dels atributs. | ||
+ | * '''Comportament''': definit pels mètodes. | ||
+ | * '''Identitat''': distingeix un objecte real dels altres objectes (instàncies). Podria ser un identificador intern però també l'adreça de memòria on està ubicat. | ||
+ | |||
+ | <br> | ||
+ | |||
+ | == Característiques de la POO == | ||
+ | Llegiu aquí: http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos#Caracter.C3.ADsticas_de_la_POO | ||
+ | * '''Abstracció''': correspondència entre les propietats (atributs i mètodes) amb el objectes reals. | ||
+ | * '''Encapsulament''': agrupament de les propietats (atributs i mètodes) en un mateix nivell d'abstracció (classe). | ||
+ | * '''Modularitat''': capacitat de treballar amb subunitats funcionals independents (classes). | ||
+ | * '''Principi d'ocultació''': implementació oculta al qui utilitza l'objecte. | ||
+ | * '''Herència''': poden definir-se subclasses que hereden les propietats del pare, afegeixen de noves i poden reescriure les heredades. | ||
+ | * '''Polimorfisme''': les crides a objectes amb el mateix ancestre (pare) poden ser uniformes (mateix nom de mètode) però amb comportament diferent si els 2 objectes són de diferents subtipus (mètode sobreescrit). | ||
+ | * '''Sobrecàrrega''': podem utilitzar el mateix nom de mètode amb paràmetres diferents que resultaran en comportaments diferents. Python no ho té per la seves variables dinàmiques. | ||
+ | * '''Agregació''': objectes dins d'objectes (atributs). No confondre amb l'herència. | ||
+ | * '''Recol·lecció de basura''': destrucció automàtica d'objectes quan cap altre li fa referència. Solen implementar-ho els llenguatges de més alt nivell (Java, Python, etc.) però no els de més baix nivell (C++) ja que impacta sobre la eficiència. | ||
+ | |||
+ | <br> | ||
+ | |||
+ | == Disseny bottom-up vs top-down == | ||
+ | Al treballar amb '''objectes''' sol ser més fàcil la modelització de processos, i facilita l'aproximació '''bottom-up''', és a dir, el disposar d'un codi reutilitzable basat en una '''llibreria d'objectes''' estàndard que el programador pot fer servir pel seu cas concret. | ||
+ | |||
+ | La '''programació estructurada procedimental''', en canvi, fa més ús del disseny '''top-down''', és a dir, estableix els requeriments finals de l'aplicació i arma tota una sèrie de funcions que resolen el problema de forma eficient. En aquesta aproximació, la reutilització de codi és menys efectiva. |
Revisió del 19:06, 25 ago 2012
Pots introduïr-te al tema amb la següent presentació:
- http://www.slideshare.net/jpadillaa/programacion-orientada-a-objetos-en-python
- http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos
Introducció
La Programació Orientada a Objectes (a partir d'ara POO) és un paradigma de programació que utilitza objectes. Els objectes són estructures de dades que disposen de atributs (variables internes) i mètodes (funcions internes). Restula útil per modelar el món real, però no sempre té perquè tenir una correspondència.
Algunes definicions importants:
- Classe: definició de les propietats (atributs i mètodes) d'un tipus d'objecte. Definint una classe definim un tipus, no un objecte real.
- Objecte/Instància: objecte real creat en temps d'execució i que ocupa un espai en memòria.
Els objectes, doncs, tenen aquestes propietats:
- Estat: el valor dels atributs.
- Comportament: definit pels mètodes.
- Identitat: distingeix un objecte real dels altres objectes (instàncies). Podria ser un identificador intern però també l'adreça de memòria on està ubicat.
Característiques de la POO
Llegiu aquí: http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos#Caracter.C3.ADsticas_de_la_POO
- Abstracció: correspondència entre les propietats (atributs i mètodes) amb el objectes reals.
- Encapsulament: agrupament de les propietats (atributs i mètodes) en un mateix nivell d'abstracció (classe).
- Modularitat: capacitat de treballar amb subunitats funcionals independents (classes).
- Principi d'ocultació: implementació oculta al qui utilitza l'objecte.
- Herència: poden definir-se subclasses que hereden les propietats del pare, afegeixen de noves i poden reescriure les heredades.
- Polimorfisme: les crides a objectes amb el mateix ancestre (pare) poden ser uniformes (mateix nom de mètode) però amb comportament diferent si els 2 objectes són de diferents subtipus (mètode sobreescrit).
- Sobrecàrrega: podem utilitzar el mateix nom de mètode amb paràmetres diferents que resultaran en comportaments diferents. Python no ho té per la seves variables dinàmiques.
- Agregació: objectes dins d'objectes (atributs). No confondre amb l'herència.
- Recol·lecció de basura: destrucció automàtica d'objectes quan cap altre li fa referència. Solen implementar-ho els llenguatges de més alt nivell (Java, Python, etc.) però no els de més baix nivell (C++) ja que impacta sobre la eficiència.
Disseny bottom-up vs top-down
Al treballar amb objectes sol ser més fàcil la modelització de processos, i facilita l'aproximació bottom-up, és a dir, el disposar d'un codi reutilitzable basat en una llibreria d'objectes estàndard que el programador pot fer servir pel seu cas concret.
La programació estructurada procedimental, en canvi, fa més ús del disseny top-down, és a dir, estableix els requeriments finals de l'aplicació i arma tota una sèrie de funcions que resolen el problema de forma eficient. En aquesta aproximació, la reutilització de codi és menys efectiva.