Newsgroup: it.comp.lang.visual-basic
Titolo: [?] domanda teorica

Ola!,
    mi sono appena comprato un libro per capirci qualcosa di più di 
VB.NET
.
Ho iniziato a leggerlo e sembra fatto abbastanza bene, solo che mi ha
"creato" due dubbi...
Parla spesso di namespace e assembly, ma non si cura di dare una defizione
precisa (almeno per il namespace, per l'assembly ci prova ma in realtà non
mi ha chiarito di molto le cose).
Credo di aver intuito qualcosa sul namespace ora che ho visto il primo
esempio (crea un'applicazione da console che sfruttando
system.console.writeline stampa a video la classica hello): in pratica se ho
capito bene il namespace sarebbe il corrispondente del "percorso" di un
package in java (ovvero system.console sarebbe un po' come dire java.sql.*)?
Quello che invece non ho capito è l'assembly. Parla di contenitore. Cioè? E'
il file del progetto che ho creato (sia exe o cab) oppure è qualcosa
d'altro?
Grazie
--
_,,=~°°~=,,_,,=~°°~=,,_
byZ, doGmaI
ICQ#170836495
_,,=~°°~=,,_,,=~°°~=,,_

 mi ha chiarito di molto le cose).
[SNIP]
- Namespace
Non conosco java per cui non so dirti se il tuo esempio era calzante,
comunque una ns e' semplicemente un raggruppamento logico per la definizione
dei tipi, il cui scopo principale e' quello di organizzarli in maniera piu'
chiara e di evitare conflitti.
Per farti un esempio, la classe TextBox esiste in piu' contesti diversi,
ciascuno identificato da una propria namespace, i piu' comuni sono le
Windows Forms e le Web Forms, ovvero:
System.Windows.Forms.TextBox
System.Web.UI.WebControls.TextBox
(nota che Windows, Forms, Web ecc. sono a loro volta ns contenute in altre
ns, a partire da quella principale System)
Ogni progetto definisce implicitamente o esplicitamente almeno una namespace
(dipende dal linguaggio, in C# per esempio devi esplicitarlo)
- Assembly
Da MSDN:
"Gli assembly rappresentano l'unità fondamentale di distribuzione, controllo
delle versioni, riutilizzo, ambito di attivazione e autorizzazioni di
protezione per un'applicazione basata su .NET"
In altre parole e' il componente base che puo' essere prodotto da una
compilazione e che in se stesso e' un modulo autosufficiente; contiene
obbligatoriamente un manifesto attraverso il quale puoi ottenere
informazioni sulla versione, sui tipi e sulle risorse che contiene
Un progetto puo' essere composto da uno o piu' assembly (come minimo l'exe o
la dll principale e' un assembly), e un assembly puo' contenere uno o piu'
moduli di codice ed eventualmente file di risorse di vario genere.
Non necessariamente comunque un assembly coincide con un singolo file
compilato, per esempio le risorse potrebbero essere mantenute esternamente,
ma tutto l'insieme deve comunque essere considerato come un unico blocco
logico.
Su MSDN fornito con Visual Studio, oppure con il Framework SDK (oltre
naturalmente a quello online) trovi molte informazioni a riguardo
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

Il namespace è un'involucro per classi e strutture.
Tentiamo di chiarire:
1- No Namespace
Add una classe come segue:
Public Class classeTest
    Public Function divisione(ByVal v1 As Int32, ByVal v2 As Int32) As
Double
        Return v2 / v1
    End Function
End Class
- da qualsiasi modulo dell'applicazione:
  Private Sub CalcoloNoNamespace()
        Dim cl As New classeTest()
        Dim d As Double = cl.divisione(5, 8)
    End Sub
2- Si Namespace
Costruzione contenitore con le classi in un modulo:
Namespace Test.Prima
    Public Class classeTest
        Public Function divisione(ByVal v1 As Int32, ByVal v2 As Int32) As
Double
            Return v2 / v1
        End Function
    End Class
    Public Class classTest2
        Public Function moltiplicazione(ByVal v1 As Int32, ByVal v2 As
Int32) As Int32
            Return v1 * v2
        End Function
    End Class
End Namespace
Per accedere alle classi necessita partire dal nome del proprietario dello
spazio, nel nostro caso Test.Prima
Per l'utilizzo delle classi contenute nel Namespace si può agire in due
modi:
2.1
- da qualsiasi modulo dell'applicazione:
 Private Sub CalcoloSiNamespace()
        Dim clDiv As New Test.Prima.classeTest()
        Dim d As Double = clDiv.divisione(5, 8)
        Dim clMol As New Test.Prima.classTest2()
        Dim int As Int32 = clMol.moltiplicazione(4, 7)
    End Sub
2.2-
Utilizzo dell'istruzione Imports,nella sezione dichiarazioni dello spazio
dei nomi del codice, per evitare l'intera
qualificazione, o percorso, del nome:
Nel caso, il nome del proggetto e di conseguenza dell'Assembly è Prova.
Al top del modulo digitiamo:
Imports Prova.Test.Prima
a questo punto per servirsi delle classi:
Private Sub CalcoloSiNamespace()
        Dim clDiv As New classeTest()
        Dim d As Double = clDiv.divisione(5, 8)
        Dim clMol As New classTest2()
        Dim int As Int32 = clMol.moltiplicazione(4, 7)
    End Sub
dopo la New noterai che nell'elenco dell'Intellisense la comparsa dei nomi
delle classi, ciò che non si verifica nel primo
caso.
L'Assembly
Un' applicazione può essere composta da file.exe, file.dll
Quei file in .NET sono chiamati Assembly.
Nella guida in linea, in cerca inserisci la parola Assembly, appariranno
pagine di spiegazioni.
giuseppeD

Grazie a entrambi
