UNITAT 6. POO

HISTÒRIA I FONAMENTS

PILARS

Els pilars del paradigma són aquells que donen solidesa a un projecte. Aixó vol dir que ell programa podrà ser:

  • Mantingut
  • Transportat
  • Adaptat a noves plataformes
  • Ampliat per a nous requeriments

Els pilars són l’abstracció, l’encapsulament, l’herència i el polimorfisme.

1. ABSTRACCIÓ.

La trahison des images

És la capacitat que ens permet entendre la descomposició d’un projecte en parts més petites on cada una cumpleix els requisits de les bases de la poo.

  1. Tot és un objecte, amb una identitat pròpia.
  2. Un programa és un conjunt d’objectes que interactuen entre ells.
  3. Un objecte pot estar format per altres objectes més simples.
  4. Cada objecte pertany a un tipus concret: una classe.
  5. Objectes del mateix tipus tenen un comportament idèntic.

2. ENCAPSULACIÓ.
Patrons dels objectes.

És el pilar que permet tenir el codi ordenar dins “una funció” que el manté preparat per ser instanciat i poder convertir-se en part d’un programa.

L’encapsulació bàsica és la de una classe, la classe és el patró de com es construirà un objecte, per exemple:

idea de la classe Cotxe

Una classe conté:

  • Atributs: són els estats variables de cada classe.
  • Mètodes: Són les accions que pot realitzar cada classe.
    • constructors: és el mètode que es crida quan es instancia una classe.
    • Getters: Són els mètodes que permeten obtenir els valors dels atributs d’un objecte.
    • Setters: Són els mètodes que permeten canviar els valors dels atributs d’un objecte.
    • Accions:

Descripció d’una classe.

caixa UML per definir una classe

Implementació d’una classe:

Per implementar una classe a javascript tenim moltes opcions, he seleccionat la més pareguda a la nomenclatura JAVA, que no és javascript 🙂

//********************************
//IMPLEMENTACIÓ DE LA CLASSE COTXE
//exemple d'implementació de classe.
//********************************
class Cotxe{
  //EL MÈTODE CONSTRUCTOR
  constructor(marca,color){
    this.marca=marca;
    this.color=color;
  }


  //MÈTODES DE SETTERS
  setColor(color){this.color=color;}

  //MÈTODES DE GETTERS
  getColor(){return this.color;}
  getMarca(){return this.marca;}
  getCotxe(){return "el cotxe és de la marca: " + this.getMarca() + ", de color : " + this.getColor();}

  //ALTRES MÈTODES
  printCotxe(){console.log (this.getCotxe());}
}

See the Pen POO ENCAPSULACIÓ by PereAntoni (@pereantoni) on CodePen.

Exercicis

  1. Fes un fork del pen anterior i realitza sobre ell els exercicis. Recorda a obrir la consola per poder veure les execucions.
  2. Afegeix un altre cotxe. Fes que s’imprimeixi amb l’instrucció de la classe.
  3. Afegeix l’atribut matrícula i el mètode setMatricula(matricula).
  4. Posa una matricula a tots els cotxes amb setMatricula(‘matricula’).
  5. Afegeix l’atribut matrícula a getCotxe .
  6. Comprova que funcionen totes les modificacions.

3. HERÈNCIA
Especialització de classes.

L’herència permet generar classes a partir d’altres classes, serien les filles de la classe pare.

Les classes filles hereten els atributs i els mètodes de les classe pare. Les classes filles poden usar, afegir o modificar els mètodes i atributs existents.

class Animal{
  //CONSTRUCTOR
  constructor(nom,pes){
    this.nom=nom;
    this.pes=pes;
    console.log("Creant animal tipus " + this.constructor.name + "," + this.getNom() + " que pesa " + this.getPes());
  }
  //GETERS I SETTERS
  setNom(x){this.nom = x;}
  getNom(){return this.nom;}
  setPes(x){
    console.log("L'animal " + this.getNom() + " canvia el seu pes de " + this.getPes() + " a " + x );
    this.pes=x; return "ha canviat de pes";}
  getPes(){
    //console.log("L'animal " + this.nom + " pesa " + this.pes);
    return this.pes;}
  getAnimal(){
    console.log("Animal: " + this.constructor.name + "," + this.getNom() + " pes: " + this.getPes() + ", so: " + this.so);
    return "";
  }
  //ACCIONS
  menja(x){this.setPes(this.getPes() + x);}
  gasta(x){this.setPes(this.getPes() - x);}
  xerra(){
    this.so="som un animal";
    console.log("Xerra " + this.getNom() + ": " + this.so);
    return this.so;
  }
  }

See the Pen POO HERÈNCIA by PereAntoni (@pereantoni) on CodePen.

Exercicis

Damunt un fork fes els següents exercicis:

  1. Damunt el programa. Crea un Moix nou de nom “Doraemon” i de pes 10. Donalí de menjar 4 i comprova el resultat de tots els animals.
  2. Dona instruccions per la consola. Imprimeix tots els animals amb l’instrucció getAnimal().
  3. Fes un altre tipus d’animal que hereti de la classe Animal, i com el moix, canvii el mètode xerra()
  4. Afegeix al programa instruccions que comprovin que funciona correcte.
  5. Canvia el mètode gasta() de Animal. Quan el pes sigui menor de 0, l’animal ha de posar l’atribut this.viu=false. Ha d’enviar un missatge de defunció de l’animal per consola.

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>