Programmazione Orientata agli Oggetti in Linguaggio Java



Похожие документы
Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Tecnologie di Sviluppo per il Web

Sommario. Introduzione Architettura Client-Server. Server Web Browser Web. Architettura a Due Livelli Architettura a Tre Livelli

Strumenti per la programmazione

Tale attività non è descritta in questa dispensa

DOCFINDERWEB SERVICE E CLIENT

Panoramica: che cosa è necessario

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmare in Java. Olga Scotti

Corso di Informatica

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Test di unità con JUnit4

Tecnologie di Sviluppo per il Web

Introduzione alla programmazione in C

ACCESSO AL SISTEMA HELIOS...

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Corso di PHP. Prerequisiti. 1 - Introduzione

Installazione del JDK 6

Visual basic base Lezione 01. L'ambiente di sviluppo

Studio Legale. Guida operativa

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Manuale di Blogilo. Mehrdad Momeny Traduzione e revisione del documento: Valter Mura

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Capitolo 4 Pianificazione e Sviluppo di Web Part

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Cosa è un foglio elettronico

Funzioni in C. Violetta Lonati

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Corso sul linguaggio Java

FileMaker Server 12. Guida alla configurazione dell installazione in rete

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Il linguaggio Java. Concetti base. I packages

Linguaggi e Paradigmi di Programmazione

Lezione 10: Librerie e compilazione separata

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith

SOMMARIO... 3 INTRODUZIONE...

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

Eclipse e Subversion

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)

Gestione ed analisi di base dati nell epidemiologia. delle malattie infettive

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

NodeXL: l amo delle Reti Sociali

Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.

Appunti di Informatica 1

Java: Compilatore e Interprete

Esercizi di JavaScript

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

Note per generazione file.txt per invio trimestrale V.P. all AGENZIA DELLE ENTRATE

ARCHIVIA PLUS - ARCHITEL

TRASMISSIONE RAPPORTO ARBITRALE IN FORMATO PDF

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

Corso Eclipse. Prerequisiti. 1 Introduzione

Introduzione. Installare EMAS Logo Generator

GIUSEPPE DI GRANDE CORSO DI FORMAZIONE SU BIBLOS

Introduzione a Dev-C++

PORTALE CLIENTI Manuale utente

UniMod SEMPLIFICATO MANUALE ILLUSTRATIVO

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Avvio di Internet ed esplorazione di pagine Web.

Sistema operativo: Gestione della memoria

SERVIZIO TELEMATICO ENTRATEL. Applicazione Invia Multifile

4.1 FAX Sollecito consegne via (Nuova funzione)

Presidenza del Consiglio dei Ministri

Linguaggi di programmazione

Ambienti di Sviluppo

Pratica guidata 2 Tablet

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Guida Compilazione Piani di Studio on-line

METODI per effettuare previsioni con analisi di tipo WHAT-IF

Josef Vitanostra INFORMATICA PARTHENOPE

SPSS Statistics per Windows - Istruzioni di installazione per (Licenza per utenti singoli)

2015 PERIODO D IMPOSTA

4 3 4 = 4 x x x 10 0 aaa

Manuale Utente Albo Pretorio GA

per interventi strutturali di rafforzamento locale o di miglioramento sismico, - art. 2, comma 1, lettere b) e c) -

Manuale d uso [Rev.1 del 07/08/2015] Manutenzione impianti termici Ver [05/01/2015]

Prova di Laboratorio di Programmazione

Транскрипт:

Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica: C# Parte b versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca Università della Basilicata mecca@unibas.it Sintassi e Semantica: C# >> Sommario Sommario Il Compilatore Il Concetto di Assembly Modificatori di Visibilità Commenti di Documentazione NDoc Convenzioni di Stile di C# 2

Sintassi e Semantica: C# >> Il Compilatore Il Compilatore Il Compilatore di C# csc.exe Attenzione come detto, in C# non c è nessuna relazione tra il contenuto del codice sorgente e la struttura dei file su disco e il processo di compilazione, di collegamento e di esecuzione è totalmente diverso 3 Sintassi e Semantica: C# >> Il Compilatore Il Concetto di Assembly Il codice oggetto di.net viene confezionato sotto forma di assembly Assembly file contenente il codice intermedio.net di una o più classi con le relative metainformazioni che le descrivono ( manifesto ) analogo di un.jar di Java 4

Sintassi e Semantica: C# >> Il Compilatore Il Concetto di Assembly Tipologie principali di assembly exe: eseguibile per la console, estensione predefinita.exe library: libreria dinamica, estensione.dll Inoltre winexe: applicazione grafica module: crea solo il codice oggetto senza le metainformazioni (in questo modo l assembly può essere aggiunto ad altri assembly) 5 Sintassi e Semantica: C# >> Il Compilatore Il Concetto di Assembly Per compilare un file di codice C# bisogna specificare l opzione /target Esempi csc /target:exe Prova.cs genera Prova.exe, eseguibile csc /target:library Prova.cs genera Prova.dll, libreria collegabile dinam. il valore di default è /target:exe (o /t:exe) 6

Sintassi e Semantica: C# >> Il Compilatore Per creare un applicazione completa due opzioni Collegamento statico compilo assieme tutte le classi dell applicazione in un unico assembly Collegamento dinamico compilo solo alcune delle classi nell assembly e indico riferimenti ad assembly esterni 7 Sintassi e Semantica: C# >> Il Compilatore Collegamento statico esempio: circonferenze tre classi utilizzate: Circonferenza.cs, Principale.cs, Console.cs oltre alle librerie di sistema Comando Attenzione: le librerie di.net sono comunque collegate dinamicamente csc /target:exe /out:circonferenze.exe Principale.cs Circonferenza.cs..\Utilita\Console.cs 8

Sintassi e Semantica: C# >> Il Compilatore In questo modo, però... si perdono tutti i vantaggi del collegamento dinamico Esempio non è possibile sostituire la classe Console.cs con una versione successiva che fornisca gli stessi metodi in forma migliorata Di conseguenza utilizzeremo il collegamento dinamico 9 Sintassi e Semantica: C# >> Il Compilatore Collegamento dinamico in questo caso posso compilare solo alcune delle classi in un assembly eseguibile es: Principale.cs e Circonferenza.cs in.exe ma devo risolvere due problemi Problema n. 1 specificare al compilatore dove sono gli altri componenti per effettuare le verifiche a tempo di compilazione (Unibas.Utilita.dll) 10

Sintassi e Semantica: C# >> Il Compilatore Problema n.2 fare in modo che i componenti da collegare dinamicamente siano effettivamente reperibili a tempo di esecuzione (Unibas.Utilita.dll) Attenzione questi stessi problemi in Java sono risolti attraverso la gestione del CLASSPATH sia per il compilatore (javac), sia per la macchina virtuale (java) 11 Sintassi e Semantica: C# >> Il Compilatore Problema n.1: Soluzione il compilatore di C# consente di specificare a tempo di compilazione la posizione degli assembly esterni (namespace) utilizzati nel codice Opzione /reference:<elencoassembly> esempio: circonferenze csc /target:exe /out:circonferenze.exe /reference:unibas.utilita.dll *.cs 12

Sintassi e Semantica: C# >> Il Compilatore Attenzione l opzione /reference NON dice di includere il codice di Unibas.Utilita.dll nell assembly Circonferenze.exe indica solo al compilatore dove andare a trovare l assembly per effettuare le verifiche sul codice di Principale.cs ma i due assembly restano separati tra di loro e dovranno essere collegati dinamicam. 13 Sintassi e Semantica: C# >> Il Compilatore Problema n.2: Soluzione a tempo di esecuzione, gli assembly esterni da collegare devono essere contenuti nella stessa cartella dell assembly eseguibile ovvero: Unibas.Utilita.dll deve essere nella stessa cartella di Circonferenze.exe Nota la gestione degli assembly di.net è decisamente più sofisticata (>>) 14

Sintassi e Semantica: C# >> Il Compilatore Le librerie del.net framework sono contenute nell assembly mscorlib.dll in c:\windows\microsoft.net\framework\v.1.1.4322 sono automaticamente visibili al compilatore e alla macchina virtuale e non devono essere specificate Nota è possibile ispezionarne il contenuto usando il disassemblatore ildasm.exe >> ildasm.exe mscorlib.dll 15 Sintassi e Semantica: C# >> Il Compilatore Collegamento ed esecuzione eseguendo il comando Circonferenze.exe, Windows riconosce l assembly.net che non contiene codice nativo, ma codice intermedio affida al Framework l esecuzione (con la compilazione JIT) ed il collegamento dinamico dei namespace esterni utilizzati nel codice 16

Sintassi e Semantica: C# >> Il Compilatore c:\ Programmi... codice circonferenze utilita Console.cs Principale.cs Circonferenza.cs Unibas.Utilita.dll Circonferenze.exe Unibas.Utilita.dll classi del namespace Circonferenze copia di Unibas.Utilita.dll compilazione /t:exe classi del namespace Unibas.Utilita compilazione /t:library 17 Sintassi e Semantica: C# >> Modificatori di Visibilità Modificatori di Visibilità Riassumendo in.net non esiste il concetto di package In Java package = spazio di nomi + cartella di file del disco (spesso contenuto in un.jar) In.NET namespace = spazio di nomi assembly = gruppo di classi 18

Sintassi e Semantica: C# >> Modificatori di Visibilità Modificatori di Visibilità E possibile dire che i package di Java sono in parte analoghi ai namespace di.net >> sistema di nomi i file.jar di java sono in parte analoghi agli assembly di.net >> archivio di classi Livelli di visibilità di C# public, private e internal non esiste il livello friendly 19 Sintassi e Semantica: C# >> Modificatori di Visibilità Modificatori di Visibilità Il livello internal visibile in tutte le classi che appartengono allo stesso assembly non negli altri assembly (anche se collegati) Attenzione internal deve essere specificato esplicitamente (a differenza di friendly ) es: internal class Prova {... } 20

Sintassi e Semantica: C# >> Modificatori di Visibilità Modificatori di Visibilità E se il modificatore manca? per le classi il livello standard è public per i membri delle classi (campi, proprietà, metodi) il livello standard è private Di conseguenza per evitare confusione ed errori, in C# è opportuno sempre specificare esplicitamente il modificatore 21 Sintassi e Semantica: C# >> Commenti di Documentazione Commenti di Documentazione Come per Java anche.net fornisce una sintassi per immergere commenti di documentazione nel codice ed uno strumento per generare automaticamente i file di documentazioni L approccio di.net basato su XML (>>) 22

Sintassi e Semantica: C# >> Commenti di Documentazione Commenti di Documentazione XML sintassi standard utilizzata in molti contesti i dati sono codificati con tag di marcatura es: <summary>descrizione della classe</summary> In C# >> utilita\console.cs i commenti di documentazione sono annunciati da /// e devono contenere dati in formato XML 23 Sintassi e Semantica: C# >> Commenti di Documentazione Commenti di Documentazione I principali tag di documentazione <summary>: descrizione testuale di una classe, un metodo, un campo, una proprietà <remarks>: annotazioni aggiuntive <returns>: valore di ritorno di un metodo <param>: parametro di un metodo 24

Sintassi e Semantica: C# >> Commenti di Documentazione Commenti di Documentazione >> utilita\console.cs Estrarre i commenti i commenti vengono estratti in un file con estensione.xml compito del compilatore, csc.exe Opzione /doc:<nomefile>.xml es: csc /target:library /doc:console.xml Console.cs viene prodotto il file Console.xml è necessario trasformarlo per poterlo consultare 25 Sintassi e Semantica: C# >> Commenti di Documentazione NDoc Il vero analogo di JavaDoc NDoc http://ndoc.sourceforge.net progetto open souce per.net uno strumento per generare documentazione leggibile a partire dal file XML generato dal compilatore Esempio consente di generare documentazione nel formato MSDN (formato standard delle API) 26

Sintassi e Semantica: C# >> Commenti di Documentazione NDoc L approccio di NDoc prende in input un assembly ed il relativo file di documentazione.xml generato dal compilatore e produce documentazione in vari formati Per ciascun formato si appoggia ad uno strumento esterno, detto documenter, incaricato di produrre concretamente la documentazione 27 Sintassi e Semantica: C# >> Commenti di Documentazione NDoc Il documenter standard documenter per il formato MSDN Microsoft HTML Workshop scaricabile da http://msdn.microsoft.com Il formato MSDN formato.chm, ovvero HTML compilato ( compiled html ) formato proprietario della Microsoft 28

Sintassi e Semantica: C# >> Commenti di Documentazione NDoc Procedura per utilizzare NDoc scaricare ed installare Microsoft HTML Workshop scaricare ed installare NDoc compilare l assembly e generare la documentazione in formato XML con csc eseguire NDocGui.exe specificare l assembly, il file.xml, il tipo di formato e la cartella destinazione 29 Sintassi e Semantica: C# >> Convenzioni di Stile di C# Convenzioni di Stile di C# Le convenzioni suggerite dalla Microsoft sono leggermente diverse da quelle standard di Java che abbiamo adottato nel corso Identificatori in C# vengono utilizzate due convenzioni diverse una per gli identificatori pubblici una per gli identificatori privati 30

Sintassi e Semantica: C# >> Convenzioni di Stile di C# Convenzioni di Stile di C# Identificatori privati campi delle classi, parametri, variabili locali convenzione cammello (es: raggiocerchio) Identificatori pubblici namespace, classi, metodi, proprietà, costanti convenzione Pascal (discende da Delphi) convenzione cammello con l iniziale maiuscola (es: RaggioCerchio) 31 Sintassi e Semantica: C# >> Convenzioni di Stile di C# Convenzioni di Stile di C# Quindi, varie differenze significative nome dei namespace (iniziale maiuscola) nome dei metodi (iniziale maiuscola) nome delle costanti (convenzione Pascal) Namespace convenzione suggerita dalla Microsoft <nomeorganizz>.<nomeapplicazione>... es: Unibas.MorraCinese.Modello 32

Sintassi e Semantica: C# >> Convenzioni di Stile di C# Convenzioni di Stile di C# Una nota sull organizzazione dei file in C# non ci sono vincoli particolari sulla distribuzione del codice nei file Ma la convenzione prevede che a ciascuna classe sia attribuito un file.cs a ciascun namespace sia attribuita una cartella es: Unibas.Utilita es: Unibas.MorraCinese -> Modello 33 Sintassi e Semantica: C# >> Convenzioni di Stile di C# Convenzioni di Stile di C# Campi e Proprietà tipicamente il campo è privato e in notazione cammello; es: private double ascissacentro; e la proprietà è pubblica e in notazione Pascal; es: public double AscissaCentro {...} Quando usare una proprietà? quando il campo deve essere almeno letto (altrimenti usare solo setxxx) 34

Sintassi e Semantica: C# >> Convenzioni di Stile di C# Convenzioni di Stile di C# Posizione delle parentesi non esiste una vera regola Negli esempi delle API posizione alla Java Visual Studio viceversa usa la posizione sempre a capo sia per le classi che per i metodi che per i blocchi di istruzioni 35 Sintassi e Semantica: C# >> Convenzioni di Stile di C# Convenzioni di Stile di C# Nota sulle convenzioni di stile è opportuno conoscere le convenzioni di stile per un certo linguaggio ma non è indispensabile adeguarsi completamente questo andrebbe contro il concetto stesso di stile di scrittura del codice 36

Sintassi e Semantica: C# >> Sommario Riassumendo Il Compilatore Il Concetto di Assembly Modificatori di Visibilità Commenti di Documentazione NDoc Convenzioni di Stile di C# 37 Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. 38