Está en la página 1de 108

SIS-457

FUNDAMENTOS DE PROGRAMACION
U.M.R.P.S.F.X.CH.

INDICE DE CONTENIDO

Arquitectura de las Aplicaciones


Estndares de Codificacin
Tecnologa .NET
Visual Studio
Herramientas para Visual Studio
Elementos de C#
Object Relational Mapping ORM
Aplicaciones Web
Web Services, a.k.a. Services
Aplicacin Prctica

INDICE DE CONTENIDO

Arquitectura de las Aplicaciones


Estndares de Codificacin
Tecnologa .NET
Visual Studio
Herramientas para Visual Studio
Elementos de C#
Object Relational Mapping ORM
Aplicaciones Web
Web Services, a.k.a. Services
Aplicacin Prctica

Arquitectura de las Aplicaciones


Ingeniera de software designa el conjunto de tcnicas destinadas
a la produccin de un programa de computadora (Software)
Etapas Comunes del proceso de la Ingeniera de Software:
Anlisis de requisitos: Extraer los requisitos de un producto de
software es la primera etapa para crearlo.
Especificacin: Es la tarea de describir detalladamente el
software a ser escrito, en una forma matemticamente rigurosa.
Diseo y arquitectura: Se refiere a determinar como funcionar
de forma general sin entrar en detalles el programa.
Programacin: Reducir un diseo a cdigo
Pruebas: Comprobar que el software realice correctamente las
tareas indicadas en la especificacin.
Documentacin: Manual de usuario, Manual tcnico con el

Arquitectura de las Aplicaciones

No cumple con lo esperado


Baja calidad del software
Es ms caro de lo que
pensbamos
proyectos que se retrasan o
fracasan
Tardamos ms en desarrollarlo de
lo que creamos
Cada vez es ms complejo

Arquitectura de las Aplicaciones


Uno de los desarrollos ms
importantes
dentro
de
la
construccin del software ha sido
el desarrollo de la arquitectura de
software, que permite representar
la estructura de un sistema a un
nivel mayor que el dado por la
programacin o incluso el diseo.
Se busca al desarrollar software
Cumplir la necesidades del
usuario final.
Garantizar la calidad.
Aumentar la cultura dentro de
las personas que participan en el
desarrollo.
Mejor empleo de la tecnologa y
del conocimiento.

Arquitectura de las Aplicaciones


Arquitectura N-Tier, N-Layer
Ambos trminos significan de n capas"; pero
existe una gran diferencia respecto al significado
de cada uno de ellos.

Arquitectura de las Aplicaciones


Arquitectura N-Tier
Una arquitectura n-Tier se refiere a la distribucin fsica de las
capas, es decir donde corre el cdigo y los procesos.

N-Tier aprovecha al mximo las capacidades de las


aplicaciones diseadas por capas para ajustar los
recursos a las necesidades de cada uno de los niveles de

Arquitectura de las Aplicaciones


Arquitectura N-Layer
Una arquitectura n-Layer se refiere a la distribucin lgica de las
capas, es decir, como est estructurado el cdigo.

Normalmente incluye una capa de presentacin, una capa de


negocio, una capa de acceso a datos, una capa de entidades de
negocio y un repositorio de datos. El hecho de que se dividan las
capas para organizar el cdigo, no significa que las capas
obligatoriamente deban corren en diferentes mquinas o que deben
estrictamente correr en una sola mquina o en un nico proceso.

INDICE DE CONTENIDO

Arquitectura de las Aplicaciones


Estndares de Codificacin
Tecnologa .NET
Visual Studio
Herramientas para Visual Studio
Tipos de Clases
Elementos de C#
Object Relational Mapping ORM
Aplicaciones Web
Web Services, a.k.a. Services
Aplicacin Prctica

Estndares de Codificacin

Un estndar de codificacin completo comprende todos los


aspectos de la generacin de cdigo.

Implementacin de un estndar de forma prudente, ste debe


tender siempre a lo prctico.

Un cdigo fuente completo debe reflejar un estilo armonioso, como


si un nico desarrollador hubiera escrito todo el cdigo de una sola
vez.
Al comenzar un proyecto de software, se establece un estndar de
codificacin para asegurarse de que todos los desarrolladores del
proyecto trabajen de forma coordinada.
La legibilidad del cdigo fuente repercute directamente en lo bien
que un desarrollador comprende un sistema de software.
El mantenimiento del cdigo es la facilidad con que el sistema de
software puede modificarse para aadirle nuevas caractersticas,

Estndares de Codificacin
NOTACION C

Es la menos conocida. Consiste en que


bsicamente los espacios se cambian por un
guin bajo.

Esto resultaba til durante los aos 60 donde


poda pasar que escribir una mayscula era ms
lento que escribir un guin bajo.
Lo otro que llama la atencin de este tipo de
notacin es que todo se escribe en letras
minsculas.

Estndares de Codificacin
NOTACION POSICIONAL
Notacin poco conocida hoy en da (pero que en
sus tiempos fue famosa).
Se ocupaba primordialmente en ambientes
limitado por el famoso 8.3 (DOS) que tambin se
aplicaba a algunos lenguajes de programacin.
Esta restriccin tambin se aplicaba a algunos
lenguajes de programacin.
Ejemplo:
IVCIIL01, donde IV sera la aplicacin, C para

Estndares de Codificacin
NOTACION HUNGARA
El inventor de esta notacin (Charles Simonyi)
naci en Hungra, por eso el nombre.
Consiste en prefijos en que se aaden a los
nombres de las variables y que indican su tipo.
El resto del nombre indica, lo ms claramente
posible, la funcin que realiza la variable.
De esa forma, un string recibir la letra s o str, un
integer la letra i o int, un decimal la letra d o dec.
Un arreglo la letra a o arr.

Estndares de Codificacin
NOTACION CAMEL
Es quizs la ms famosa y la que, aparte de los
lenguajes de programacin, tambin se le ha visto fuera
de estas.
Se llama notacin Camel porque los identificadores
recuerdan las jorobas de un camello.
Existen dos variantes:
o

