Uso de espacios de nombres y modificadores de acceso
Reglas para el modificador de acceso
Las entidades con el modificador de acceso Ninguno son accesibles desde todas las demás entidades.
A las entidades privadas solo se puede acceder desde sus propios proyectos.
Las entidades restringidas solo son accesibles desde el mismo proyecto y los espacios de nombres permitidos.
Las características con el modificador de acceso Ninguno en una entidad, que también tiene Ninguno como modificador de acceso, son accesibles desde todas las demás entidades.
Solo se puede acceder a las características con el modificador de acceso Ninguno en la entidad restringida desde los espacios de nombres permitidos.
Las características con el modificador de acceso Ninguno en la entidad privada solo son accesibles desde el proyecto en el que se han definido.
Solo se puede acceder a las características restringidas desde el mismo proyecto y desde los espacios de nombres permitidos.
Las características privadas solo son accesibles desde el proyecto en el que se han definido.
Si una entidad es PRIVATE, la característica no puede tener ámbito RESTRICTED.
Solo se puede acceder a las características internas desde la entidad a la que pertenece la característica.
Si se crea una entidad o una característica, heredará el ámbito de su padre.
Acceder a los modificadores mencionados en secuencia de su amplitud.
Ninguno >> Restringido >> Privado >> Interno
Ninguno es más amplio que Restringido, Privado e Interno.
Restringido es más amplio que Privado e Interno.
Privado es más amplio que Interno.
Interno es el modificador de acceso más estrecho.
Ejemplos
Si [P2#Solution].[T2#Thing] intenta llamar a [P1[n1.n2.n3]#Component].[T1#Thing], lo permitirá, ya que si una entidad o una característica es PÚBLICA dentro de un proyecto, con un espacio de nombres o sin espacio de nombres, puede ser llamada o utilizada por cualquier otra entidad o característica del mismo proyecto o un proyecto con espacio de nombres diferente.
Si [P2[n4.n5.n6]#BuildingBlock].[T2#Thing] intenta llamar a [P1[n1.n2.n3]#Component].[T1#Thing], se permitirá, ya que si una entidad o una característica es PÚBLICA dentro de un proyecto, con un espacio de nombres o sin espacio de nombres, puede llamarse.
Si [P2#Solution].[TT2#ThingTemplate] intenta llamar a [P1[n1.n2.n3]#Component].[TT1{PRIVATE}#ThingTemplate], no se permitirá, ya que si una entidad o una característica es PRIVADA dentro de un proyecto, con un espacio de nombres o sin espacio de nombres, puede ser llamada o utilizada por cualquier otra entidad o característica dentro del mismo proyecto solamente.
Si [P2[n4.n5.n6]#BuildingBlock].[TS2#ThingShape] intenta llamar a [P1[n1.n2.n3]#Component].[TS1{PRIVATE}#ThingShape], no se permitirá, ya que si una entidad o una característica es PRIVADA dentro de un proyecto, con un espacio de nombres o sin espacio de nombres, puede ser llamada o utilizada por cualquier otra entidad o característica dentro del mismo proyecto solamente.
Si [P1[n1.n2.n3]#Component].[T2{PRIVATE}#Thing].[S1#Service] intenta llamar a [P1[n1.n2.n3]#Component].[TT1{PRIVATE}#ThingTemplate], se permitirá, ya que se puede llamar o utilizar por cualquier otra entidad o característica dentro del mismo proyecto solamente.
Si [P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate].[Prop2{PRIVATE}#Property] intenta llamar a [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{RESTRICTED[n1.n2]}#Service], no se permitirá, ya que las características con modificador de acceso PÚBLICO en una Entidad RESTRINGIDA son accesibles solo desde los espacios de nombres permitidos.
Si [P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate] intenta llamar a [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing], no se permitirá, ya que solo se puede acceder a las entidades y características restringidas desde el mismo proyecto y espacios de nombres permitidos.
Si [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing] intenta llamar a [P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate], se permitirá, ya que cualquier persona puede acceder a una entidad o característica con el ámbito Ninguno (PÚBLICO).
Si P1[n1.n2.n3]#BuildingBlock].[T2{RESTRICTED[n1.n2]}#Thing].[Prop2{RESTRICTED[n1.n2]}#Property] intenta llamar a [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{INTERNAL}#Service], no se permitirá, ya que las características internas solo son accesibles desde la entidad a la que pertenece la característica.
Si [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[Prop1{PRIVATE}#Property] intenta llamar a [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{INTERNAL}#Service], se permitirá, ya que las características internas solo son accesibles desde la entidad a la que pertenece la característica.
¿Fue esto útil?