Namespaces y C#
Apoyo POO
Introducción
• “Namespaces” o “nombres de espacios” son
un concepto relativamente nuevo en los
lenguajes de cómputo.
• A p...
Introducción (cont.)
• Uno de los principales problemas en la
programación es la sobre-posición de
nombres.
• Podemos crea...
Introducción (cont.)
• ¿Qué pasa si algunas de las clases de la otra
persona se llaman igual a algunas de nuestras
clases,...
• Podemos imaginar que “namespace” es
similar a una ciudad.
• Si le comentamos a alguien que vivimos en la
calle “principa...
• Podemos hacer una analogía entre el
“namespace” y el nombre de la ciudad y la
calle en la que “colocamos” cierta clase, ...
• Se puede poner casi cualquier cosa dentro de
un “namespace”, e incluso anidarlos entre sí.
namespace System namespace Ch...
• Los “namespace” anidados permiten crear
jerarquías, como que México existe dentro del
continente Americano, la Ciudad de...
Creando “namespaces”
namespace Chapter04
{
class Spaceship{
//código de la clase
}
class Spacestation{
//código de la clas...
• Afuera del namespace, accederíamos a la
clase, así:
Chapter04.Spaceship s = new Chapter04.Spaceship();
• Otra cosa inter...
• En un archivo podemos tener:
namespace Chapter04
{
class Spaceship{
//código de la clase
}
}
• Y en otro archivo tener:
...
Usando los namespaces
• Cuando nos encontramos dentro de un
namespace, podemos usar cualquier cosa que
se encuentre en ell...
• Sin embargo, si sólo usaremos elementos de un
solo namespace, podemos usar la palabra
reservada using para evitar tener ...
Alias de namespace
• Los namespace anidados pueden ser un
problema, sin embargo se puede poner un
alias para acortar el us...
Actividad práctica 10
• Tomaremos el proyecto de herencia múltiple,
que programamos en un solo archivo de clase,
y lo sepa...
El código original …
• Estaba en un solo archivo:
16Mtl. Lourdes Cahuich
namespace Herencia_2p
{
public class B
{ //propiedades
private int p_b; //miembro privado clase base
protected int m_b; //...
Agregamos un nuevo archivo de clase
• Y en el nuevo archivo ponemos lo siguiente:
namespace Herencia_2p
{
public class D :...
En el archivo de clase original sólo
queda:
namespace Herencia_2p
{
public class B
{ //propiedades
private int p_b; //miem...
El código principal queda sin cambios
20Mtl. Lourdes Cahuich
21Mtl. Lourdes Cahuich
of 21

Namespaces y C#

Explicación de qué son y para qué sirven los "namespaces" en el contexto de C#
Published on: Mar 3, 2016
Published in: Education      
Source: www.slideshare.net


Transcripts - Namespaces y C#

