dprn2_u1_a1_roag

6
Programación .NET II Unidad 1. Actividad 1. Encapsulamiento Encapsulamiento Unidad 1 NOMBRE: Roberto Álvarez Granados MATRÍCULA: AL12501836 CARRERA: Ingeniería en Desarrollo de Software 1

Upload: cccimsa

Post on 27-Dec-2015

431 views

Category:

Documents


0 download

TRANSCRIPT

Programación .NET IIUnidad 1. Actividad 1. Encapsulamiento

Encapsulamiento

Unidad 1

Actividad 1

NOMBRE: Roberto Álvarez GranadosMATRÍCULA: AL12501836CARRERA: Ingeniería en Desarrollo de Software

1

Programación .NET IIUnidad 1. Actividad 1. Encapsulamiento

Como ahora sabes la encapsulación se logra mediante el manejo de los cuatro alcances o niveles de encapsulamiento de CSharp: public, private, protected, internal, y cada uno permite que el encapsulamiento se concrete de forma ordenada. En esta actividad identificarás el uso y los alcances de cada uno, para ello:

1. Elabora un cuadro comparativo donde expongas el uso de cada uno de los niveles de acceso o alcances, acompañándolos de ejemplos donde se muestre el alcance de cada uno.

Nivel C# DescripciónAccesibilidad

Predeterminada

Público Public

Cualquier función de cualquier objeto puede acceder a los datos o métodos de una clase que se define con este nivel de acceso. Este es el nivel de protección de datos más bajo

PrivateInterno Internal

El acceso a los datos sólo está permitido al proyecto actual, es decir, a la clase que se está compilando.

Protegido

Protected

Es un acceso a los datos restringidos, se hereda pero no se puede manipular desde afuera.

Privado Private

El acceso a los datos está restringido, solo pueden ser modificados por los métodos de la clase que se está compilando. Este es el alcance más alto de protección de datos.

Nivel EjemploPúblico En el siguiente ejemplo, se declaran dos clases, PointTest y MainClass. El acceso

a los miembros públicos x e y de PointTest se realiza directamente desde MainClass.

class PointTest

NOMBRE: Roberto Álvarez GranadosMATRÍCULA: AL12501836CARRERA: Ingeniería en Desarrollo de Software

2

Programación .NET IIUnidad 1. Actividad 1. Encapsulamiento

{ public int x; public int y;}

class MainClass4{ static void Main() { PointTest p = new PointTest(); // Direct access to public members: p.x = 10; p.y = 15; Console.WriteLine("x = {0}, y = {1}", p.x, p.y); }}// Output: x = 10, y = 15

Interno Este ejemplo contiene dos archivos, Assembly1.cs y Assembly1_a.cs. El primer archivo contiene una clase base interna, BaseClass. En el segundo archivo, un intento de crear instancias BaseClass generará un error.

// Assembly1.cs// Compile with: /target:libraryinternal class BaseClass{ public static int intM = 0;}

// Assembly1_a.cs// Compile with: /reference:Assembly1.dllclass TestAccess{ static void Main() { BaseClass myBase = new BaseClass(); // CS0122 }

}Protegido Se puede obtener acceso a un miembro protegido de una clase base en una clase

derivada sólo si el acceso se realiza a través del tipo de la clase derivada. Por ejemplo, considere el siguiente segmento de código:

class A{ protected int x = 123;}

class B : A{ static void Main() { A a = new A(); B b = new B();

NOMBRE: Roberto Álvarez GranadosMATRÍCULA: AL12501836CARRERA: Ingeniería en Desarrollo de Software

3

Programación .NET IIUnidad 1. Actividad 1. Encapsulamiento

// Error CS1540, because x can only be accessed by // classes derived from A. // a.x = 10;

// OK, because this class derives from A. b.x = 10; }}

Privado En este ejemplo, la clase Employee contiene dos miembros de datos privados, name y salary. Como miembros privados, sólo pueden tener acceso a ellos el método miembro. Los métodos públicos denominados GetName y Salary se agregan para permitir un acceso controlado a los miembros privados. Se obtiene acceso al miembro name a través de un método público y al miembro salary a través de una propiedad pública de sólo lectura.

class Employee2{ private string name = "FirstName, LastName"; private double salary = 100.0;

public string GetName() { return name; }

public double Salary { get { return salary; } }}

class PrivateTest{ static void Main() { Employee2 e = new Employee2();

// The data members are inaccessible (private), so // they can't be accessed like this: // string n = e.name; // double s = e.salary;

// 'name' is indirectly accessed via method: string n = e.GetName();

// 'salary' is indirectly accessed via property double s = e.Salary; }}

NOMBRE: Roberto Álvarez GranadosMATRÍCULA: AL12501836CARRERA: Ingeniería en Desarrollo de Software

4

Programación .NET IIUnidad 1. Actividad 1. Encapsulamiento

2. Guarda tu actividad con la nomenclatura DPRN2_U1_A1_XXYZ. Sustituye las XX por las dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z por tu segundo apellido.

3. Sube tu archivo a la base de datos.

4. Consulta el documento Criterios de evaluación para la actividad 1 U1, para ver la rúbrica de la actividad y conocer los parámetros de evaluación.

Da clic en el ícono para descargar los Criterios de evaluación para la actividad 1 U1.

5. Posteriormente, comenta el cuadro comparativo y los ejemplos de, al menos, dos de tus compañeros(as), respecto a la definición de cada uno de los niveles de encapsulamiento, usos y alcances; así como respecto a la pertinencia de los ejemplos que incluyan. Realiza tus comentarios con respeto y de forma constructiva.

NOMBRE: Roberto Álvarez GranadosMATRÍCULA: AL12501836CARRERA: Ingeniería en Desarrollo de Software

5