Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

Como acceder al contador de "cuentas"?

Entonces, tengo mi clase padre cuentas, y mis dos clases account y saveAcc que heredan de cuentas. En las 3 clases, tengo un static static nCantAcc = 0; que se encarga de contar la cantidad de instancias en el constructor, en cada constructor referenciado por el nombre de la clase. En el codigo que copio aqui debajo, obtengo que tengo 1 cuenta "account" y una cuenta "saveAcc", lo cual es correcto, pero existe el contador de instancias de la clase "cuentas"? O en la herencia, la instancia padre no existe como tal? O en español: existe 1 "account", 1 "saveAcc", pero no existen 2 "cuentas"?

import {Cliente} from './cliente.js'
import {cuentaBanco} from './account.js'
import {saveAcc} from './saveAcc.js'
//import { cuentas } from './Cuentas.js';

const oCli      = new Cliente("jello carlos","543543543","53454353");
const cAcc1     = new cuentaBanco (oCli, "43534543534", "Pueyrredon");
const cAcc2     = new saveAcc(oCli,"4547898989","Monserrat");

console.log (cAcc1)
cAcc1.retiro(2000)
cAcc1.deposito(1000)

cAcc1.transferencias(50, cAcc2)

console.log(cuentaBanco.nCantAcc)
console.log(saveAcc.nCantAcc)
3 respuestas

Hola Cirigliano, cómo estás?

En la clase padre, este "contador" de instancias no aumentará, pues esa clase padre, al ser heredada, no es instancia, la única forma de instanciar una clase es utilizando la palabra new.

Correcto Thiago, imaginaba algo asi. Entonces, si nuestro cliente me preguntara "cuantas cuentas tengo en total?", con la forma actual del curso, no podria responderle, verdad?

Podria mostrarle una suma de cada contador, pero como dice el instructor "eso no es escalable".

solución!

No es posible hacer esto fácilmente, tendrás que crear una nueva clase que cuente así:

class ContadorDeCuentas {
  constructor() {
    this.cuentas = 0;
  }

  maisUmaCuenta() {
    this.cuentas++
  }
} 

Entonces tendrá que instanciar y exportar esta clase:

export const contadorDeCuentas = new ContadorDeCuentas();

Una vez exportada, utilizaremos esta instancia en todas las clases que queremos que contará como una cuenta más:

import { contadorDeCuentas } from 'aquí va el camino donde está la instancia';

class CuentaCorrente extends Cuenta {
   constructor() {
      contadorDeCuentas.maisUmaCuenta();
   }
}

Cuando queramos saber cuántas cuentas tiene, simplemente accedamos a la propiedad cuentas de contadorDeCuentas:

import { contadorDeCuentas } from 'aquí va el camino donde está la instancia';

console.log(contadorDeCuentas.contas) //1
Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios