Taula de Contingut

Pas 01 exemple_polimorfisme_01.cxx
 
  - streams de la llibreria estàndard per escriure a consola
  - namespace std::nom
 
Pas 02 exemple_polimorfisme_02.cxx
 
  - definició d'una classe
  - instaciacio i missatge a un objecte
 
Pas 03 exemple_polimorfisme_03.cxx
 
  - classe acabada en ;
  - mètode public:
 
Pas 04 exemple_polimorfisme_04.cxx
 
   - Fem una subclasse d'Animal: Elefant. En C++ es fa "SubClasse : public SuperClasse"
 
Pas 05 exemple_polimorfisme_05.cxx
 
  - cridem el mètode usant un punter
  - sintaxis: 
    UnTipus*  punter a UnTipus
    &unObjecte  adreça d'unObjecte
 
Pas 06 exemple_polimorfisme_06.cxx
 
  - Convertim el mètode a virtual. Així el sistema d'execució sap resoldre
    l'enllaç cap el mètode concret.
  
  - Afegim noves classes: Granota i Gat
 
Pas 07 exemple_polimorfisme_07.cxx
 
  - Pas de paràmetre per referència: "Tipus&" 
    És un altre cas de polimorfisme.

  - Refem el main: ara instanciarem objectes i cridarem la nova funció
 
Pas 08 exemple_polimorfisme_08.cxx
 
  - Extreiem les classes l'Animal a un arxiu "animals.hxx"
    Nota: normalment usarem un fitxer per classe.
  
  - Ara no és necessari incloure l'<iostream> perquè ja està al header

  - Pas de paràmetre per referència: "Tipus&" 
    És un altre cas de polimorfisme.
  
  - Com que no pensem modificar l'animal, passem per referència constant 
    Això fa que necessitem que el mètode escriuEspecie() també 
    sigui declarat constant

  - Refem el main: ara instanciarem objectes i cridarem la nova funció
 
Pas 09 animals_09.hxx
    - A tots els headers (.hxx) els hi afegirem sistemàticamen 
      una condició del precompilador #ifndef - #define - #endif
      Això evitarà que es redefineixin les mateixes classes desde diferents unitats
      de compilaciós (diferents .cxx)
    
    - És necessari incloure <iostream> perquè en fem ús aquí.
    
    - Hem declarat el mètode 'const'. Amb això estem dient que el mètode
      no modifica l'estat de l'objecte.
 
Pas 10 exemple_polimorfisme_10.cxx
 
  - Anem a introduir els animals en una col.lecció
  - <vector> suporta la sintaxis d'array (subscript) 
  - És una classe 'template' :  usarem std::vector<Animal>
 
Pas 11 exemple_polimorfisme_11.cxx
 
  - ara el vector serà de punters a Animal
  - iterarem amb un for
  - mètode size() del vector
  - usem "*" per referir-nos a l'objecte apuntat per un punter. p.e: *animal[i]
 
Pas 12 exemple_polimorfisme_12.cxx
 
  - ara (suposem) ens adonem que l'estructura que necessitem és una llista 
    i no pas un vector, ja que voldrem fer molts borrats i insercions.

  - farem el canvi pas a pas:
    1er: fem un typdedef de std::vector<Animals*> a un nom més senzill
    i fem la iteració usant iteradors
  
  - per cert: ens desfem la la funció escriuInfo, ja que no ens facilita el codi
 
Pas 13 exemple_polimorfisme_13.cxx
 
   - Estem fent el canvi de vector a llista :
     Ara que iterem amb iteradors i tenim el typdef, fer el canvi només
     implica: (a) canviar el typedef i (b) canviar l'include a <list>
     (Aquesta és la grandesa dels iteradors: desacoblar el codi d'iteració 
     de l'estructura de dades)
 
Pas 14 animals_14.hxx
   - ara afegim un nou atribut a la base de tipus std::string
   - afegim accessors d'escriptura i de lectura
 
Pas 15 exemple_polimorfisme_15.cxx
 
   - usem els accessors d'escriptura i de lectura de l'atribut _nom

   En resum hem après:
   - com escriure per consola fent servir <iostream>
   - simbols de la libreria localitzats al namespace std::
   - les classes acaben en ;
   - el mètodes i atributs per defecte són private
   - com fer subclasses: "Sub : public Super"
   - perquè serveixen els mètodes virtuals
   - polimorfisme
   - usar #ifndef als headers per evitar redefinicions
   - pas de paràmetres per referència
   - col.leccions estàndars vector i list
   - typdefs
   - iteradors
   - std::string
   - ús d'accessors
 

[Python Powered]