  • 1. Namespaces y C# Apoyo POO
  • 2. Introducción • “Namespaces” o “nombres de espacios” son un concepto relativamente nuevo en los lenguajes de cómputo. • A pesar de esto, son elementos muy útiles y en algunos casos, son esenciales en la programación. 2Mtl. Lourdes Cahuich
  • 3. Introducción (cont.) • Uno de los principales problemas en la programación es la sobre-posición de nombres. • Podemos crear muchas clases para nuestro programa, y después decidir que importaremos la biblioteca de alguien más para ayudarnos con el programa. 3Mtl. Lourdes Cahuich
  • 4. Introducción (cont.) • ¿Qué pasa si algunas de las clases de la otra persona se llaman igual a algunas de nuestras clases, pero realizan cosas diferentes? • Aunque no lo parezca, esto sucede con mucha frecuencia. 4Mtl. Lourdes Cahuich
  • 5. • Podemos imaginar que “namespace” es similar a una ciudad. • Si le comentamos a alguien que vivimos en la calle “principal”, no le estamos dando mucha información, ya que existen muchas calles con el mismo nombre, en diferentes ciudades. • Para ubicar exactamente la calle, debemos incluir la ciudad en la que vivimos 5Mtl. Lourdes Cahuich
  • 6. • Podemos hacer una analogía entre el “namespace” y el nombre de la ciudad y la calle en la que “colocamos” cierta clase, para así poder segmentar nuestro programa. 6Mtl. Lourdes Cahuich
  • 7. • Se puede poner casi cualquier cosa dentro de un “namespace”, e incluso anidarlos entre sí. namespace System namespace Chapter04 namespace System.Data namespace System.Coleccion clase System.Consola clase Chapter04.Spaceship clase Chapter04.Spacesstation 7Mtl. Lourdes Cahuich
  • 8. • Los “namespace” anidados permiten crear jerarquías, como que México existe dentro del continente Americano, la Ciudad de México existe dentro de México, la colonia del Valle existe dentro de la ciudad de México. 8Mtl. Lourdes Cahuich
  • 9. Creando “namespaces” namespace Chapter04 { class Spaceship{ //código de la clase } class Spacestation{ //código de la clase } } 9Mtl. Lourdes Cahuich
  • 10. • Afuera del namespace, accederíamos a la clase, así: Chapter04.Spaceship s = new Chapter04.Spaceship(); • Otra cosa interesante es que podemos tener fragmentado un namespace en diferentes archivos 10Mtl. Lourdes Cahuich
  • 11. • En un archivo podemos tener: namespace Chapter04 { class Spaceship{ //código de la clase } } • Y en otro archivo tener: namespace Chapter04 { class Spacestation{ //código de la clase } } • El compilador de C# automáticamente une los namespaces, así que no se tiene que poner todo en un archivo enorme 11Mtl. Lourdes Cahuich
  • 12. Usando los namespaces • Cuando nos encontramos dentro de un namespace, podemos usar cualquier cosa que se encuentre en ellos sin tener que calificarlos. • Pero si nos encontramos fuera del namespace, se debe calificar lo que usemos de éste, escribiendo primero el nombre del namespace, seguido de un punto y después lo que queremos usar de dicho namespace. 12Mtl. Lourdes Cahuich
  • 13. • Sin embargo, si sólo usaremos elementos de un solo namespace, podemos usar la palabra reservada using para evitar tener que calificar cada elemento que usemos de dicho namespace //al inicio del archivo de código using Chapter04; //después en el código Spaceship s = new Spaceship(); 13Mtl. Lourdes Cahuich
  • 14. Alias de namespace • Los namespace anidados pueden ser un problema, sin embargo se puede poner un alias para acortar el uso de namespaces anidados using D3D = Microsoft.DirectX.Direct3D; 14Mtl. Lourdes Cahuich
  • 15. Actividad práctica 10 • Tomaremos el proyecto de herencia múltiple, que programamos en un solo archivo de clase, y lo separaremos en dos archivos diferentes, pero que tengan el mismo namespace • De manera que, aunque hagamos este cambio en el código de la clase, no tendremos que modificar el código fuente principal del proyecto. 15Mtl. Lourdes Cahuich
  • 16. El código original … • Estaba en un solo archivo: 16Mtl. Lourdes Cahuich
  • 17. namespace Herencia_2p { public class B { //propiedades private int p_b; //miembro privado clase base protected int m_b; //miembro protegido clase base public int k_b; //miembro público clase base //métodos public int cuadrado() { return k_b * k_b; } //propiedad pública public int producto() { return k_b * m_b; } //propiedad protegida public int otroProducto() { return p_b*k_b; } //funcion propiedad privada //setters/getters public void escribeP(int num){ p_b = num; } public void escribeM(int num) { m_b = num; } } //Fin clase B (Base) public class D : B //Herencia sencilla { //propiedades de clase derivada public int n_d; //métodos public void setvalueBase(int a) { m_b = a; } public void setvalueN(int a) { n_d = a; } public int prodNporM() { return n_d * m_b; } } //Fin clase D (Derivada) public class C : D { public int c_c=5; public int productoDeTodos(){ return (k_b * n_d * c_c); //m clase abuelo, n clase padre, cc clase nieta } } } 17Mtl. Lourdes Cahuich
  • 18. Agregamos un nuevo archivo de clase • Y en el nuevo archivo ponemos lo siguiente: namespace Herencia_2p { public class D : B //Herencia sencilla { //propiedades de clase derivada public int n_d; //métodos public void setvalueBase(int a) { m_b = a; } public void setvalueN(int a) { n_d = a; } public int prodNporM() { return n_d * m_b; } } //Fin clase D (Derivada) public class C : D { public int c_c = 5; public int productoDeTodos() { return (k_b * n_d * c_c); //m clase abuelo, n clase padre, cc clase nieta } } } 18Mtl. Lourdes Cahuich
  • 19. En el archivo de clase original sólo queda: namespace Herencia_2p { public class B { //propiedades private int p_b; //miembro privado clase base protected int m_b; //miembro protegido clase base public int k_b; //miembro público clase base //métodos public int cuadrado() { return k_b * k_b; } //propiedad pública public int producto() { return k_b * m_b; } //propiedad protegida public int otroProducto() { return p_b*k_b; } //funcion propiedad privada //setters/getters public void escribeP(int num){ p_b = num; } public void escribeM(int num) { m_b = num; } } //Fin clase B (Base) } 19Mtl. Lourdes Cahuich
  • 20. El código principal queda sin cambios 20Mtl. Lourdes Cahuich
  • 21. 21Mtl. Lourdes Cahuich