UpperCamelCase, CamelCase o PascalCase:


cuando la primera letra de cada una de las palabras es
mayscula.

Ejemplo:EjemploDeUpperCamelCase.

INDICE DE CONTENIDO

Arquitectura de las Aplicaciones


Estndares de Codificacin
Tecnologa .NET
Visual Studio
Herramientas para Visual Studio
Tipos de Clases
Elementos de C#
Object Relational Mapping ORM
Aplicaciones Web
Web Services, a.k.a. Services
Aplicacin Prctica

Tecnologa .NET

La tecnologa .NET es el conjunto de


tecnologas en las que Microsoft ha
estado trabajando durante los ltimos
aos con el objetivo de obtener una
plataforma sencilla y potente para
distribuir el software en forma de
servicios que puedan ser suministrados
remotamente
y
que
puedan
comunicarse y combinarse unos con
otros
de
manera
totalmente
independiente
de
la
plataforma,
lenguaje de programacin y modelo de

Tecnologa .NET
.NET es una nueva plataforma para el desarrollo y explotacin
de aplicaciones gestionadas (managed) modernas y orientadas
a objetos
Las aplicaciones .NET se pueden desarrollar en cualquier
lenguaje de programacin que se ajusta a .NET
.NET soporta una extensa framework de libreras de clases
independientes del lenguaje de programacin
.NET soporta la creacin de componentes auto-describibles
.NET ofrece integracin multi-lenguaje, reutilizacin de
componentes, y herencia entre componentes desarrollados en
diferentes lenguajes
.NET ofrece un nueva manera de desarrollar aplicaciones de
escritorio usando las clases Windows Forms
.NET ofrece una nueva manera de desarrollar aplicaciones
basadas en navegador Web a travs de ASP.NET
Las clases ADO.NET proveen una arquitectura desconectada
para acceso a datos.
.NET soporta la creacin de Servicios Web XML independientes
de la plataforma, a travs de SOAP (Simple Object Access
Protocol) y WSDL (Web Services Description Language)

