Etichette

Visualizzazione post con etichetta Informatica 2014/2015. Mostra tutti i post
Visualizzazione post con etichetta Informatica 2014/2015. Mostra tutti i post

giovedì 7 maggio 2015

Correzione Verifica su classe Login Maggio 2015

Realizzare un’applicazione WEB che consenta la registrazione di più utenti. I dati saranno memorizzati all’interno di un array di nome Utenti. In seguito viene descritta l’organizzazione dell’applicazione:



PAGINA HTML DI INDEX PER LOGIN:
<html>
<head>
Pagina di Login
</head>
<body>

<form action="Controllo.php" method="post">
Username: <input type="text" name="user"><br>
Password: <input type="text" name="pass"><br>
<input type="submit" value="Entra">
</form>
Se non sei ancora registrato clicca <a href='nuovaRegistrazione.html'>"QUI"</a> e registrati

</body>
</html>

PAGINA HTML PER EFFETTUARE NUOVA REGISTRAZIONE:
<html>
<head>
Nuova Registrazione...
</head>
<body>
Inserisci i seguenti campi per procedere alla registrazione:<br><br>
<form action="Registra.php" method="POST">
Nome:     <input type="text" name="newNome"><br><br>
Cognome:  <input type="text" name="newCognome"><br><br>
eMail:    <input type="text" name="newEmail"><br><br>
Username: <input type="text" name="newUser"><br><br>
Password: <input type="text" name="newPass"><br><br>
<input type="submit" name="REGISTRATI!"><br><br>
</form>
</body>
</html>

CODICE PHP -> Controllo.php
<?PHP
class Login
{
var $Utenti = array();
var $username;
var $password;
var $fileDati;   //canale per salvataggio su FILE
public function __costruct()
{
$this->username=null;
$this->password=null;
}
public function Inserisci()
{
$this->username=$_POST["user"];
$this->password=$_POST["pass"];
}
public function Visualizza()   //metodo per visualizzare i dati ricevuti in input
{
foreach($this->Utenti as $buffer)
echo "ARRAY: $buffer<br>";
}
public function leggiDati()
{
$utenteRiconosciuto=0;
$this->fileDati=fopen("Database.txt", "r");
while(!feof($this->fileDati))
{
fscanf($this->fileDati,"%s",$this->Utenti[]);
}
$i=3;
$j=4;
while($i<count($this->Utenti))
{
if((strcmp($this->username, $this->Utenti[$i])==0)&&(strcmp($this->password, $this->Utenti[$i+1]==0))) 
$utenteRiconosciuto++;
$i=$i+5;
$j=$j+5;
}

if($utenteRiconosciuto>0)
echo "Utente riconosciuto!<br>";
else
echo "Utente non Riconosciuto...<br>";

fclose($this->fileDati);
}
}
$obj = new Login();
$obj->Inserisci();
$obj->leggiDati();
?>

CODICE PHP -> Registra.php

<?PHP
class Registrazione
{
var $Utenti = array();
var $username;
var $password;
var $nome;
var $cognome;
var $eMail;
var $reg;
var $fileDati;   //canale per salvataggio su FILE
public function __costruct()
{
$this->username=null;
$this->password=null;
$this->nome=null;
$this->cognome=null;
$this->eMail=null;
}
public function Inserisci()
{
$this->Utenti[]=$_POST["newNome"];
$this->Utenti[]=$_POST["newCognome"];
$this->Utenti[]=$_POST["newEmail"];
$this->Utenti[]=$_POST["newUser"];
$this->Utenti[]=$_POST["newPass"];
}
public function Visualizza()   //metodo per visualizzare i dati ricevuti in input
{
echo "username inserito: $this->username";
echo "<br>password inserita: $this->password";
}
public function scriviDati()
{
$this->fileDati=fopen("Database.txt", "a");
foreach($this->Utenti as $b)
fwrite($this->fileDati, $b."\r\n");   //scrivo su file il contenuto della variabile username e password
fclose($this->fileDati);
}
public function benvenuto()
{
$numeroUtentiRegistrati=count($this->Utenti);
$i=($numeroUtentiRegistrati-5);
$this->fileDati=fopen("Database.txt", "r");
echo "Benvenuto ".$this->Utenti[$i]. " ".$this->Utenti[$i+1];
}
}

