sabato 31 agosto 2024

Download RENNSPORT versione Beta

 


Un gioco in versione beta di simulazione gare di corsa, quello proposto da Epicgame nel gioco dal titolo RennSport.

Il gioco per sistemi operativi Windows, è in lingua inglese ed è scaricabile qui https://store.epicgames.com/it/p/rennsport-3776b8

venerdì 30 agosto 2024

Aggiornamento Archivio Comuni e Stati esteri

Quando si realizzano software gestionali con l'uso dei codici per i comuni ed i stati, per varie elaborazioni o verifiche (vedi il codice fiscale), dal sito dell'agenzia delle Entrate è possibile scaricare l'archivio dei comuni e stati esteri aggiornato alla fine di questo mese.

giovedì 8 agosto 2024

FT: Buone vacanze 2024

 


Finalmente le meritate vacanze e soprattutto uno dei fuori tema che più preferisco, secondo a quello del Natale.

In questo primo semestre, tanto ho dato, sia a livello lavorativo e sia per il sociale, un giro di boa che dovrò fare, sperando di raccogliere altri buoni frutti.

Ammetto che l'attività con il sociale mi sta assorbendo energie e soprattutto tempo, che non mi permette di curare i miei interessi e soprattutto coltivare le amicizie, ma spero che in questi mesi di fine anno possa trovare quel tempo per godermi i miei hobby.

Finalmente sono riuscito ad aiutare un mio caro parente, si una situazione particolare, soddisfazioni anche nello scrivere articoli, e continuata la programmazione con la scheda Raspberry, che è sempre più affascinante.

Tornerò a settembre con nuovi articoli e tanta voglia di scrivere trucchi e notizie informatiche, sperando di avere sempre più tempo per la programmazione.

Auguro a tutti i miei lettori buone vacanze e di trascorrere momenti di serenità e felicità.


mercoledì 7 agosto 2024

Download gioco Illuvium

 


Disponibile gratuitamente e per il sistema operativo Windows, il gioco Illuvium, un gioco di azione con una grafica molto ben fatta.

Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/illuvium-60064c

Tutorial TypeScript : Parte settima - le classi utilizzo avanzato

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/javascript/art_parte-settima-le-classi-utilizzo-avanzato_1874.aspx


In questo nuovo articolo riprendiamo l’argomento della precedente parte, la sesta, sull’utilizzo delle classi.
In particolare, vedremo alcuni aspetti avanzati della creazione e gestione delle classi, che estende la conoscenza base visto nel precedente articolo.
Riprendiamo il progetto precedente, in modo che utilizziamo la classe già realizzata in precedenza.


Stesura del codice

Le classi possono a loro volta ereditare da altra classe, questa tecnica si usa nella programmazione orientata ad oggetti, e permette di estendere, ossia ampliare, una classe con le proprietà, metodi ed eventi di altra classe.
Questa tecnica può tornare utile quando abbiamo l’esigenza di creare n classi ed in molte o tutte dobbiamo avere delle stesse proprietà o metodi. 
Vediamo di seguito un esempio.


Eredità estendere una classe

Nel linguaggio di programmazione TypeScript, per estendere una classe o meglio ereditare da un’altra dobbiamo utilizzare la parola chiave “extends”, seguito dalla classe che si vuole ereditare.
Si crea una classe denominata “Lavoro” con una proprietà di tipo “string” denominata “descrizioneLavoro”, di seguito si riporta il frammento di codice delle suddette operazioni.



TypeScript

class Lavoro {

 

  public Descrizione: string;

 

   constructor(descrizioneLavoro: string)

   {

 

     this.Descrizione = descrizioneLavoro;

 

   }

 

 }

 

Terminata la creazione di una classe da ereditare, andiamo nella classe creata nell’articolo precedente, quella denominata “anagrafica” ed estendiamo da questa appena creata.


TypeScript:

