JavaScript – ereditarietà

Quando si invoca un costruttore, o si crea un oggetto con la chiave new, l’oggetto creato possiede una proprietà di nome prototype (prototipo) condivisa da tutti gli oggetti creati con quel costruttore.

Qualsiasi proprietà o metodo aggiunto al prototipo viene automaticamente ereditato da tutti gli oggetti creati.

Come si vede ho creato l’oggetto Libro con il costruttore e poi ho aggiunto una nuova proprietà sconto comune ai due oggetti.

Si può anche ridefinire il prototipo estendendo l’oggetto.

Veröffentlicht unter Senza categoria | Schreib einen Kommentar

JavaScript – Oggetti

Non esiste il concetto vero e proprio di classe ma il concetto di Oggetto. Il concetto di attributo viene sostituito con il concetto di proprietà.

Si accede alle proprietà (attributi) di un oggetto (classe) mediante la parola this.

In questo caso ho istanziato un oggetto auto usando il costruttore, inoltre all’interno del costruttore ho usato la parola this.

Questo è il modo più semplice per creare un oggetto con la parola Object().

Creo un oggetto a cui ho due proprietà marca e cilindrata.

Veröffentlicht unter Senza categoria | Schreib einen Kommentar

JavaScript – Console

Per attivare la console si va su:

ossia si accede dall’elenco dei programmi e si selezione configura Java.

Si seleziona avanzate e quindi si seleziona misatr console.

A questo punto quando si “esegue” il codice Java nella pagine si seleziona con il pulsante destro “analizza elemento”

Ed alla base della pagina si apre:

Si selezione il pannello console e si vede l’output gestito dal comando console presente nella pagina html.

Veröffentlicht unter Senza categoria | Schreib einen Kommentar

JavaScript – Variabili – funzioni – operatori

E’ buona norma inizializzare le variabili. La dichiarazione avviene specificando la parola chiave var seguita dal nome della variabile ed assegnando il suo valore iniziale.

una variabile non ha visibilità globale se definita in una funzione. Una funzione viene indicata con la parola function con i relativi parametri e seguita dalle parentesi graffe.

Esistono gli operatori ++ e –.

Una stringa di caratteri è un insieme di caratteri racchiusi tra apici singoli o doppi.

\n va a capo all’interno di una stringa racchiusa tra doppi apici.

Concatenazione

La concatenazione tra stringhe avviene con l’operatore +.

IF

Il costrutto if else è lo stesso usato per il C++.

Operatori booleani

! negazione logica

&& and logico

|| or logico.

== uguaglianza

=== se si vuole verificare che due valori siano gli stessi al di là delle conversioni. Se sono di tipo diverso restitusce false (operatore di identità).

In JavaScript è meglio sempre usare === osì si evita la conversione.

Casting implicito

se in un contesto viene richiesta una stringa e viene usato un numero, allora si ha la trasformazione in stringa e viceversa.

Vettore

Un vettore si definisce tra parentesi quadre.

la parola length mi fornisce la lunghezza del vettore.

A differenza di altri linguaggi esistono vettori non omogenei e di accede tramite l’indice.

v.length mi fornice la lunghezza del vettore.

Iterazione e cicli

Si ha la stessa costruzione del C++.

Eccone un esempio:

Let

Definisce una variabile permette di dichiarare variabili limitandone la visibilità ad un blocco di codice, ad un assegnazione, ad un’ espressione in cui è usata.

ontrariamente alla parola chiave var, che invece definisce una variabile globalmente in uno script o localmente in un qualunque blocco di codice di una funzione.

Eccone un esempio:

Si noti che ho utilizzato il codice console. Nel post successivo descriverò come attivare la console Java e la sua visualizzazione.

Veröffentlicht unter Senza categoria | Schreib einen Kommentar

JavaScript – Introduzione

1995 nasce JavaScript per opera dei realizzatori di Netscape.

Si intercetta l’evento di apertura o chiusura di una pagina, il clic di un pulsante su una form, il cambiamento del contenuto di un campo di inserimento di un testo, la manipolazione di una pagina, aggiungere un campo in una formo una riga in più a una colonna e così via.

questo piccolissimo script produce questo output:

Uno dei problemi più grandi per gli sviluppatori di pagine web è creare la compatibilità tra i vari browser per questo è nato un consorzio che disciplina la problematica: Word Wide Web Consortium o W3C.