Tecnologa .NET
Para
conseguir
la
independencia
comunicacin se han creado varios
(http://www.w3c.org)

entre
la
estndares

XML (Lenguaje de marcas Extendido), Es un formato


universal para representar los datos
SOAP (Protocolo de Acceso a Objetos Simples), Es un
protocolo que permite mover los datos entre
aplicaciones y sistemas. Es el protocolo que permite
invocar a los servicios Web
UDDI (Descubrimiento, Descripcin e Integracin
Universal), es un lenguaje que permite publicar,
encontrar y usar los servicios Web basados en XML
(Pagina Amarilla)
WSDL (Lenguaje de Descripcin de Servicios Web), es
un lenguaje que permite describir el qu hace o que

Tecnologa .NET

Microsoft.NET est compuesto


de:
Plataforma .NET
Framework .NET
Visual Studio .NET
Servicios Web (Microsoft
.NET myServices)
Servidores para

Framework .NET

Framework .NET (Librera de clases)


Incluye las herramientas necesarias para el
desarrollo y distribucin.
El futuro de Microsoft estar en base a este marco
de trabajo
Visual Studio utiliza el Framework para ofrecer las
facilidades a los desarrolladores
Contiene a todas las clases con las cuales se
construyen las dems clases
La clase madre de todas es System, a partir de ella
por un mecanismo llamado herencia de clases,
se construyen las dems clases
La librera de Clases Base es independiente del
lenguaje

Framework .NET

Framework .NET

Common Language Runtime


(CLR)
Microsoft Intermediate
Language (MSIL)
Librera de clase base (BCL)
Common Type System (CTS)

Framework .NET
Common Language Runtime (CLR)
El Runtime de Lenguaje Comn provee lo que se
llama cdigo administrado es decir un entorno que
provee servicios automticos al cdigo que se
ejecuta.
El CLR es el ncleo de la plataforma .NET. Es el motor
encargado de gestionar la ejecucin de las
El
CLR lo que
aplicaciones.

hace es gestionar
la ejecucin de
las
aplicaciones
diseadas para la
plataforma .NET

Framework .NET
Servicios del CLR
Cargador de Clases: Permite cargar en memoria las clases
Compilador MSIL a nativo: Transforma cdigo intermedio de alto
nivel independiente del hardware que lo corre a cdigo de mquina
propio del dispositivo que lo ejecuta.
Administrador de Cdigo: Coordina toda la operacin de los
distintos subsistemas del Runtime de lenguaje comn
Colector de Basura: Elimina de memoria objetos no utilizados.
Motor de Seguridad: Administra la seguridad del cdigo que se
ejecuta
Motor de Depuracin: Permite hacer un seguimiento de la
ejecucin del cdigo aun cuando se utilicen lenguajes distintos.
Chequeador de Tipos: Controla que las variables de la aplicacin
usen el rea de memoria que tienen asignado.
Administrador de Excepciones: Maneja los errores que se
producen durante la ejecucin del cdigo
Soporte de Hilos: Permite ejecutar cdigo en forma paralela
Empaquetador de COM: Coordina la comunicacin con los
componentes COM para que puedan ser usados por el Marco de
Trabajo.

Framework .NET
Microsoft Intermediate Language (MSIL)
Todos los compiladores de los lenguajes generan un cdigo
MSIL y no un cdigo nativo
Es como la mquina virtual de JAVA y precisamente el
cdigo MSIL es el cdigo mquina de esta mquina virtual.
Por qu el MSIL?
Una aplicacin nativa no puede utilizarse directamente en
otros sistemas operativos, en ocasiones ni en distintas
versiones del mismo sistema, y tampoco se ejecutaran en
otros procesadores
Por tanto, por cada procesador y sistema operativo es
necesario generar un cdigo nativo
.NET genera un cdigo intermedio
Es independiente del sistema operativo y procesadores
Para que un compilador genere un cdigo MSIL utiliza el
Sistema Comn de Tipos

Framework .NET
El MSIL debe ser convertido a un cdigo nativo que
entienda el CPU.
JIT se encarga de generar un cdigo nativo a travs del
MSIL.
JIT ira generando cdigo nativo a medida que se necesite o
se solicite.
Solo se convierte una sola vez, a la segunda solicitud no es
utilizado el JIT.
Por todo esto, se llama cdigo administrado.

Framework .NET

Librera de clase base (BCL)


Es una librera incluida en el .NET
Framework formada por cientos de tipos de
datos, permite:
Acceder a los servicios ofrecidos por el
CLR
Obtener funcionalidades ms
frecuentemente usadas a la hora de
escribir programas
Crear nuevas clases mediante herencia
Esta librera est escrita en MSIL

Framework .NET

Librera de clase base


(BCL)
Espacio de nombres
System

System.Collections

Utilidad de los tipos de datos que


contiene
Tipos muy frecuentemente usados, como los
los tipos bsicos, tablas, excepciones,
fechas, nmeros aleatorios, recolector
de basura, entrada/salida en consola,
etc.
Colecciones de datos de uso comn como
pilas, colas, listas, diccionarios, etc.

System.Data

Manipulacin de bases de datos. Forman la


denominada arquitectura ADO.NET.

System.IO

Manipulacin de ficheros y otros flujos de


datos.
Realizacin de comunicaciones en red.

System.Net

Framework .NET

Librera de clase base


(BCL)
System.Reflection

Acceso a los metadatos que acompaan a


los mdulos de cdigo.

System.Runtime.Remo
ting

Acceso a objetos remotos.

System.Security

Acceso a la poltica de seguridad en que se


basa el CLR.

System.Threading

Manipulacin de hilos.

System.Web.UI.WebCo
ntrols

Creacin de interfaces de usuario basadas


en ventanas para aplicaciones Web.

System.Windows.Form
s

Creacin de interfaces de usuario basadas


en ventanas para aplicaciones estndar.

System.XML

Acceso a datos en formato XML.

Framework .NET
Common Type System (CTS)
Sistema de Tipo Comn es el conjunto de
reglas que han de seguir las definiciones de
tipos de datos para que el CLR las acepte.
Algunas reglas del CTS son las siguientes:
Cada tipo de dato puede constar de cero o ms
miembros. Cada uno de estos miembros puede ser
un campo, un mtodo, una propiedad o un evento.
No puede haber herencia mltiple, y todo tipo de
dato ha de heredar directa o indirectamente de
System.Object.

Framework .NET

Common Type System


(CTS)
Los modificadores
de acceso
Modificador
Cdigo desde el que es accesible el miembro
admitidos
son
public

Cualquier cdigo

private

Cdigo del mismo tipo de dato

family

Cdigo del mismo tipo de dato o de hijos de ste.

assembly

Cdigo del mismo ensamblado

family and assembly

Cdigo del mismo tipo o de hijos de ste ubicado en el mismo


ensamblado

family or assembly

Cdigo del mismo tipo o de hijos de ste, o cdigo ubicado en


el mismo ensamblado

INDICE DE CONTENIDO

Arquitectura de las Aplicaciones


Estndares de Codificacin
Tecnologa .NET
Visual Studio
Herramientas para Visual Studio
Elementos de C#
Object Relational Mapping ORM
Aplicaciones Web
Web Services, a.k.a. Services
Aplicacin Prctica

Visual Studio

EN LABORATORIO

INDICE DE CONTENIDO

Arquitectura de las Aplicaciones


Estndares de Codificacin
Tecnologa .NET
Visual Studio
Herramientas para Visual Studio
Elementos de C#
Object Relational Mapping ORM
Aplicaciones Web
Web Services, a.k.a. Services
Aplicacin Prctica

Herramientas para Visual Studio


RESHARPER
Es una extensin para Microsoft Visual Studio, que aumenta la
productividad del desarrollador.
Automatiza las rutinas de codificacin.
Encuentra errores del compilador, errores de ejecucin, redundancias,
cdigo errneo, y sugiere posibles mejoras a la hora de escribir
cdigo.
Sugiere correcciones inteligentes.
Ayuda a explorar el cdigo mediante la visualizacin de la estructura
de archivos, tipo y estilo jerarquas, llamadas y cadenas de valor y
dependencias del proyecto.
Ayuda en la Refactorizacin (formato de cdigo).
Ayuda en la limpieza del cdigo que le permite deshacerse de cdigo
no utilizado.

Herramientas para Visual Studio

Por qu ReSharper ?
Porque apoya los lenguajes de C #, VB.NET, XAML, JavaScript, XML,
HTML, CSS, scripts de ASP.NET, ASP.NET MVC.
Ayuda tambin a cualquier usuario de Visual Studio a mejorar su
cdigo.
Porque aplica la comprobacin de errores y correccin automtica de
cdigo , lo que reduce el tiempo de desarrollo y aumenta su eficiencia.
Mejora la calidad del cdigo escrito.

Herramientas para Visual Studio

Herramientas para Visual Studio


StyleCop
Es una herramienta que analiza cdigo fuente.
Aplica un conjunto de reglas de estilo y
consistencia.
Ayuda en la aplicacin de los estndares de
programacin.
Capacidad de crear nuevas reglas para su
aplicacin.
Soporta reglas de:
o documentacin
o disponibilidad
o mantenibilidad
o ordenacin
o legibilidad

Herramientas para Visual Studio

INDICE DE CONTENIDO

Arquitectura de las Aplicaciones


Estndares de Codificacin
Tecnologa .NET
Visual Studio
Herramientas para Visual Studio
Elementos de C#
Object Relational Mapping ORM
Aplicaciones Web
Web Services, a.k.a. Services
Aplicacin Prctica

Elementos de C#

Elementos Bsicos del C#


Introduccin al lenguaje
Caractersticas del lenguaje
Tipos de Datos
Espacios de Nombres
Clases, objetos
Visibilidad de una clase y sus
miembros
Manejo de excepciones

Elementos de C#

Introduccin al Lenguaje C#
Es un lenguaje desarrollado por la Empresa
Microsoft para la plataforma .NET
Sus principales creadores son Scout
Wiltamuth y Anders Hejlsberg
La sintaxis y estructuracin de C# es muy
parecida a la de C++ o Java
C# es un lenguaje de programacin que
toma las mejores caractersticas de
lenguajes preexistentes como Visual Basic,
Java y C++

Elementos de C#

Introduccin al Lenguaje C#
Su compilador es el ms depurado y
optimizado de los incluidos en el .NET
Framework SDK.
El lenguaje C# no ha sido creado tan
solo por y para Microsoft y su
plataforma .NET
Existencia de Compilador Mono, con
soporte para C#.

Elementos de C#

Caractersticas del lenguaje


C#.
Sencillez.
El cdigo escrito en C# es
autocontenido, lo que significa que
no necesita de ficheros adicionales.
Portabilidad del cdigo, ya que los
tipos de datos bsicos son
independientes del compilador,
sistema operativo o mquina.
No se incluye la herencia mltiple, los

Elementos de C#

Caracterstica del lenguaje


C#.
Seguridad de tipos.

Slo se admiten conversiones entre tipos


compatibles.
No se pueden usar variables no inicializadas.
Se puede controlar la produccin de
desbordamientos en operaciones aritmtica.
A diferencia de Java, C# incluye delegados, siguen
un enfoque orientado a objetos.
Pueden definirse mtodos que admitan un nmero
indefinido de parmetros de un cierto tipo.

Elementos de C#

Tipos de Datos

Elementos de C#

Variables
C# requiere una asignacin definida,
esto quiere decir que las variables
deben ser asignadas o inicializadas
antes de su uso.
int Codigo = 12345;
string NombrePersona = Juan
Perez;

Elementos de C#

Constantes
Una constante es una variable que no
tendr un cambio en ejecucin.
const int x = 1000;
const char Nom= e ;

Elementos de C#

Enumeradores
Es una
alternativa de una constante, pero el
enumerador puede contener un conjunto de
constantes o valores estticos implcitos dentro de
su cuerpo.
enum Estado
{
Habilitado, // = 0
Deshabilitado, // = 1
Suspendido,
// = 2
}
enum Temperatura
{
TemperaturaMaxima = 34,
TemperaturaMinima = 5,
TemperaturaMedia = 21,
}

Elementos de C#

if else
La instruccin if permite ejecutar
ciertas instrucciones slo si de da una
determinada condicin.
if (<condicin>) {
<instruccionesIf>
} else {
<instruccionesElse>
}

Elementos de C#

if else
Operadores relacionales:
== (Igual),
!= (No Igual),
> (Mayor),
<(Menor),
>= (Mayor igual),
<=(Menor igual).

Elementos de C#

if else
Operadores Lgicos:
& (AND),
| (OR),
^ (OR exclusiva bit a bit),
! (Negacin),
true (Verdadero),
false (Falso)

Elementos de C#

switch
La instruccin switch permite ejecutar unos u otros
bloques de instrucciones segn el valor de una
cierta expresin.
switch (<expresin>)
{
case <valor1>: <bloque1>
<siguienteAccin>
break;
case <valor2>: <bloque2>
<siguienteAccin>
break;
...
default: <bloqueDefault>
<siguienteAccin>
}

Elementos de C#

switch
Ejemplo
string nombre = txtNombre.text;

switch(nombre)
{
case Jos: t=1;
break;
case Paco: t=2;
break;
default: t=0;
break;
}

Elementos de C#

Espacios de Nombres
(namespace)

Es un espacio donde el desarrollador


puede colocar sus propias definiciones.
namespace Nombre
{
//definiciones
}

Elementos de C#

Espacios de Nombres
(namespace)

El namespace puede contener clases y objetos, los cuales


sern utilizados de una forma mas clara y ordenada. Para
referirse a una clase o objeto dentro de un namespace solo se
coloca el nombre del espacio, el punto y el nombre del objeto.
namespace NombreEspacio
{
class cliente
{
string nombre;
}
}

string nom = NombreEspacio.cliente.nombre;

Elementos de C#

Espacios de Nombres
(namespace)

Una alternativa para referirse a un


espacio de nombre es la de adicionar
la palabra using y el nombre del
espacio
using NombreEspacio;

Elementos de C#

Manejo de excepciones
Las excepciones son el mecanismo
recomendado en la plataforma .NET
para controlar/propagar soluciones
ante un defecto o falla durante la
ejecucin de las aplicaciones

Elementos de C#

Manejo de excepciones
Bsicamente,
son
objetos
derivados
de
la
clase
System.Exception que se generan cuando en tiempo de
ejecucin se produce algn error y que contienen informacin
sobre el mismo.
try {
<instrucciones>
}
catch (<excepcin1>) {
<tratamiento1>
catch (<excepcin2>)
<tratamiento2>
...
}
finally {
<instruccionesFinally>
}

Elementos de C#

Manejo de excepciones
try
{
int c = 0;
int d = 2/c;
}
catch (DivideByZeroException)
{ d=0; }

finally {}

Elementos de C#

Manejo de excepciones
La instruccin throw, nos sirve para informar
una error que consideremos de sea una falta en la
ejecucin de la aplicacin.
throw <objetoExcepcinALanzar>;
try
{
Insertar(objetoLocal);
MessageBox.Show("Los datos han sido grabados
correctamente.");
}
catch (Exception ex)
{
MessageBox.Show("Ha ocurrido un error al guardar
los Datos.");
throw ex;
// return ?
}

Tipos de Clases

Clases, objetos
Una clase es un contenedor de uno o ms datos
(propiedades)
junto
a
las
operaciones
de
comportamiento de dichos datos (funciones).
Las clases son agrupaciones
describen su comportamiento.

de

objetos

que

Elementos de C#

Clases, objetos
En todo momento se trabaja con clases y
objetos definidos.
Las clases representan otro mecanismo para
crear nuevos tipos de datos.
Las
clases,
se
definen
como
los
enumeradores.
C# es un conjunto de objetos que
interaccionan unos con otros a travs de
mtodos.
class <nombreClase>
{
<miembros>
}

Elementos de C#

Clases, objetos
Todas las clases heredan de
System.Object, que es la base de
todos los tipos de datos de C#.
Una clase esta conformada por:
Nombre
Atributos/Propiedades/Miembros o
campos
Mtodos o Servicios

Elementos de C#

Clases, objetos
Nombre
Es un identificador que represente de forma
correcta y funcional los atributos y los mtodos de
una clase
Atributo/Propiedades/Miembros
Es un dato comn que caracteriza a un objeto,
algunas veces un atributo es un tipo de clase
class Libro
{
string Nombre;
string Autor;
unsigned int NumeroPaginas;

Elementos de C#

Clases, objetos
Atributo
Cada uno de estos atributos
contendrn un valor,
Por ejemplo, el Nombre tendr el
nombre de libro, el Autor ser el
nombre del autor que ha escrito el
libro y el NumPaginas contendrn el
nmero de paginas que tiene el libro

Elementos de C#

Clases, objetos
Mtodos o Servicios
Son actividades o servicios que
corresponden una determinada
funcionalidad de un objeto.
En si un mtodo es un conjunto
de instrucciones, si se quiere
referenciar a un mtodo solo
debe de colocarse el nombre
del objeto, un punto y el

Elementos de C#

Clases, objetos
Mtodos o Servicios
Dentro del conjunto de las
instrucciones es valido referirse a los
atributos y obtener o cambiar su valor.
<tipoDevuelto>
<nombreMtodo>
(<parametros>)
{
<instrucciones>
}

Elementos de C#

Clases, objetos
Mtodos o Servicios
El tipo devuelto ser el resultado de las
instrucciones y la manipulacin de los datos
Si no se quiere devolver ningn resultado solo debe
colocarse la palabra void.
Todo mtodo puede devolver un objeto, coleccin,
valor, nulo ?
Si el mtodo devuelve algn objeto es necesario
colocar la palabra return y el resultado o objeto al
final, este debe ser compatible con el tipo devuelto
definido para el mtodo

Elementos de C#

Clases, objetos
Mtodos o Servicios
Los parmetros sern los valores o
objetos que necesitan las instrucciones
para elaborar o construir el resultado
esperado al ejecutar el mtodo, estos
deben cumplir la misma sintaxis de
declaracin de un tipo de dato.

Elementos de C#

Visibilidad de una clase y


sus miembros
La visibilidad de una clase o sus
miembros, como atributos y mtodos,
est en funcin de los modificadores
que se coloquen delante de la palabra
class en el momento de su definicin.
Estos modificadores pueden aplicarse
a los miembros de las clases: mtodos,
propiedades, variables, etc.

Elementos de C#

Visibilidad de una clase y


sus miembros
public. La clase, o el miembro, es
visible en todos los mbitos, no solo en
el que se ha definido. Los miembros
pblicos de una clase son accesibles,
al crear un objeto, desde fuera de la
propia clase.
protected. Este modificador solo es
aplicable a los miembros de una clase,
no a la clase en si. Es decir, un
miembro protegido no es accesible

Elementos de C#

Visibilidad de una clase y


sus miembros
private. Es el mbito ms reducido.
Una clase privada solo puede utilizarse
en el interior del mbito en que se
encuentra
incluida,
ya
sea
un
namespace u otra clase. Los miembros
que
tienen
este
modificador,
igualmente, solo pueden ser usados
desde el interior de la clase donde se
han definido, nunca desde fuera, ni

Elementos de C#

Visibilidad de una clase y


sus miembros
internal. Es simiplar al public. Si bien la
clase o miembro es visible desde fuera de su
mbito inmediato, esta regla solamente se
aplica dentro del ensamblado al que
pertenece. Una clase public puede usarse
desde otros ensamblados, mientras que una
internal no.
protected internal. El resultado es que los
identificadores pueden utilizarse en el
ensamblado en que se han definido, as
como en clases derivadas a pesar de que se

Elementos de C#

Visibilidad de una clase y


sus miembros

La visibilidad de las clases y sus


miembros es algo que debe deducirse
directamente
del
diseo
lgico.
Internamente, estas clases pueden
utilizar otras no visibles desde el
exterior, as como miembros privados
y protegidos.

Elementos de C#
Es una propiedad que permite que las clases sean creados a
partir de otros ya existentes, obteniendo caractersticas
(atributos y mtodos) similares a los ya existentes.

La herencia es una de los pilares fundamentales de la


programacin orientada a objetos, permite definir nuevas clases
a partir de otras ya definidas de modo que si en la definicin de
una clase indicamos que sta deriva de otra, entonces la
primera es hija.
class <nombreHija>:<nombrePadre>
{
<miembrosHija>
}

Elementos de C#
class Vehiculo
{
private string Serie;
// Numero de Serie
public string Modelo;
// Nombre del modelo
public string Fabricante;
// Nombre del
Fabricante
public int NumeroPuertas;
// El Nro. de
puertas del vehiculo
}
private
class Vehiculo
{
private string Serie;
// Numero de Serie
public string Modelo;
// Nombre del modelo
public string Fabricante;
// Nombre del Fabricante
public int NumeroPuertas;
// El Nro. de puertas del vehiculo
}
public class Vehiculo
{
private string Serie;
// Numero de Serie
public string Modelo;
// Nombre del modelo
public string Fabricante;
// Nombre del Fabricante
public int NumeroPuertas;
// El Nro. de puertas del vehiculo
}

Elementos de C#

Herencia
Los miembros definidos en la clase padre se le
aadirn a la clase hija.
La clase padre no necesariamente debe estar en el
mismo lenguaje que la hija. (Novedad)
Se puede realizar una herencia en distintos
lenguajes.
public class ClaseBase
{
public string saludos()
{
Return Hola Sucre;
}
}

Elementos de C#

Herencia
public class ClaseDerivada :
ClaseBase
{
public int Cuadrado(int N)
{
Return N*N;
}
}

Elementos de C#
OBJETO
Un objeto de una determinada clase se denomina
unainstanciade la clase. La clase que contiene (y se utiliz
para crear) esa instancia se puede considerar como del tipo de
ese objeto, por ejemplo, una instancia del objeto de la clase
"Personas" sera del tipo "Personas".

Vehiculo miVehiculo;
miVehiculo = new Vehiculo();
Vehiculo miVehiculo = new
Vehiculo();
var miVehiculo = new Vehiculo();

Elementos de C#
ACCESO A LAS PROPIEDADES DE UNA CLASE
Cada objeto de una Clase Vehiculo, tiene un conjunto de
propiedades/miembros.
El acceso a ellos se los realizara utilizando el operador .
NombreDeLaInstancia.PropiedadClase;

Vehiculo miVehiculo = new Vehiculo();


miVehiculo.Serie = ABC4567GFD;
miVehiculo.Modelo = RAV4;
miVehiculo.NumeroPuertas = 4;
txtModelo.text = miVehiculo.Serie;
Correcto/Incorrecto ?
txtModelo.text = miVehiculo.Modelo;

//
//

Elementos de C#
public class Motor
{
public int CaballosFuerza;
public double Cilindrada;
}
public class Vehiculo
{
private string Serie;
public string Modelo;
public string Fabricante;
public int NumeroPuertas;
public Motor motor;
}

// Caballos de Fuerza del Motor


// Cilindrada

// Numero de Serie
// Nombre del modelo
// Nombre del Fabricante
// El Nro. de puertas del vehiculo
// Clase Motor

// primero creamos el Motor


Motor MotorGrande = new Motor();
MotorGrande. CaballosFuerza = 230;
MotorGrande. Cilindrada = 1600.0;
// creamos el vehiculo
Vehiculo miVehiculo = new Vehiculo();
miVehiculo.Modelo = Cherokee Sport;
miVehiculo.Fabricante = Toyota;
miVehiculo.NumeroPuertas = 2;
// Anjuntamos el objeto motor al vehiculo
miVehiculo.motor = MotorGrande;

Elementos de C#
public class Vehiculo
{
private const string Serie1;
private
}

readonly string Serie2;

// Numero de Serie
// Numero de Serie

Elementos de C#
XML
XML es el acrnimo de eXtensibe Markup Languaje. XML es un
formato estndar del World Wide Web Consortium (W3C)
diseado a partir de SGML para representar datos estructurados
de forma jerrquica (en un rbol). Los documentos XML incluyen
una serie de etiquetas que permiten crear documentos
autocontenidos, en los que los datos van siempre acompaados
de sus metadatos correspondientes.
XML no es, como su nombre puede sugerir, un lenguaje de
marcado. XML es un metalenguaje que permite definir lenguajes
de marcado adecuados a usos especficos. Aunque a primera
vista un documento XML puede parecer similar a HTML hay una
diferencia fundamental: un documento XML contiene datos que
se autodefinen, exclusivamente. Un documento HTML contiene
datos mal definidos, mezclados con elementos de formato. En
XML se separa el contenido de la presentacin de forma total.

Elementos de C#
XML

Elementos de C#
XML
XML, al que algunos consideran el Esperanto de los
sistemas de informacin, se emplea principalmente
para representar documentos (texto con etiquetas que
identifican porciones del documento) y conjuntos de
datos (estructuras de datos jerrquicas, para ser ms
precisos).
Entre sus ventajas se encuentra su aceptacin casi
universal, su legibilidad y su carcter autocontenido (a
diferencia de los formatos binarios propios de cada
aplicacin), si bien el tamao de los documentos XML
es mayor que el de sus equivalentes binarios y su
procesamiento requiere ms recursos, por lo que no
resulta adecuado en aplicaciones en las que la

Elementos de C#
XML
En resumen, XML permite representar datos de forma
homognea en entornos heterogneos, lo que facilita la
interoperabilidad entre distintos sistemas.
Formatos basadas en este formato estndar (SOAP, ebXML,
BizTalk, WebSphere, etc.).
EJEMPLO
Representacin de datos en formato ASCII :
"PO-1234","CUST001","X9876","5","14.98
Representacin de los mismos datos en XML:
<ORDEN_PEDIDO>
<COD_PEDIDO> PO-1234 </COD_PEDIDO>
<COD_CLIENTE> CUST001 </COD_CLIENTE>
<COD_ARTICULO> X9876 </COD_ARTICULO >

Elementos de C#
XML
XML es sensible a las maysculas.
ELEMENTOS
Los elementos XML estn delimitados por etiquetas de comienzo
y fin entre las que se escribe su contenido:
<TAG_NAME> ... </TAG_NAME>

Elementos de C#
XML
Los distintos elementos de un documento XML pueden incluir
atributos que describen al elemento en cuestin (tipo de datos,
dominio de valores permitidos, etc.). Dichos atributos han de
aparecer en la etiqueta de comienzo del elemento y el valor del
atributo debe especificarse entre comillas dobles (") o simples ('):
<TAG_NAME ATTRIBUTE="value"> ... </TAG_NAME>
Instrucciones de procesamiento
En su prlogo, un documento XML puede incluir una serie de
instrucciones de
procesamiento, delimitadas por: <? ... ?>, en las que se puede
indicar el sistema de codificacin empleado (Unicode por
defecto), especificar la hoja de estilo XSLT que se emplear para
visualizar el documento, declarar espacios de nombres y definir el
esquema del documento, etc. Solo se requiere, obligatoriamente,
especificar que se trata de un documento

Elementos de C#
XML
<?xml version="1.0"?>
Un ejemplo ms detallado en el que se especifica la hoja de estilo que se aplica al
documento para su presentacin es el siguiente:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="template.xsl"?>
<ROOT>
<ELEMENT1> <SUBELEMENT1 /> <SUBELEMENT2 /> </ELEMENT1>
<ELEMENT2> </ELEMENT2>
<ELEMENT3 type="string"> </ELEMENT3>
<ELEMENT4 type="integer" value="9.3"> </ELEMENT4>
</ROOT>
ENTIDADES
Las entidades en XML proporcionan un mecanismo de substitucin textual:
Entidad
&lt;
<
&gt;
&amp;

Sustitucin
>
&

Elementos de C#
XML
Comentarios y secciones CDATA
Un documento XML tambin puede incluir comentarios,
delimitados por las construcciones <!-- y --> y secciones CDATA
que sirven para incluir cualquier cosa (contenido textual) en el
documento XML, delimitadas por las construcciones <!
[CDATA[ y ]]> (como <PRE> ... </PRE> en HTML).
<!-- Este codigo
CDATA -->
<!-- Esto es un comentario -->
<ejemplo>
<!-- Este codigo XML no usa CDATA -->
<![CDATA[

<ejemplo>
&lt;HTML>
<HTML>
&lt;HEAD>
<HEAD>
&lt;TITULO>Rock &amp; Roll&lt;/TITULO>
<TITULO>Rock
Roll</TITULO>
&lt;/HEAD>
</HEAD>
&lt;/HTML>
</HTML>
</ejemplo>

XML

usa

&

Elementos de C#
XML
DOCUMENTOS XML BIEN FORMADOS
Un documento bien formado en XML tiene que reunir las
siguientes cualidades:

Debe haber un y slo un elemento raz.


Los subelementos deben estar adecuadamente
anidados. Esto es, un elemento ha de terminar con
la misma etiqueta con la que comenz.
Los atributos son opcionales (y se definen en un
esquema que tambin es opcional).
Los valores de los atributos han de estar
delimitados por comillas dobles (") o comillas
simples (').

Las instrucciones de procesamiento son

Elementos de C#
XML
Teniendo en cuenta las estrictas reglas anteriores, el siguiente documento XML no
es vlido porque sus elementos no estn anidados correctamente:
<?xml Version="1.0" ?>
<PARENT>
<CHILD1> Child 1 </CHILD1>
<CHILD2> <CHILD3> Child 3 or 2? </CHILD2> </CHILD3>
</PARENT>
El siguiente documento XML tampoco es vlido
porque tiene dos races:
<?xml Version="1.0" ?>
<PARENT>
<CHILD1> Elemento CHILD1 </CHILD1>
</PARENT>
<PARENT>
<CHILD1> Otro elemento CHILD1 </CHILD1>
</PARENT>

El siguiente documento XML es


vlido:
<?xml Version="1.0" ?>
<PARENT>
<CHILD1>Elemento
CHILD1</CHILD1>
<CHILD2/>
<CHILD3> </CHILD3>
</PARENT>

Elementos de C#

XML en Visual Studio .NET

Elementos de C#
REFLECTION
Las clases del espacio de nombres System.Reflection, junto con
System.Type, permiten obtener informacin acerca de los
ensamblados cargados y los tipos definidos en los mismos, como
clases, interfaces y tipos de valor.
Se puede utilizar la reflexin para crear instancias de tipo en
tiempo de ejecucin, as como para invocarlas y obtener acceso a
las mismas.
El cargador de Common Language Runtime administra dominios
de aplicacin, que constituyen lmites definidos de los objetos
que tienen el mismo mbito de aplicacin.
Dicha administracin incluye la carga de cada ensamblado en el
dominio de aplicacin apropiado y el control del diseo de
memoria correspondiente a la jerarqua de tipos de cada
ensamblado.

Elementos de C#
REFLECTION
La reflexin resulta til en estas situaciones:
Cuando es necesario obtener acceso a atributos en los metadatos
del programa. Para obtener ms informacin, vea Recuperar
informacin almacenada en atributos.
Para examinar e instanciar tipos en un ensamblado.
Para compilar nuevos tipos en tiempo de ejecucin. Utilice clases
en System.Reflection.Emit.
Para realizar enlaces en tiempo de ejecucin, con acceso a los
mtodos en tipos creados en tiempo de ejecucin.

Elementos de C#
REFLECTION
Los ensamblados contienen mdulos, los mdulos contienen tipos
y stos ltimos contienen miembros. La reflexin proporciona
objetos que encapsulan ensamblados, mdulos y tipos.
Se utiliza la reflexin para crear dinmicamente una instancia de
un tipo, enlazar el tipo a un objeto existente u obtener el tipo a
partir de un objeto existente. A continuacin, se puede invocar a
los mtodos del tipo u obtener acceso a los campos y
propiedades correspondientes. Normalmente, se usa la reflexin
en los siguientes casos:
Assembly para definir y cargar ensamblados, cargar los mdulos
que aparecen en el manifiesto del ensamblado, buscar un tipo a
partir de este ensamblado y crear una instancia del mismo.
Module para detectar informacin, como el ensamblado que
contiene el mdulo y las clases del mdulo. Tambin se pueden
obtener todos los mtodos globales u otros mtodos especficos

Elementos de C#
REFLECTION
ConstructorInfo para detectar informacin, como el nombre, los
parmetros, los modificadores de acceso (por ejemplo, public o
private) y los detalles de implementacin (por ejemplo, abstract o
virtual) de un constructor. Utilice el mtodo GetConstructors o
GetConstructor de un objeto Type para invocar un constructor
especfico.
MethodInfo para detectar informacin, como el nombre, el tipo
devuelto, los parmetros, los modificadores de acceso (por
ejemplo, public o private) y los detalles de implementacin (por
ejemplo, abstract o virtual) de un mtodo. Utilice el mtodo
GetMethods o GetMethod de un objeto Type para invocar un
mtodo especfico.
FieldInfo para detectar informacin, como el nombre, los
modificadores de acceso (por ejemplo, public o private) y los
detalles de implementacin (por ejemplo, static) de un campo, as
como para obtener o establecer los valores del campo.

Elementos de C#
REFLECTION
EventInfo para detectar informacin, como el nombre, el tipo de
datos del controlador de eventos, los atributos personalizados, el
tipo declarativo y el tipo reflejado de un evento, as como para
agregar o quitar controladores de eventos.
PropertyInfo para detectar informacin, como el nombre, el tipo
de datos, el tipo declarativo, el tipo reflejado y el estado de slo
lectura o de escritura de una propiedad, as como para obtener o
establecer los valores de propiedad.
ParameterInfo para detectar informacin, como el nombre de
un parmetro, el tipo de datos, si un parmetro es un parmetro
de entrada o salida, as como la posicin del parmetro en una
firma del mtodo.
CustomAttributeData
para detectar informacin sobre
atributos personalizados cuando se trabaja en el contexto de solo
reflexin del dominio de aplicacin. CustomAttributeData permite

Elementos de C#
REFLECTION
Las clases del espacio de nombres System.Reflection.Emit
proporcionan una forma especializada de reflexin que permite
compilar tipos en tiempo de ejecucin.
La reflexin puede utilizarse asimismo para crear aplicaciones
denominadas exploradores de tipos, que permiten a los usuarios
seleccionar tipos y, a continuacin, ver la informacin
correspondiente.
La reflexin tiene tambin otras aplicaciones. Los compiladores
de lenguajes como JScript utilizan la reflexin para generar tablas
de
smbolos.
Las
clases
del
espacio
de
nombres
System.Runtime.Serialization utilizan la reflexin para
obtener acceso a los datos y determinar los campos que se van a
mantener.
Las
clases
del
espacio
de
nombres
System.Runtime.Remoting utilizan la reflexin indirectamente
a travs de la serializacin.

Elementos de C#
REFLECTION
Ejemplo para Obtener el Tipo de Dato
// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);
El resultado es:
System.Int32
Ejemplo para obtener el nombre completo
// Using Reflection to get information from an Assembly:
System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);
El resultado es:

Elementos de C#
DISTRIBUTED
Comunicacin entre procesos
Cuando
en
un
sistema
tenemos
distintos
procesos
independientes
ejecutndose,
necesitamos
disponer
de
mecanismos que hagan posible la comunicacin entre ellos. Se
pueden utilizar distintos mecanismos de comunicacin entre
procesos [IPC: InterProcess Communication]:
El portapapeles de Windows [Windows Clipboard], que, como
almacn central de datos, nos permite que distintas
aplicaciones intercambien datos "copiando y pegando".
DDE [Dynamic Data Exchange], un protocolo que permite a
las aplicaciones intercambiar datos de una forma ms general
que el portapapeles.
OLE [Object Linking and Embedding], basado en COM, nos
permite manipular documentos compuestos de datos que

Elementos de C#
DISTRIBUTED

ActiveX es otra tecnologa basada en COM que permite la


comunicacin entre componentes independientemente del
lenguaje en el que estn implementados.

COM [Component Object Model] establece un estndar binario


mediante el cual se puede acceder a los servicios de un
componente utilizando uno o varios conjuntos de funciones
relacionadas (interfaces).
DCOM [Distributed COM] extiende el modelo de programacin
COM para que distintos componentes puedan comunicarse a
travs de una red.
.NET Remoting, el mecanismo que sustituye a DCOM en la
plataforma .NET.
NetBIOS [Network Basic Input/Output System], un protocolo
para redes de rea local de PCs creado por IBM en la poca del

Elementos de C#
DISTRIBUTED

Sockets, para los cuales Windows incluye un API ms


sofisticado que el API tradicional que proviene del BSD UNIX
[Berkeley Software Distribution], el API que se ha utilizado
habitualmente para transmitir datos utilizando la familia de
protocolos TCP/IP.

Pipes annimos [Anonymous pipes]: Permiten redireccionar la


entrada o salida estndar de un proceso (utilizando | en la lnea
de comandos, por ejemplo).
Pipes con nombre [Named pipes], similares a las colas FIFO de
POSIX [Portable Operating System Interface for Computer
Environments. IEEE 1003.1, 1988] pero no compatibles con
ellas, permiten a dos procesos intercambiar mensajes utilizando
una seccin de memoria compartida [pipe].
Mailslots, en Win32 y OS/2: Proporcionan un mecanismo de
comunicacin entre procesos unidireccional y no fiable que

Elementos de C#
DISTRIBUTED
Ficheros mapeados en memoria: Permiten que dos procesos de
una misma mquina compartan un fichero que pueden
manipular como si fuese un bloque de memoria en su espacio
de direcciones, si bien para acceder a l correctamente debern
utilizar algn mecanismo de exclusin mutua.
Semforos, eventos, Mutex y otras primitivas de sincronizacin
que permiten comunicar la ocurrencia de alguna accin o de
algn cambio de estado.

RPC [Remote Procedure Call]: Llamadas a procedimientos


remotos. Permiten realizar la comunicacin entre procesos
como si se tratase de llamadas a funciones. El RPC de Windows
cumple con el estndar OSF DCE [Open Software Foundation
Distributed Computing Environment], lo que permite la
comunicacin entre procesos que se ejecuten en sistemas
operativos diferentes a Windows.

Elementos de C#
DISTRIBUTED

CORBA [Common Object Request Broker Architecture],


estndar del OMG [Object Management Group] para el
desarrollo de sistemas distribuidos.

MPI [Message Passing Interface]: Estndar de paso de


mensajes muy utilizado en clusters y supercomputadores.

PVM [Parallel Virtual Machine]: Otro estndar de paso de


mensajes utilizado en multiprocesadores y multicomputadores.

Servicios web [Web services]: Conjunto de estndares que


facilitan el paso de mensajes en entornos heterogneos.

Msc. Ing. Remberto Gonzales C.


rembertus@gmail.com
rembert@usfx.edu.bo

También podría gustarte