export class Anagrafica extends Lavoro {

 

Se la nuova classe si trova nello stesso file della classe “Anagrafica” ma nella parte inferiore della dichiarazione di quest’ultima, l’ambiente di sviluppo “Visual Studio Code”, visualizzerà un messaggio di errore in cui dev’essere dichiara prima, il tutto come mostrato in figura 1.


Figura 1 – Il messaggio di errore

Spostiamo la classe in alto, in modo che non abbiamo più l’errore.

La classe deve avere nel costruttore la parola chiave “super” ed indicare la proprietà della classe su cui si vuole ereditare.
Di seguito il frammento di codice completo della classe “Anagrafica”.


TypeScript:

export class Anagrafica extends Lavoro {

  public Nome: string;

  public Cognome: string;

  public totaleCaratteri: number = 0;

 

  //Costruttore

  public constructor(nome: string, cognome: string, DescrizioneLav: string ) {

    super( DescrizioneLav);

    this.Nome = nome;

    this.Cognome = cognome;

 

  }

 

  public getNominativo(): string {

    return 'Il nominativo è è: ' + this.Nome + '  ' + this.Cognome;

 

  }

 

  //Metodo che non restituisce nessun valore

  public setTotaleCaratteri(testo: string): void {

    console.log(testo.length);

 

  }



}

 


La parola Super con la proprietà da passare, e perché nella classe “Lavoro” abbiamo impostato nel costruttore l’obbligo di passare un parametro.
Di seguito si riporta il frammento di codice del relativo utilizzo.


TypeScript:

ngOnInit(): void {

    let ana: Anagrafica = new Anagrafica('Emanuele', 'Mattei', 'Impiegato');

    alert(ana.Nome + ' ' + ana.Cognome + ' ' + ana.Descrizione);

  }

 

Se la classe Lavoro non aveva il parametro del costruttore, non c’era bisogno di mettere nella parola chiave “super” il valore.
Di seguito si riporta la dichiarazione della classe “Lavoro” senza parametri per il costruttore.



TypeScript

class Lavoro {

 

  public Descrizione: string = '';

 

   constructor()

   {



   }

 

 }

 

Di seguito si riporta la dichiarazione della classe “Anagrafica” che eredita da “Lavoro” e che non imposta nessun lavoro nella parola chiave “super”.


TypeScript

 

export class Anagrafica extends Lavoro {

  public Nome: string;

  public Cognome: string;

  public totaleCaratteri: number = 0;

 

  //Costruttore

  public constructor(nome: string, cognome: string, DescrizioneLav: string ) {

    super();

    this.Nome = nome;

    this.Cognome = cognome;

    this.Descrizione = DescrizioneLav;

 

  }

 

  public getNominativo(): string {

    return 'Il nominativo è è: ' + this.Nome + '  ' + this.Cognome;

 

  }

 

  //Metodo che non restituisce nessun valore

  public setTotaleCaratteri(testo: string): void {

    console.log(testo.length);

 

  }



}

 

Di seguito il relativo utilizzo.

TypeScript

ngOnInit(): void {

 

    let ana: Anagrafica = new Anagrafica('Emanuele', 'Mattei', 'Impiegato');

    alert(ana.Nome + ' ' + ana.Cognome + ' ' + ana.Descrizione);

 

  }

 

 

Le interfacce

Altro aspetto del linguaggio TypeScript, è quello di realizzare delle interfacce, che anch’esse possono avere proprietà e metodi, ma solo come dichiarazione in quanto la loro implementazione avviene nella classe in cui viene eredita.
Nelle interfacce troviamo la firma, la dichiarazione che poi implementeremo nella classe.
Di seguito si riporta il frammento di codice di un’interfaccia composta da una proprietà ed un metodo.


TypeScript.

 interface Persona{

  nucleoFamigliare: number;

 

  ottieniDatoCompleto():string;



 }

 

Tramite la classe “Anagrafica” dobbiamo ereditare l’interfaccia ed utilizzare la proprietà e metodo dell’interfaccia.
Di seguito si riporta il frammento di codice delle suddette operazioni della classe “Anagrafica”.


TypeScript

export class Anagrafica   implements  Persona {

  public Nome: string;

  public Cognome: string;