$obj = new Registrazione();
$obj->Inserisci();
$obj->scriviDati();
$obj->benvenuto();
?>

Tabella Dinamica PHP

Esempio di una tabella dinamica realizzata in linguaggio PHP:

<?php

require_once "profile.php";
$j=0;   //inizzializzo per stampa indice in esempio tabella

echo"<table border=5>";

for($i=0;$i<3;$i++)   //ciclo FOR per numero riche
{
echo "<tr>";
for($j=0;$j<10;$j++)   //ciclo FOR per numero colonne
echo "<td>riga n° $i / colonna n° $j</td>";
echo "</tr>";
}

echo "</table>";

?>

Il PHP (cenni di base)

I Principali linguaggi di programmazione:
PHP | C | C++ | JAVASCRIPT | JAVA |
Cos'hanno in comune questi linguaggi di programmazione?
Tutti utilizzano i costrutti fondamentali:
-)sequenza
-)selezione
-)iterazione
Tutti utilizzano operatori aritmetici e di confronto:
-) + - * / ++ -- += *= > < ecc...
Tutti utilizzano operatori logici:
-) && || !
Tutti sono KeySensitive

Cos'ha di diverso il linguaggio PHP?
-)Dichiarazione di variabili
-)Dichiarazione Array
-)Funzioni

PHP è un linguaggio Web (lato Server)
Dichiarazione di variabili:
$ a;   //è un linguaggio debolmente tipizzato, non va indicato il tipo di dato che la variabile dovrà contenere, essa assume il tipo di dato quanto riceve il determinato dato.
Esempio:
-          $a = 5;   //è un intero
-          $a = ciao;   //ora è una stringa
-          $a = 7,2;   //ora è un float
-          $a = ‘a’;   //ora è un carattere
*!* Negli altri linguaggi di programmazione visti fin ora è necessario inserire il tipo di variabile: int a=5; ecc…

Input e Output:
Quando una pagina HTML contiene un TAG <form>, uno dei suoi attributi è method, che può valere GET o POST.
$_GET e $_POST sono degli Array e servono per intercettare i dati in Input e appartengono al protocollo http://.
Il metodo GET consiste nell’accodare i dati all’indirizzo della pagina richiesta, non si possono trasferire più di 256 caratteri e proprio per quanto detto precedentemente non è indicato per il trasferimento di dati riservati.
Con il metodo POST i dati vengono invece inviati in maniera da non essere direttamente visibili per l’utente, si possono trasferire una maggiore quantità di dati.

$_GET[“nome variabile”];   $_POST[“nome variabile”];   sono i canali associati all’applicazione Client.  
*!* L’equivalente di scanf(…); e gets (…);
Per eseguire un operazione di Output si utilizza l’istruzione echo “testo…”; L’Output è il risultato dell’operazione richiesta dal Client e spedita dal Server, che viene interpretata dal Browser.
*!* L’equivalente di printf(…); e puts (…);

Requisiti necessari:
Per utilizzare PHP si ha sempre bisogno di un Client che richiede un servizio e di un Server che è in grado di offrire il servizio richiesto.
Per simulare un situazione di questo tipo utilizziamo XAMPP che racchiude al suo interno un applicazione Server, nel dettaglio:
-          Apache -> Server Web
-          Interprete PHP
-          DBMS MySQL

Per accedere alla propria macchina si inserisce nella barra indirizzi del browser il localhost oppure l’equivalente indirizzo IP 127.0.0.1, nella cartella localhost deve esserci la pagina web index.html che viene riconosciuta dal server web come Home Page.
*!* Sul nostro PC la comunicazione avviene tra Browser e Server Web. Il Browser lavora su una porta TCP/IP diversa da quella del Server.

Fonti: Appunti lezione Prof. Alemanno

HTML - Cenni di base