JavaScript resta un nome proprietario di Netscape e ci si riferisce allo standard ECMAScript. ECMA internation (http://www.ecma-international.org) fornisce lo standard di sviluppo.

Netscape stava cercando di sviluppare un nuovo linguaggio che potesse essere usao all’interno delle pagine HTML; stiamo parlando del 1995 con Brendan Eiched.

Il nome doveva essere LiveScript ma si stava affacciando il nuovo linguaggio Java della Sun Microsystems. A questo punto è cambiato il nome in Javascript.

Uno degli effetti più divertenti ad esempio è quello di cambiare l’immagine quando il cursore si pone sopra l’immagine esistente.

Appena vado sopra l’immagine essa mostra un’altra immagine.

Un altro ambito è quello di controllare la presenza o meno di un elemento in una form.

Ecco un semplice controllo.

Veröffentlicht unter Senza categoria | Schreib einen Kommentar

GPOI – Le metriche del software – Esempio

Si prenda in considerazione la gestione di una anagrafica di attività commerciali sia di tipo provato che di tipo ditta, cioè che possiedono uan partita IVA con differenziazione delle due tipologie.

Si vogliono gestire le informazioni relative a:

  • indicazione se privato o ditta
  • codice fiscale
  • cognome
  • indirizzo
  • descrizione attività
  • data decorrenza attività

Le funzioni da attivare sono:

  • inserimento in anagrafica
  • modifica anagrafica
  • cancellazione anagrafica
  • inserimento attività commerciale
  • modifica attività
  • cancellazione attività
  • associazione anagrafica/ attività
  • visualizzazione dati complessi con conteggio anagrafiche
  • visualizzazione singola scheda
  • stampa dei dati complessi con conteggio anagrafiche
  • stampa singola scheda.

Ecco il database:

le tabelle CITTA, STRADARIO, SIGLE PROV sono preesistenti ed esterne al sistema.

SI analizza il problema dal punto di vista della metrica dei Function Point, individuando i file ILF ed EIF: la differenza sostanziale fra i due tipi è che gli ILF sono interni al confine dell’applicazione e mantenuti dall’applicazione stessa, mentre gli EIF sono esterni al confine e solamente utilizzati in lettura dalle funzioni della mostra applicazione.

In questo esempio si ha 1 ILF e 3 EIF

TipDescRETDETComp ILF/EIFU
FP
ILFAna3
EIFCitta1
EIFProv1
EIFStra1

Gli elementi che mettono in relazione due file (chiavi esterne) vengono contati una volta per ogni file logico che concorre al conteggio: pertanto i DET relativo alla codifica (citta, provincia e via) compare sia nell’ILF che negli EIF ma viene conteggiato una volta sola e negli ILF.

Le funzioni di tipo transazionali devono essere classificate analizzando le caratteristiche di ogni funzionalità elementare:

EI se il processo serve ad acquisire dati dall’esterno o ad aggiornare gli ILF

EO se lo scopo primario del processo è fornire dati all’esterno del confine, tramite funzinlaità di calcolo o creazione di dati derivati.

EQ: se il processo logico invia dati all’esterno ma non esegue calcoli non crea dati derivati non altera il comportamento del sistema e non mantiene ILF.

Si hanno le seguenti funzioni:

TipoDescrFTRDET
EIins anag
EIupd anag
EIdel anag
EIins att
EIupd att
EIdel att
EIass. utenti/att
EOVisal dati con conteggio
EO Visul. scheda
EOStampa dati cont
EQstampa schede

Poi si determino la complessità degli UFP usando al stessa tabella inserendo la complessità.

Veröffentlicht unter Senza categoria | Schreib einen Kommentar

Conclusione e ripasso nomenclatura

Check List:

  • il conteggio dei FP è un compito del piano generale del progetto?
  • la persona che esegue il calcolo dei FP è adeguatamente istruita a farlo?
  • chi esegue il calcolo dei FP usa la documentazione corrente per calcolare i FP?
  • sono state eseguite le linee guida dell’IFPUG?
  • sono state eseguite le linee guida interne all’organizzazione per il calcolo dei FP?
  • L’applicazione è stata calcolata da un punto di vista logico e non fisico?
  • I vincoli stabiliti per il calcolo dei FP coincidono con i vincoli stabiliti per le altre metriche?
  • le percentuali delle singoli componenti dei FP (ILF, EIF, EI, EO, EQ) rispettano le medie industriali (40% per ILF, 5% EIF, 20% per EI, 25% per EO, 10% per EQ) e le medie stabilite per GTE? Se no, c’è una valida ragione?
  • La raccolta delle transazioni (EI, EO, EQ) e dei file (ILF, EIF) è stata controllata dal gruppo di lavoro?
  • Le risposte date ai 14 GSC ricadono nel range delle risposte date ad altri progetti nella stessa organizzazione?
  • Il calcolo è stato registrato in un archivio per i FP?
  • Le premesse sono coerenti con tutti gli altri progetti?
  • Le premesse sono state accuratamente documentate?
  • Il calcolo è stato controllato da un esperto in calcoli di FP?

Memorandum

Componente Significato
FP Function Point
UFPFunction Point non pesati
ILFInternal Logical File :
gruppo di dati logicamente collegati
riconoscibili dall’utente
e mantenuto aggiornato
dentro il confine dell’applicazione
EIFExternal Logical File:

gruppo di dati logicamente collegati
riconoscibili dall’utente
e mantenuto aggiornato
all’interno del confine
di un’altra applicazione

ILF /EIFtanti RET e DET – ILF sono i file che possono essere modificati – EIF solo in lettura
RETRecord Element Type: tabella
DETData element Type: singoli campi di una tabella
EIFunzioni elementari idi input
EOFunzioni di output
EQFunzioni di query
FTRsi indica o ILF o EIF

Veröffentlicht unter Senza categoria | Schreib einen Kommentar

GPOI – Le metriche del software – Tabulazione dei risultati

Il calcolo dei FP si ottienen moltiplicando il valore di UFP (Function Point non pesati) per il fattore di aggiustamento VAF (valore del Fattore di aggiustamento – VAlue Adjustment Factor).

FP=UFP\cdot VAF=\sum_{i=1}^{5}VP_{i}\cdot \left ( 0.65+0.01\cdot \sum_{i=1}^{14}F_{i} \right )

E’ comodo usare una tabella riepilogativa :

ComponenteBassoMedioAltoTotale
EI0 x 30 x 40 x 60
EO 0 x 4 0 x 5 0 x 70
EQ 0 x 3 0 x 4 0 x 60
ILF 0 x 7 0 x 10 0 x 150
EIF 0 x 5 0 x 7 0 x 10 0
Totale UFP0
VAF0
Totale FP0

Nel caso dell’esempio riportato ecco come si è completata la tabella considerando un VAF =1,1.

ComponenteBassoMedioAltoTotale
EI3 x 3 0 x 40 x 69
EO 1 x 4 0 x 5 0 x 74
EQ 1 x 3 0 x 4 0 x 63
ILF 1 x 7 0 x 10 0 x 157
EIF 0 x 5 0 x 7 0 x 10 0



Totale UFP23



VAF1.1



Totale FP25.3

Veröffentlicht unter Senza categoria | Schreib einen Kommentar

PHP – Classi – Interfacce

Le interfacce, come le classi astratte, sono delle classi speciali che non possono essere istanziate ma soltanto implementate.

Praticamente esse delineano la struttura di una classe. La dichiarazione di un’interfaccia è simile a quella di una classe, ma include soltanto metodi (privi di implementazione) e costanti

quindi si vede che ho implementato solo dei metodi.

Poi in questa classe implemento i metodi precedenti:

in quest’ulteriore classe implemento nuovamente la stessa interfaccia:

Inoltre, dato che entrambe le classi implementano l’intefaccia IUser, è possibile tramite i metodi setPartner di ognuna, impostare un partner di tipo UserA ad un’istanza di tipo UserB e vice versa

Veröffentlicht unter Senza categoria | Schreib einen Kommentar

PHP – Classi – Astratte

Le classi astratte invece sono un sistema che permette di definire classi parzialmente completate che lasciano l’implementazione di alcuni metodi alle sottoclassi.

Una classe astratta deve essere definita utilizzando la parola chiave abstract; lo stesso vale per quei metodi astratti della classe .

Una classe astratta non può essere istanziata.

Per capire l’importanza ecco un piccolo programma:

Qui si nota che ho definito un attributo private ed uno public.

l’attributo pubblico può essere usato dalla variabile c mentre l’attributo privato non può essere usato all’esterno.

Il concetto di area però è un concetto astratto nel senso che può essere usato da tutte le figure ossia devo usare una sottoclasse che adatta il concetto di area alla figura generica.

In un database ad esempio la busta paga è un concetto astratto che deve essere poi usata nelle sottoclassi per adattarle ai vari dipendenti!

Veröffentlicht unter Senza categoria | Schreib einen Kommentar