Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET] Chiarimento Scope Classi

    Salve a tutti, volevo chiedere cortesemente un chiarimento sullo scope delle classi.
    Vi spiego cosa volevo realizzare, perdonatemi se invece di poco chiaro codice, vi mostro un'immagine:



    Provvedo a spiegarvi:

    La classe A è Public, ha un costruttore, espone metodi e attributi, deve inoltre esporre alcuni metodi della classe B.

    La classe B utilizza alcuni metodi privati di A, quindi non deve essere raggiunta se non attraverso la classe A, inoltre suoi metodi sono shared.


    Ad esempio deve essere possibile chiamare il metodo A.B.b1
    Ora il discorso è semplice, perché basta mettere A Public e B Shared.

    Qual è però il problema, così facendo, potrei però raggiungere i metodi Shared b1, b2, ecc... anche senza inizializzare la classe A con il costruttore, e ciò è male.

    Io voglio che i metodi shared di B siano raggiungibili solo tramite A, e solo quando questa è inizializzata.

    Qual è il metodo corretto per ottenere questo risultato?

    Spero di essermi spiegato, grazie a tutti per il chiairmento!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    L'unico modo, stando alle condizioni che hai posto, credo sia quello di esporre metodi nella classe A che alla fine vadano a invocare quelli della classe B.

    In realtà, questa architettura risulta un po' fumosa: a mio avviso, c'è un problema di design delle classi a livello base, ma non sapendo bene quali sono i motivi per cui hai pensato a questo tipo di architettura, non è possibile dire molto di più.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Purtroppo esponendo i dettagli del progetto, rischieremmo di parlare più sula metodologia che sul problema.

    Dimenticando lo schema e semplificando forse la domanda nel caso non mi sia espresso nella maniera corretta, a me interessava semplicemente questo:


    Avere una classe X, che sia utilizzabile solo da classi specifiche Y o all'interno dello stesso progetto.

    Le classi Y che inizializzano l'oggetto di classe X, devono essere in grado di esporne i metodi.

    ----------------------------------------------------

    Ho trovato una soluzione adeguata:

    Classe Y public
    Oggetto di tipo Y in classe X

    Costruttore Y Friend

    Espongo i metodi della classe, rendo i metodi disponibili in quanto friendly, ma impedisco che la classe sia utilizzata al di fuori del progetto.
    Volendo potrei dichiararla Protected, o Protected Friend, ma non ne ho esigenze.


    Grazie a tutti per il contributo :-)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.