L'HTML è un linguaggio web, non rientra tra i linguaggi di programmazione in quanto non ha variabili e non utilizza i costrutti fondamentali ma usa solamente sequenze di "tag".
I "tag" servono a organizzare i contenuti di una pagina web, ce ne sono diversi ma hanno tutti (a eccezione di pochissimi "tag") un inizio e una fine.
I "tag" sono formati dai simboli < e > all'interno dei quali si trova il nome stesso del "tag": esempio <nometag> e vengono chiusi allo stesso modo facendo precedere davanti al nome del "tag" il simbolo "/" esempio </nometag>.

Vediamone alcuni tra i più importanti:
<html>   ...   </html> è il tag che indica il punto di partenza della pagina da visualizzare sullo schermo, tutto il suo contenuto è la pagina web.
<head>   ...   </head> contiene le informazioni utili per i motori di ricerca, contiene il "tag" <title>   ...   </title> che serve a dare il titolo alla pagina web,.
<body>   ...   </body> è la vera pagina HTML, contiene quello che compare sullo schermo, quello che vediamo.
<h1>   ...   </h1> combina l'effetto grassetto con font e dimensione carattere (la dimensione è data dal numero dopo la lettera h, numero che può variare da 1 a 6. Inoltre il "tag" lascia uno spazio sopra e sotto la scritta contenuta.
<br> va a capo di una linea, il "tag" non necessita di chiusura
<bh> disegna una linea, il "tag" non necessita di chiusura
<a è il "tag" per il link, href> è l'attributo del "tag" per linkare una pagina web o un file. E' importante ricordarsi che per linkare una pagina web bisogna inserire l'indirizzo completo in forma http://www.ecc... in caso contrario il browser andrà a cercare pagine interne al sito.
All'interno del "tag" andrà inserita anche il testo da visualizzare come link ed infine la chiusura del "tag" </a>.
*!* href="id" è l'identificatore, per linkare un punto della pagina.
esempio <a href="http://www.google.it">link a google.it</a>
esempio <a href="#a1">Clicca qui per andare in fondo alla pagina</a>   ...   <a id="a1">
<p>   ...   </p> è il "tag" paragrafo, lascia una riga spaziata in alto e una spaziata in basso per tutto il testo contenuto dentro il "tag".

La livello strutturale è fondamentale impostarei "tag" all'interno della pagina seguendo un modello di tipo matriosca come l'esempio seguente:
<html>
   <head>
      <title>
          .....
      </title>
   </head>

   <body>
          .....
   </body>
</html>
non rispettando questa struttura si incrrerà in errori di visualizzazione della pagina.

Liste:
<ul>   ...   </ul> è il "tag" per creare delle liste, molto utile per creare dei menù all'interno delle pagine web, ci sono due tipologie di liste: unordered (disordinate, con i pallini ecc...) e <ol>   ...   </ol> ordered (ordinate, con numeri ecc...), vediamo un esempio:
        <ul>   //unordered
<li>uno</li>
<li>due</li>
<li>tre</li>
</ul>

<ol>   //ordered
<li>uno</li>
<li>due</li>
<li>tre</li>
</ol>

Tabelle:
Molto importanti sono le tabelle che permettono tra l'altro di creare i layout delle pagine web.
il "tag" da utilizzare è <table>   ...   </table>.
vediamo un esempio:
<table "widht:100" border="1">   
//widht->occupa il 100% dell'area visibile, se non viene utilizzato la tabella viene adattata alla parola più lunga.
      <tr> 
      //"tag" per creare una riga all'interno della tabella.
            <td> 
            // "tag" per creare celle all'interno della tabella (non colonne) 
           </td>
<th>
                // "tag"per l'intestazione 
               </th>
      </tr>
            <tr> //righe
<td>...</td>
<td>...</td>
</tr>
<tr> //righe
<td>...</td>
<td>...</td>
</tr>
</table>
E' possibile effettuare delle operazioni sulle celle per unirle l'une alle altre: 
<td colspan="3"> le unisce in orizzontale, in questo caso tre celle 
mentre 
<td rowspan="3"> le unisce in verticale, in questo caso tre celle

Vediamo un esempio di un layout di una pagina web creato con i "tag" <table>:
<html>
<body>

<p>Esercizio Tabella</p>

