Un oggetto può contenere una proprietà che è un altro oggetto?

3

Sono nuovo nel mondo orientato agli oggetti. Sono interessato a imparare le basi della programmazione orientata agli oggetti indipendentemente da qualsiasi lingua. Ma per il momento sto facendo l'implementazione su VB.NET.

La domanda è: Un oggetto può contenere una proprietà che è un altro oggetto? o solo le proprietà possono essere di tipi primitivi?

Se è così, ti sarò grato se mi mostri un esempio su VB.NET.

    
posta Pablo De Luca 22.04.2016 - 01:26
fonte

1 risposta

3

Come hai chiesto in generale alle lingue OOP: dipende da quale lingua.

Innanzitutto, non tutti i linguaggi orientati agli oggetti supportano una nozione formalizzata di proprietà. C # e VB fanno, ma Java no, né C ++, per esempio (gli altri consentono invece getter e setter manualmente / individualmente definiti che non sono necessariamente riconosciuti dalla lingua come coppie della stessa proprietà).

C ++ d'altra parte consente la vera incorporazione di un'istanza di una classe all'interno di un'istanza di un'altra. Consente inoltre a una variabile locale di essere una vera istanza di una classe.

Tuttavia, Java, C # e VB usano tutti i riferimenti alle istanze di oggetti (nell'heap). Quindi, Java, C # e VB non consentono vere istanze di classi come variabili o campi. Tuttavia, questi linguaggi implicitamente la dereferenziano i riferimenti quando li usi in modo naturale.

(In questi linguaggi, i riferimenti, FYI, sono passati per valore: il chiamante può modificare l'oggetto e verrà visto dal destinatario, poiché i riferimenti (copie) puntano alla stessa istanza dell'oggetto heap, tuttavia, se il chiamante modifica il riferimento stesso, che non sarà visto dal callee.)

In Java, C # e VB, puoi quindi inserire un riferimento a un oggetto come campo di una classe. In C # e VB, puoi inserire un riferimento a un oggetto come proprietà di una classe (con un campo di supporto facoltativo o solo come getter e / o setter).

In C ++ puoi passare un'istanza di una classe in base al valore o assegnare una classe a un'altra (dello stesso tipo). C ++ ha anche entrambi riferimenti e puntatori e devi essere esplicito sull'uso di ognuno di essi rispetto a ottenere una vera istanza di classe.

    
risposta data 22.04.2016 - 01:46
fonte

Leggi altre domande sui tag