PDF de programación - Parte II. Diseño e implementación de aplicaciones Web con .NET - El lenguaje de programación C#

Imágen de pdf Parte II. Diseño e implementación de aplicaciones Web con .NET - El lenguaje de programación C#

Parte II. Diseño e implementación de aplicaciones Web con .NET - El lenguaje de programación C#gráfica de visualizaciones

Actualizado el 18 de Junio del 2021 (Publicado el 16 de Abril del 2021)
1.406 visualizaciones desde el 16 de Abril del 2021
202,8 KB
47 paginas
Creado hace 14a (05/03/2010)
Integración de Sistemas

El lenguaje de
programación C#

Integración de Sistemas
Parte II. Diseño e implementación de
aplicaciones Web con .NET

Indice

 Introducción

 Compilador C#

 Namespaces

 Sistema de tipos unificado

 Tipos predefinidos

 Clases

 Estructuras (struct)

 Enumeraciones

 Interfaces

 Operadores

 Entrada / Salida por Consola

 Sentencias

 Colecciones

 Generics

 Anexo I. Documentación XML en

.NET

Curso 2009 - 2010

1

Integración de Sistemas

Introducción

 C# es un lenguage OO usado para desarrollar aplicaciones en la

plataforma .NET

 Diseñado por Microsoft para combinar la potencia de C/C++, Java y

la productividad de Visual Basic

 El objetivo de C# (y de la plataforma .NET) es reducir el tiempo de

desarrollo

 Permitiendo a los desarrolladores invertir su tiempo trabajando en la lógica de

negocio en lugar de detalles de programación de bajo nivel

Introducción

 En C# todo es un objeto

 Todo hereda de System.Object

 Es posible declarar un tipo primitivo (long) y trabajar con él de

forma eficiente. Además, es posible asignarlo a un objeto y
entonces será tratado como tal

 Incluye mecanismos transparentes de boxing y unboxing (se ilustra

más adelante)

 Los tipos primitivos sólo se tratan como objetos cuando la situación lo

requiere, mientras tanto pueden aplicárseles optimizaciones específicas

Curso 2009 - 2010

2

Integración de Sistemas

Introducción
Hola Mundo

class HelloWorld
{

* Class HelloWorld
* Description: simple C# example
*/

1. using System;
2. namespace Es.UDC.DotNet.CSharpTutorial
3. {
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19. }

}
#endregion

}