<table style="width:100%" border="1">   
<tr>
<th>LOGIN</th>
<td colspan="2">INTESTAZIONE...........................................</td>
</tr>
<tr>
<td>Menu
<ul>
<li>selezione 1</li>
<li>selezione 2</li>
<li>selezione 3</li>
</ul>
</td>
<td>CORPO DEL TESO....</td>
<td>colonna dx</td>
</tr>
<tr>
<td colspan="3"> 
chiusura layout pagina...................................
</td>
</tr>
</table>
</body>
</html>

Fonti: Appunti lezione Prof. Alemanno


Primi accenni di Thread

Vediamo un esempio di codice commentato per l'utilizzo dei Thread in JAVA:

CLASSE MAIN():

public class main {

public static void main(String[] args) {
SimpleThread st1= new SimpleThread("Esempio Thread");   //PASSO A PARAMETRO UNA STRINGA PER IL NOME DEL THREAD
st1.start();   //RICHIAMA IL METODO RUN() DEL THREAD
}


CLASSE SIMPLETHREAD:

public class SimpleThread  extends Thread{   //EXTENDS THREAD E' IL RICHIAMO ALLA CLASSE NATIVA DI JAVA PER I THREAD
public SimpleThread(String str)   //COSTRUTTORE
{super(str);}   //COSTRUTTORE -> super richama il costruttore della superClasse, così si possono modificare anche le proprietà private
public void run() {   //METODO RUN() RICHIAMATO DA ISTRUZIONE START DAL MAIN()
for(int i=0; i<10; i++)   //CICLO DA 10 STAMPE

System.out.println(i+ " " +getName());   //STAMPO IL NOME DEL THREAD
try
{
sleep((int)Math.random()*1000);   //METTO IN PAUSA IL THREAD PER 1 SECONDO
} catch (InterruptedException e){}
}
System.out.println("DONE! "+getName());   //STAMPO LA SCRITTA DONE! CON IL NOME DEL THREAD
}
}

martedì 13 gennaio 2015

Verifica del 08/01/2015 - Esercizio 1 in versione C++ e JAVA con rappresentazione UML

Esercizio no.1
1.   Realizzare la Classe Persona costituita dai seguenti membri:
      a.     Proprietà non accessibili dall’esterno della classe
                i.      Cognome
                ii.      nome
                iii.      cittaDiNascita
      b.     Metodi
                i.      Costruttori
                        1.       Persona // inizializza le proprietà ai valori nulli
                        2.      Persona(cognome,nome,citta) // le proprietà vengono fornite all’atto dell’istanza                                  dell’oggetto
                ii.      inserisciDati
                iii.      aggiornaDati
                iv.      visualizzaDati

2.      Esegui il test della classe costruendo un main che crei due istanze di due oggetti, il primo che ne richiama il costruttore senza parametri ed il secondo che richiami il costruttore con parametri. Creati gli oggetti scrivere un programma che utilizzi gli oggetti ed i metodi che li costituiscono.

3.      Si fornisca inoltre una rappresentazione grafica della classe utilizzando le regole dei diagrammi UML

Codice in C++:

# include <iostream>
# include <string.h>

using namespace std;

class Persona{   //CREO LA CLASSE persona
private:   //parametri non accessibili al di fuori della classe
char Cognome[15];   
char Nome[15];
char CittaDiNascita[25];
public:   //metodi accessibili dal main
Persona();   //costruttore che inizializza i parametri a NULL
Persona(char C[15], char N[15], char CdN[25]);   //costruttore con passaggio di parametri
void inserisciDati();   //metodo per inserimento dei dati
void aggiornaDati();   //metodo per aggiornamento dei dati
void visualizzaDati();   //metodo per visualizzare i dati
};

Persona::Persona()   //COSTRUTTORE della classe Persona senza passaggio di parametri
{
strcpy (Cognome,"");   //inizializzo le stringhe
strcpy (Nome,"");  
strcpy (CittaDiNascita,"");
};

Persona::Persona(char C[15], char N[15], char CdN[25])   //COSTRUTTORE della classe Persona con passaggio di parametri
{
strcpy (Cognome, C);   //inserisco il contenuto passato come parametro C-N-CdN all'interno delle variabili della classe Persona COGNOME-NOME-CITTADINASCITA
strcpy (Nome, N);
strcpy (CittaDiNascita, CdN);
};

void Persona::inserisciDati()   //METODO per inserimento dei dati
{
cout<<"Inserisci il Cognome: "<<endl;  //chiedo all'utente di inserire un dato per la variabile Cognome
cin>>Cognome;   //assegno l'input alla variabile Cognome
cout<<"Inserisci il Nome: "<<endl;   //chiedo all'utente di inserire un dato per la variabile Nome
cin>>Nome;   //assegno l'input alla variabile Nome
cout<<"Inserisci il Luogo di Nascita: "<<endl;   //chiedo all'utente di inserire un dato per la variabile CittaDiNascita
cin>>CittaDiNascita;   //assegno l'input alla variabile CittaDiNascita
};

void Persona::visualizzaDati()   //METODO per visualizzare i dati
{
cout<<"Cognome: "<<Cognome<<endl;   //stampa della variabile Cognome
cout<<"Nome: "<<Nome<<endl;   //stampa della variabile Nome
cout<<"Luogo di Nascita: "<<CittaDiNascita<<endl;   //stampa della variabile Luogo di Nascita
};

void Persona::aggiornaDati()   //METODO per aggiornare i dati
{
cout<<"Cognome ATTUALE: "<<Cognome<<endl;   //stampo il contenuto attuale della variabile Cognome
cout<<"Inserisci NUOVO Cognome: "<<endl;   //chiedo all'utente di inserire un nuovo dato per la variabile Cognome 
cin>>Cognome;   //assegno il nuovo input alla variabile Cognome
cout<<"Nome ATTUALE: "<<Nome<<endl;   //stampo il contenuto attuale della variabile Nome
cout<<"Inserisci NUOVO Nome: "<<endl;   //chiedo all'utente di inserire un nuovo dato per la variabile Nome 
cin>>Nome;   //assegno il nuovo input alla variabile Nome
cout<<"Città di Nascita ATTUALE: "<<CittaDiNascita<<endl;   //stampo il contenuto attuale della variabile CittaDiNascita
cout<<"Inserisci NUOVA CittaDiNascita: "<<endl;   //chiedo all'utente di inserire un nuovo dato per la variabile CittaDiNascita
cin>>CittaDiNascita;   //assegno il nuovo input alla variabile CittaDiNascita
};

main()
{
Persona obj;   //istanza dell'oggetto obj tramite costruttore senza passaggio di parametri
Persona objParametri ("Rossi","Mario","Milano");   //istanza dell'oggetto objParametri tramite costruttore con passaggio di parametri
cout<<"Verifica Lab. Inf. 08/01/2015 - Marchesi Giacomo 4A Informatica Serale"<<endl<<endl;
cout<<endl<<"Oggetto istanziato tramite COSTRUTTORE SENZA PASSAGGIO DI PARAMETRI: "<<endl;
cout<<endl<<"Chiamata al metodo visualizzaDati: "<<endl;
obj.visualizzaDati();   //chiamata al metodo visualizzaDati della Classe Persona
cout<<endl<<"Chiamata al metodo inserisciDati: "<<endl;
obj.inserisciDati();   //chiamata al metodo inserisciDati della Classe Persona
cout<<endl<<"Chiamata al metodo visualizzaDati: "<<endl;
obj.visualizzaDati();   //chiamata al metodo visualizzaDati della Classe Persona
cout<<endl<<"Chiamata al metodo aggiornaDati: "<<endl;
obj.aggiornaDati();   //chiamata al metodo aggiornaDati della Classe Persona
cout<<endl<<"Chiamata al metodo visualizzaDati: "<<endl;
obj.visualizzaDati();   //chiamata al metodo visualizzaDati della Classe Persona
cout<<endl<<"Oggetto istanziato tramite COSTRUTTORE CON PASSAGGIO DI PARAMETRI: "<<endl;
cout<<endl<<"Chiamata al metodo visualizzaDati: "<<endl;
objParametri.visualizzaDati();   //chiamata al metodo visualizzaDati della Classe Persona
cout<<endl<<"Chiamata al metodo inserisciDati: "<<endl;
objParametri.inserisciDati();   //chiamata al metodo inserisciDati della Classe Persona
cout<<endl<<"Chiamata al metodo visualizzaDati: "<<endl;
objParametri.visualizzaDati();   //chiamata al metodo visualizzaDati della Classe Persona
cout<<endl<<"Chiamata al metodo aggiornaDati: "<<endl;
objParametri.aggiornaDati();   //chiamata al metodo aggiornaDati della Classe Persona
cout<<endl<<"Chiamata al metodo visualizzaDati: "<<endl;
objParametri.visualizzaDati();   //chiamata al metodo visualizzaDati della Classe Persona
}

Codice in JAVA:

import java.io.InputStreamReader;   //librerie per utilizzo BufferReader
import java.io.BufferedReader ;
import java.io.IOException;

public class Persona {
private String Nome= new String();
private String Cognome= new String();
private String LuogoDiNascita= new String();;
public Persona() {   //costruttore senza passaggio di parametri
Nome="";
Cognome="";
LuogoDiNascita="";
}
public Persona(String N, String C, String LdN) {   //costruttore con passaggio di parametri
Nome=N;
Cognome=C;
LuogoDiNascita=LdN;
}
public void inserisciDati() {   //metodo pubblico per inserimento dati in Input da utente
/*utilizzo readLine() messo a disposizione dalla classe BufferedReader. BufferedReader è 
una classe dedicata alla lettura di buffers (sequenze di caratteri), che il metodo readLine() 
restituisce sotto forma di stringhe. La classe BufferedReader, a sua volta, deve essere 
inizializzata fornendo un reader (lettore) di stream di input.
*/
InputStreamReader reader = new InputStreamReader (System.in);   //lettore bufferizzato
BufferedReader myInput = new BufferedReader (reader);   //utilizzo lettore bufferizzato chiamato reader
//per instanziare un oggetto di tipo BufferedReader che permette di utilizzare metodo readLine() 
//per la lettura di intere stringhe
System.out.println("Inserisci Nome: ");
try {
Nome = myInput.readLine();   //utilizzo oggetto myInput per richiamare metodo readLine(), in questo caso 
} catch (IOException e) { //viene richieto utilizzo del try catch
e.printStackTrace();
}
System.out.println("Inserisci Cognome: ");
try {
Cognome = myInput.readLine();   //utilizzo oggetto myInput per richiamare metodo readLine(), in questo caso 
} catch (IOException e) { //viene richieto utilizzo del try catch
e.printStackTrace();
}
System.out.println("Inserisci Luogo di Nascita: ");
try {
LuogoDiNascita = myInput.readLine();   //utilizzo oggetto myInput per richiamare metodo readLine(), in questo caso 
} catch (IOException e) { //viene richieto utilizzo del try catch
e.printStackTrace();
}
}
public void aggiornaDati() {   //metodo pubblico per aggiornamento dati in Input da utente
InputStreamReader reader = new InputStreamReader (System.in);
BufferedReader myInput = new BufferedReader (reader);
System.out.println("Nome INSERITO: " +Nome);
System.out.println("Inserisci NUOVO Nome: ");
try {
Nome = myInput.readLine();   //utilizzo oggetto myInput per richiamare metodo readLine(), in questo caso 
} catch (IOException e) { //viene richieto utilizzo del try catch
e.printStackTrace();
}
System.out.println("Cognome INSERITO: " +Cognome);
System.out.println("Inserisci NUOVO Cognome: ");
try {
Cognome = myInput.readLine();   //utilizzo oggetto myInput per richiamare metodo readLine(), in questo caso 
} catch (IOException e) { //viene richieto utilizzo del try catch
e.printStackTrace();
}
System.out.println("Luogo di Nascita INSERITO: " +LuogoDiNascita);
System.out.println("Inserisci NUOVO Luogo di Nascita: ");
try {
LuogoDiNascita = myInput.readLine();   //utilizzo oggetto myInput per richiamare metodo readLine(), in questo caso 
} catch (IOException e) { //viene richieto utilizzo del try catch
e.printStackTrace();
}
}
public void visualizzaDati() {   //metodo pubblico per visualizzare dati
System.out.println("Nome: " +Nome);
System.out.println("Cognome: " +Cognome);
System.out.println("Luogo di Nascita: " +LuogoDiNascita);
}

}


public class main {

public static void main(String[] args) {
System.out.println("Verifica del 08/01/2015 versione JAVA");
Persona obj1;   //creo oggetto obj1 di classe Persona
obj1 = new Persona();   //alloco spazio in memoria e restituisco indirizzo 
Persona obj2;   //creo oggetto obj1 di classe Persona
obj2 = new Persona("Mario","Rossi","Milano");   //alloco spazio in memoria e restituisco indirizzo 
System.out.println("Ciclo di prova su oggetto istanziato SENZA passaggio di parametri obj1");
obj1.visualizzaDati();   //chiamata al metodo visualizzaDati
obj1.inserisciDati();   //chiamata al metodo inserisciDati
obj1.visualizzaDati();   //chiamata al metodo visualizzaDati
obj1.aggiornaDati();   //chiamata al metodo aggiornaDati
obj1.visualizzaDati();   //chiamata al metodo visualizzaDati
System.out.println("Ciclo di prova su oggetto istanziato CON passaggio di parametri obj2");
obj2.visualizzaDati();   //chiamata al metodo visualizzaDati
obj2.aggiornaDati();   //chiamata al metodo aggiornaDati
obj2.visualizzaDati();   //chiamata al metodo visualizzaDati
}

}

Diagramma UML:


domenica 14 dicembre 2014

Esercitazione su verifica del 01/12/2014

Svolgere l'esercitazione richiesta in verifica con C++ e con JAVA:
Esercizio 1:
 Realizza una classe 'contatore' che contiene una variabile intera 'valore' come attributo e due metodi, il primo è un costruttore senza parametri che inizializza 'valore' a 0 il secondo incrementa semplicemente 'valore ' di 1 tutte le volte che viene invocato.
Esegui il test del programma con un ciclo for

Esercizio 2:
Scrivi una classe D (data) i cui oggetti possano essere inizializzati come: d(22,08,01); implementare il costruttore, il metodo out() per la stampa a video, il metodo mod(gg,mm,aa) per consentirne la modifica e un metodo val() per consentire la validazione della data.
Esegui il test della classe costruendo un main che ne richiami i metodi precedentemente definiti.

Esercizio 1 in C++
# include <iostream>
using namespace std;

class Contatore
{
public:
Contatore();
int valore;
void incrementaValore();
};
Contatore::Contatore()
{
valore=0;
}
void Contatore::incrementaValore()
{
valore++;
}
main()
{
cout<<"Test della classe 'Contatore'";
Contatore obj1;
for (int i=0;i<5;i++)
{
obj1.incrementaValore();
cout<<endl<<obj1.valore;
}
}

Esercizio 2 in C++
# include <iostream>

using namespace std;

class D{
    public:
        D (int giorno, int mese, int anno);
        D ();
        void out();
        void mod(int gg, int mm, int aa);
        void val();
        int gclass;
        int mclass;
        int aclass;
};

D::D(int giorno, int mese, int anno)
    {
gclass=giorno;
mclass=mese;
aclass=anno;
};

D::D()
    {
        gclass=1;
        mclass=1;
        aclass=1;
    };

void D::out(){
cout<<endl<<"La data inserita e': "<<gclass<<"/"<<mclass<<"/"<<aclass;
};

void D::mod(int gg, int mm, int aa){
gclass=gg;
mclass=mm;
aclass=aa;
cout<<endl<<"La data e' stata modificata in: "<<gclass<<"/"<<mclass<<"/"<<aclass;
};

