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.