  public totaleCaratteri: number = 0;

 public nucleoFamigliare: number;

 

 ottieniDatoCompleto(): string {

 

  return this.Nome + " " + this.Cognome + this.nucleoFamigliare;

 

 }

 

  //Costruttore

  public constructor(nome: string, cognome: string,  NucleoFamiglirare: number ) {

 

    this.Nome = nome;

    this.Cognome = cognome;

    this.nucleoFamigliare = NucleoFamiglirare;

 

  }

 

  public getNominativo(): string {

    return 'Il nominativo è è: ' + this.Nome + '  ' + this.Cognome + ' ' +  this.nucleoFamigliare;

 

  }

 

  //Metodo che non restituisce nessun valore

  public setTotaleCaratteri(testo: string): void {

    console.log(testo.length);

 

  }



}

 

Anche per le interfacce, la dichiarazione qualora avvenga nello stesso file dove si trova la classe che dovrà implementarle, si devono trovare in alto alla classe, altrimenti genera un errore.
Di seguito si riporta il frammento di codice del relativo utilizzo.

TypeScript:

ngOnInit(): void {

  

    let ana: Anagrafica = new Anagrafica('Emanuele', 'Mattei', 3);

    alert(ana.getNominativo());

 

  }

 

 

Override del metodo

Con la parola chiave Override possiamo riscrivere le azioni che deve fare un metodo con lo stesso nome.
Supponiamo di avere un metodo che deve restituire la descrizione della mansione del lavoro, il nome del metodo sarà uguale per le due classi, di cui una sarà ereditata.
Una classe si chiamerà lavoro, ed avrà il metodo “getMansione” ed un’altra classe, che ereditarietà dalla classe “Lavoro” avrà anch’esse il metodo “getMansione” ma di tipo Ovveride.
Di seguito si riporta il frammento di codice della classe “Lavoro”.




TypeScript:

export class Lavoro {

 

  public Descrizione: string = '';

 

  constructor() {

  }

 

  getMansione(): string {

 

    return this.Descrizione;

 

  }

}

 

Di seguito si riporta il frammento di codice della dichiarazione della classe di “Anagrafica” che eredita dalla classe lavoro.


TypeScript:

 

export class Anagrafica   extends  Lavoro {

  public Nome: string;

  public Cognome: string;

  public totaleCaratteri: number = 0;



 override getMansione(): string {

 

  return "Il lavoro è: " + this.Descrizione;

 

 }

 

  //Costruttore

  public constructor(nome: string, cognome: string, descrizioneLavoro: string ) {

    super()

    this.Nome = nome;

    this.Cognome = cognome;

    this.Descrizione = descrizioneLavoro;

 

  }

 

}

 







Come si è visto dal precedente codice, il metodo “getMansione” è preceduto dalla parola chiave “override”, permettendo in questo modo di avere un metodo con lo stesso nome di quello eredita le cui azioni sono diverse.

Di seguito si riporta il frammento di codice del relativo utilizzo.





TypeScript:

  ngOnInit(): void {

 

    let lav: Lavoro = new Lavoro();

    lav.Descrizione = "Direttore";

    alert(lav.getMansione());

    let ana: Anagrafica = new Anagrafica('Emanuele', 'Mattei', "Impiegato");

    alert(ana.getMansione());

 

  }

 




Conclusioni

Si conclude con questo articolo la serie dedicata alle classi ed al tutorial di TypeScript, che aveva il compito di fornire le basi e delucidazioni al lettore che si avvicinava a questo linguaggio di programmazione.
Un linguaggio sempre più usato e che è parte della tecnologia Angular, che in questi ultimi due anni sta riscuotendo un grande interesse da parte di aziende e sviluppatori con una costante crescita.
Il tutorial ha fornito una panoramica sul linguaggio TypeScript fornendo numerosi esempi di codice per i vari temi trattati.
Il linguaggio è continuamente aggiornato da Microsoft, con nuova sintassi o parole chiavi.
Il tutorial ha fornito le basi per chi si avvicina per la prima volta a questo linguaggio per il web.