void D::val(){
int errore=0;
if((mclass<1)||(mclass>12))
{
errore++;
cout<<endl<<"Mese non valido";
}
else
{
if((gclass<1)||(gclass>31))
{
errore++;
cout<<endl<<"Giorno non valido";
}
else
{
if((gclass>28)&&(mclass==2))
{
errore++;
                        cout<<endl<<"Mese non valido, Febbraio max 28 gg";
}
else
{
if((gclass>30)&&((mclass==4)||(mclass==6)||(mclass==9)||(mclass==11)))
{
errore++;
cout<<endl<<"Giorno non valido, con mese inserito max 30 gg";
}
else
{
if((aclass>2100)||(aclass<1900))
{
errore++;
                                cout<<endl<<"Inserire un anno tra 1900 e 2100!";
}
}
}
}
}
if(errore==0)
cout<<endl<<"Data corretta!";
else
cout<<endl<<"Data NON valida!";
};

main()
{
    int gmain, mmain,amain;
//D obj1;
D obj1(10,01,1990);
cout<<endl<<"Test:";
    cout<<endl<<endl<<"\tVISUALIZZA DATA ";
        obj1.out();
    cout<<endl<<endl<<"\tMODIFICA DATA: \n";
cout<<"Inserisci il Giorno: ";
cin>>gmain;
cout<<"Inserisci il Mese: ";
cin>>mmain;
cout<<"Inserisci l'Anno: ";
cin>>amain;
obj1.mod(gmain, mmain, amain);
    cout<<endl<<endl<<"\tVALIDAZIONE DELLA DATA INSERITA: ";
obj1.val();
    cout<<endl;
}

Esercizio 1 in JAVA
public class contatore {

public int valore;

public contatore()
{
valore=0;
}

                void incrementaValore()
               {
               valore++;
               }
}


public class main {

public static void main(String[] args) {

System.out.println("Verifica del 01/12/2014 in JAVA!");
contatore obj1;
obj1=new contatore();
for (int i=0;i<5;i++)
{
obj1.incrementaValore();
System.out.println(+obj1.valore);
}
}

}

Esercizio 2 in JAVA
import java.util.*;

public class Data {
public int gclass,mclass,aclass;
public Data (int giorno, int mese, int anno){
gclass=giorno;
mclass=mese;
aclass=anno;
}
public void out(){
System.out.println("La data inserita e': "+gclass+"/"+mclass+"/"+aclass);
}

public void mod(int gg, int mm, int aa){
gclass=gg;
mclass=mm;
aclass=aa;
System.out.println("La data e' stata modificata in: "+gclass+"/"+mclass+"/"+aclass);
}
public void val(){
int errore=0,gval,mval,aval;
System.out.println("Inserisci la data da validare:\nGiorno: ");
Scanner input = new Scanner(System.in);
gval = input.nextInt();
System.out.println("Mese: ");
mval = input.nextInt();
System.out.println("Anno: ");
aval = input.nextInt();
if((mval<1)||(mval>12))
{
errore++;
System.out.println("Mese non valido");
}
else
{
if((gval<1)||(gval>31))
{
errore++;
System.out.println("Giorno non valido");
}
else
{
if((gval>28)&&(mval==2))
{
errore++;
System.out.println("Mese non valido, Febbraio max 28 gg");
}
else
{
if((gval>30)&&((mval==4)||(mval==6)||(mval==9)||(mval==11)))
{
errore++;
System.out.println("Giorno non valido, con mese inserito max 30 gg");
}
else
{
if((aval>2100)||(aval<1900))
{
errore++;
System.out.println("Inserire un anno tra 1900 e 2100!");
}
}
}
}
}
if(errore==0)
System.out.println("Data corretta!");
else
System.out.println("Data NON valida!");
}

}

import java.util.*;
public class main {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);   //metodo per input da tastiera
int gmain, mmain,amain;
Data obj1;
obj1=new Data(10,01,1990);
System.out.println("Test:");
System.out.println("\tVISUALIZZA DATA ");
obj1.out();
System.out.println("\tMODIFICA DATA: ");
System.out.println("Inserisci il Giorno: ");
gmain = input.nextInt();
System.out.println("Inserisci il Mese: ");
mmain=input.nextInt();
System.out.println("Inserisci l'Anno: ");
amain=input.nextInt();
obj1.mod(gmain, mmain, amain);
System.out.println("\tVALIDAZIONE DELLA DATA INSERITA: ");
obj1.val();
}
}