/*

#region Test code. Uncomment for testing
// entry point
public static void Main()
{

Console.WriteLine("Hello World!");
Console.ReadLine();

Introducción
Hola Mundo

 La línea "using System;" significa que accederemos a miembros del

namespace System

 Static es un modificador que indica que se trata de un método de clase

 Main() es lo que es denomina el punto de entrada de la aplicación

 Necesita del modificador static para evitar que para llamarlo haya que crear algún objeto de

la clase donde se haya definido.

 C# es sensible a las mayúsculas

 Los métodos y nombres de clases siguen sitáxis PascalCase (e.g., FindByUserIdentifier(…))

 Los atributos siguen sitáxis camelCase (e.g., firstName)

Curso 2009 - 2010

3

Integración de Sistemas

Introducción

 Sólo se admite herencia simple

 Se admite implementación de múltiples interfaces

 public class ClaseBase { … }

 public interface IInterfaz { … }

 public class ClaseDerivada : ClaseBase, IInterfaz { … }

 Para evitar que una clase se pueda extender se indica con: sealed

 Los métodos, por defecto, no pueden redefinirse (son sealed).

 Para poder redefinir un método

 Definirlo como virtual

 En la redefinición del método indicar override

Introducción
La clase System.Object

 Todos los tipos heredan de System.Object

 public virtual bool Equals(object o)

 public virtual int GetHashCode()

 public virtual string ToString()

 protected object MemberWiseClone()

 public System.Type GetType()

 protected virtual void Finalize()

 public static bool Equals(object o1, object o2)

 protected static bool ReferenceEquals(object o1, object o2)

Curso 2009 - 2010

4

Integración de Sistemas

Compilador C#



Los archivos C# tienen extensión .cs

 Ubicación Compilador C#

 C:\windows\Microsoft.NET\Framework\vn.n.nnn\csc.exe



Sintaxis

 csc [opciones] fich1.cs [, fich2.cs]

 Opciones

 /out:ficheroSalida

 /t:winexe

 /t:library

 /r:librería.dll

 Por defecto se referencia a mscorlib.dll.

 /main:clase

⇒ Todo esto se puede hacer desde el Visual Studio

Namespaces

 Declaración:

namespace <NombreEspacio>
{

<Definición clases>

}

 Anidación de namespaces válida

 NmbEspacio1.NmbEspacio2.NmbEspacio3;

 Referencia a namespaces externos

 using

 Alias: evitar conflictos entre namespaces

 using <alias> = <NombreCompletoClase>;

Curso 2009 - 2010

5

Integración de Sistemas

Namespaces

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.IO;

static void Main(string[] args)
{

string username;
ArrayList namesCollection;

using SC = System.Collections;
using SIO = System.IO;

static void Main(string[] args)
{

string username;
string filename

SC.ArrayList namesCollection;

filename = SIO.Path.Combine( ... );

¿A qué namespace pertenece?

Sistema de Tipos Unificado
Tipos valor y referencia

 Valor

 Primitivos
 Enumeraciones
 Estructuras

 Referencia

 Raíz
 String
 Clases
 Interfaces
 Arrays

int i;

enum State { Off, On }

struct Point { int x, y; }

object

string

class Foo : Bar, IFoo {...}

interface IFoo : IBar {...}

string[] a = new string[10];

Curso 2009 - 2010

6

Integración de Sistemas

Sistema de Tipos Unificado
Boxing & Unboxing

 Los tipos valor (struct, enum, int…) pueden ser convertidos en tipos

referencia (y viceversa) de forma automática mediante Boxing (y
Unboxing)

 Boxing:

 Encapsulación de tipo valor en tipo referencia
 Ej: la siguiente sentencia “envuelve” el valor 3 en un objeto

object obj = 3;

 Unboxing

 Proceso inverso al boxing. Tratamiento de tipo referencia como tipo valor
 Ej.: la siguiente sentencia “desenvuelve” el valor

int x = (int) obj;

Sistema de Tipos Unificado
Boxing & Unboxing

 Boxing

 Reserva espacio

 Copia valor en ese espacio

 Unboxing

 Chequea tipo dato

 Desenvuelve el valor

int i = 123;
object o = i; // boxing
int j = (int)o; // unboxing

Pila (stack)

Montón (heap)

i

o

j

123

123

(i boxed)

int

123

Curso 2009 - 2010

7

Integración de Sistemas

Tipos predefinidos

 C#

 Reference
 Signed
 Unsigned
 Character
 Floating-point
 Logical

object, string

sbyte, short, int, long

byte, ushort, uint, ulong

char

float, double, decimal

bool

 Importante: realmente se trata de alias a tipos proporcionados por el

sistema
 int es un alias a System.Int32
 Válido:

int entero = 100;
entero.ToString();

Tipos predefinidos

Tipo

Descripción

Bits

Rango

SByte

Byte

Int16

UInt16

Int32

UInt32

Bytes con signo

Bytes sin signo

Enteros cortos con signo

Enteros cortos sin signo

Enteros normales

Enteros normales sin signo

Int64

Enteros largos

Enteros largos sin signo

Reales con 7 dígitos

Reales de 15-16 dígitos

8

8

16

16

32

32

64

64

32

64

[-128…127]

[0…255]

[-32.768…32.767]

[0…65.535]

[-2.147.483.648…2.147.483.647]

[0…4.294.967.295]

[-9.223.372.036.854.775.808…

9.223.372.036.854.775.807]

[0…18.446.744.073.709.551.615]

[±1,5×10-45…±3,4×1038]

[±5,0×10-324 …± 1,7×10308]

UInt64

Single

Double

Decimal

Boolean

Char

String

Object

Reales de 28-29 dígitos significativos

128

[±1,0×10-28 …± 7,9×1028]

Valores lógicos

Caracteres Unicode

Cadenas de caracteres

32

16

true, false

[‘\u0000’, ‘\uFFFF’]

Variable

Valor máximo determinado por
memoria

Cualquier objeto

Variable

Cualquier objeto

Alias

sbyte

byte

short

ushort

int

uint

long

ulong

float

double

decimal

bool

char

string

object

Curso 2009 - 2010

8

Integración de Sistemas

Tipos predefinidos
Sufijos

 Problema:

 public static void Foo(int x){...}

 public static void Foo(long x){...}

 ¿Llamada Foo(100)?

 Tipo del literal entero es el primero que permita almacenarlo: int, uint,

long, ulong

 Foo(100) llama al primer método

 Sufijos

 L (long, ulong), U (int, uint), UL (ulong)

 F (float), D (double), M (decimal)

 Ejemplo

 Foo(100L) llama al segundo método

Clases

 Las clases C# son similares a las clases Java

 C# permite los siguientes miembros de clase (entre otros)

 Constructores

 Destructores

 Campos

 Propiedades

 Métodos

Curso 2009 - 2010

9

Integración de Sistemas

Clases
Constructores

 Llamadas entre constructores: this

class SuperClass
{
private string argument1;

public SuperClass() : this("<Default arg1>") { }

public SuperClass(string arg1)
{
this.argument1 = arg1;
Console.WriteLine("Arguments: " + argument1);
}

public static void Main()
{
// Creating a SuperClass instance
SuperClass sc = new SuperClass();
/* Shows:
* Arguments: <Default arg1>
*/

Console.ReadLine();
}
}

Clases
Constructores

 Llamadas a la clase base: base

class ChildClass : SuperClass
{
private string argument2;

public ChildClass() : this("<Default arg2>") { }

public ChildClass(string arg2)
{
this.argument2 = arg2;
Console.WriteLine("Arguments: " + argument2);
}

public ChildClass(string arg1, string arg2)
: base(arg1)
{
this.argument2 = arg2;
Console.WriteLine("Arguments: " + argument2);
}
}

Curso 2009 - 2010

10

Integración de Sistemas

Clases
Constructores

 Ejemplo

public static void Main()
{
SuperClass sc = new SuperClass();
/* Shows:
* Arguments: <Default arg1>
*/

ChildClass cc = new ChildClass();
/* Shows:
* Arguments: <Default arg1>
* Arguments: <Default arg2>
*/

ChildClass cc2 = new ChildClass("1", "2");
/* Shows:
* Arguments: 1
* Arguments: 2
*/

Console.ReadLine();
}

Clases
Constructores estáticos

 Permiten inicialización de código, que se realizará una única vez

para la clase

 Garantizan la ejecución antes de:

 La creación de la primera instancia de la clase

 El acceso a cualquier miembro estático

 Un único constructor estático por clase

 No pueden tener parámetros
 Equivalente a bloque static de Java

Curso 2009 - 20
  • Links de descarga
http://lwp-l.com/pdf19107

Comentarios de: Parte II. Diseño e implementación de aplicaciones Web con .NET - El lenguaje de programación C# (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad