0% encontró este documento útil (0 votos)
246 vistas15 páginas

Topicos Avanzados en Programacion

El documento introduce conceptos básicos de .NET como su arquitectura, características y tipos de datos. Explica que .NET es una plataforma de desarrollo que incluye un entorno de ejecución, bibliotecas, lenguajes de programación y herramientas. Describe los tipos de valor y referencia, así como la memoria stack y heap donde se almacenan. Finalmente, presenta los temas de serialización XML y creación de componentes y librerías dinámicas que se cubrirán en las siguientes secciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
246 vistas15 páginas

Topicos Avanzados en Programacion

El documento introduce conceptos básicos de .NET como su arquitectura, características y tipos de datos. Explica que .NET es una plataforma de desarrollo que incluye un entorno de ejecución, bibliotecas, lenguajes de programación y herramientas. Describe los tipos de valor y referencia, así como la memoria stack y heap donde se almacenan. Finalmente, presenta los temas de serialización XML y creación de componentes y librerías dinámicas que se cubrirán en las siguientes secciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15

Tpicos Avanzados de Programacin

2014



1

Contenido
Introduccin a Microsoft .NET ............................................................................................................ 1
Qu es .NET? ...................................................................................................................................... 1
Caractersticas de .Net ...................................................................................................................... 2
Qu es .NET Framework? ............................................................................................................... 2
Tipos por valor ..................................................................................................................................... 2
Tipos de referencia ............................................................................................................................. 3
Memoria Stack y Heap...................................................................................................................... 4
Thread stack ..................................................................................................................................... 4
Managed Heap ............................................................................................................................... 5
Ejemplo: ............................................................................................................................................. 6
Ejemplo 1 .......................................................................................................................................... 6
Ejercicio 2 .......................................................................................................................................... 7
Serializacion XML (Xtended Markup Language) ..................................................................... 8
Atributos de xml ............................................................................................................................. 9
Ejercicio 3 .......................................................................................................................................... 9
Ejercicio 4 .......................................................................................................................................... 9
Unidad III. Creacin de componentes y libreras dinmicas.................................................. 10

Introduccin a Microsoft .NET
Qu es .NET?
Plataforma de desarrollo compuesta por:
Entorno de ejecucin (Runtime)
Bibliotecas de funcionalidad (Class Library)
Lenguajes de programacin
Tpicos Avanzados de Programacin
2014



2
Compiladores (Convierte)
Herramientas de desarrollo (IDE & Tools)
Guas de arquitectura
Caractersticas de .Net
Plataforma de ejecucin intermedia
Orientada a objetos
Multilenguaje
Plataforma empresaria de misin critica
Modelo de programacin nico de todo tipo de aplicaciones y dispositivos de
hardware
Se integra fcilmente a las plataformas de Microsoft y adems en otras
plataformas
Qu es .NET Framework?

Lenguaje de alto nivel msil - just in time lenguaje nativo
msil cil
cls establece las normas
Tipos por valor
La mayor parte de los lenguajes de programacin proporcionan tipos de datos
integrados, como enteros y nmeros de punto flotante, que se copian cuando se
pasan como argumentos (es decir, los pasa el valor). En .NET Framework se
denominan tipos de valor. El motor en tiempo de ejecucin admite dos clases de
tipos de valor:
Tipos de valor integrados
.NET Framework define tipos de valor integrados, como System.Int32 y
System.Boolean, que corresponden y son idnticos a los tipos de datos
primitivos utilizados por los lenguajes de programacin.
Tipos de valor definidos por el usuario
El lenguaje proporcionar formas de definir sus propios tipos de valor, que se
derivan de System.ValueType o System.Enum. Si desea definir un tipo que
represente un valor pequeo, como un nmero complejo (mediante dos
Tpicos Avanzados de Programacin
2014



3
nmeros de punto flotante) puede decidir definirlo como un tipo de valor,
porque el tipo de valor se puede pasar eficazmente por valor. Si el tipo que va
a definir se pasara ms eficazmente por referencia, entonces debe definirlo
como clase.
Los tipos de valor se guardan en stack, con la misma eficacia que los tipos primitivos,
pero en ellos se puede llamar a mtodos, incluidos los mtodos virtuales definidos
en las clases System.Object y System.ValueType, adems de todos los mtodos
definidos en el propio tipo de valor. Se pueden crear instancias de los tipos de valor,
pasarlos como parmetros, guardarlos como variables locales o guardarlos en un
campo de otro tipo de valor u objeto. Los tipos de valor no tienen la sobrecarga
asociada al almacenamiento de una instancia de una clase y no requieren
constructores.
Para cada tipo de valor, el motor en tiempo de ejecucin proporciona un tipo al que
se ha aplicado la conversin boxing, que es una clase que tiene el mismo estado y
comportamiento que el tipo de valor. Algunos lenguajes requieren el uso de sintaxis
especial cuando se necesita el tipo al que se haya aplicado la conversin boxing,
otros utilizan el tipo automticamente cuando es necesario. Cuando se define un
tipo de valor, se definen los dos tipos: al que se ha aplicado la conversin boxing y al
que se ha aplicado la conversin unboxing.
Los tipos de valor pueden tener campos, propiedades y eventos. Tambin pueden
tener mtodos estticos y no estticos. Cuando se les aplica la conversin boxing,
heredan los mtodos virtuales de System.ValueType y pueden implementar varias
interfaces o ninguna.
Los tipos de valor estn sellados, lo que quiere decir que de ellos no se puede
derivar ningn otro tipo. Sin embargo, se pueden definir mtodos virtuales
directamente en el tipo de valor, a los que se puede llamar tanto en la forma del tipo
al que se ha aplicado la conversin boxing como en la forma al que se ha aplicado la
conversin unboxing. Aunque de un tipo de valor no se puede derivar otro tipo, en
un tipo de valor se pueden definir mtodos virtuales cuando se utiliza un lenguaje en
el que es ms cmodo trabajar con mtodos virtuales que con mtodos no virtuales
o estticos.
Tipos de referencia
Un tipo de referencia contiene un puntero a otra ubicacin de memoria (heap) que
almacena los datos. Los tipos de referencia incluyen lo siguiente:
Tpicos Avanzados de Programacin
2014



4
String
Todas las matrices, incluso si sus elementos son tipos de valor
Los tipos de clase, como Form
Delegados
Una clase es un tipo de referencia. Por este motivo, los tipos de referencia como
Object y String son admitidos por clases de .NET Framework. Observe que cada
matriz es un tipo de referencia, aunque sus miembros sean tipos de valor.
Como un tipo de referencia representa una clase subyacente de.NET Framework,
debe utilizar la palabra clave de New (Operador, Visual Basic) cuando se inicializa. La
instruccin siguiente inicializa una matriz.


Memoria Stack y Heap


La memoria de la que hacen uso nuestras aplicaciones administradas se divide en
dos partes principalmente:
Thread stack
Espacio de memoria asociado al hilo de ejecucin.
Es la pila donde va progresando nuestro cdigo.
Aqu se van "apilando" las llamadas a funciones y las variables locales y
parmetros, de forma que el puntero de ejecucin va cargando, ejecutando y
liberando mtodos con sus respectivas variables.
No se pueden compartir ese espacio entre varios hilos, esta nicamente ligado
un hilo de ejecucin.
Como deca es el espacio de memoria asociado al hilo de ejecucin, por lo
que es bastante rpido.
Memoria
Estatica Stack
Dinamica Heap
Dim totals() As Single = New Single(8)
{}
Tpicos Avanzados de Programacin
2014



5
Est limitado a un mximo de 1MByte por hilo.
Si se intenta superar el lmite de memoria se obtiene un
StackOverflowException.
Aqu se almacenan tipos de los cuales se conoce su tamao antes de su
inicializacin (tipos por valor) y referencias a objetos del managed heap, que
contienen la direccin de memoria del objeto all un nulo si no referencian
nada.
El proceso de liberar memoria de este espacio se realiza de forma
determinstica por el puntero de ejecucin.
Managed Heap
Espacio de memoria asociado al proceso.
Compartido entre los hilos que lo forman (si hubiese varios).
Accedido mediante punteros (direccin/indireccin) lo que lo hace ms lento
que el thread stack, pero permite ser accedido desde otros hilos.
No tiene una limitacin en su tamao que no sea la del hardware.
Normalmente almacena tipos por referencia y tipos por valor cuando tienen
una relacin de composicin con un tipo por referencia.
Si se superar el mximo de memoria disponible se obtiene un
OutOfMemoryException.
El proceso de liberar memoria de este espacio se realiza de forma no
determinstica por el recolector de basura (GarbageCollector).
Como se puede ver, nuestra ejecucin reside en el thread stack (ya que MSIL es
stack based), el puntero de ejecucin va cargando lo que necesita para la ejecucin y
liberndolo en cuanto acaba. El problema viene cuando utilizamos tipos de los que
no podemos saber la memoria que ocupan hasta despus de su inicializacin,
entonces dependemos de otra zona de memoria "ilimitada" y de acceso mediante
punteros llamada managed heap donde instanciamos dicho tipo, de forma que
nuestro puntero de ejecucin tiene una referencia en el thread stack apuntando a
esa instancia pero no la instancia en s, lo que hace ms lento el acceso al tener que
recurrir a la indireccin de la referencia.
Cuando hablamos de una referencia, estamos hablando de un puntero seguro y
tipado, de forma que no puede apuntar a una direccin de memoria cualquiera, solo
a la ubicacin en memoria de una instancia de un tipo dado ser nulo (null).
El managed heap, al contrario del thread stack, puede ser compartido por varios
hilos, lo cual no significa que pueda ser libremente compartido. Siempre que se vaya
Tpicos Avanzados de Programacin
2014



6
a trabajar con una instancia susceptible de ser accedida por mltiples hilos... es
necesario sincronizar el acceso para evitar condiciones de anticipacin y/ dejarla en
un estado inconsistente. Adems, la memoria de este espacio no puede ser liberada
de forma determinista, debe delegarse en un proceso en segundo plano llamado
recolector de basura (GarbageCollector) encargado de liberar la memoria usada por
instancias que no son referenciadas desde ningn thread stack.
Cuando los datos estn almacenados en un stack se almacenan en forma de pila
siguiendo la estructura de ltimas entradas y ltimas salidas.
En la parte del stack se guarda la referencia a direccin en el heap.

Ejemplo:
public void Metodo1( )
{
int a = 5;
int b=6;
Clase1 obj = new Clase1 ( );
}
Stack Heap




La memoria en el heap ser liberada hasta cuando entre el garbage collection.
Ejemplo 1
public void Metodo1( )
{
int i = 10;
a = 5
obj (ref)
b = 6
Obj
Tpicos Avanzados de Programacin
2014



7
int j=i;
}
Stack Heap






Si se cambia i por otro valor la variable j queda con el valor antes declarado en i.
Ejemplo 3
public void Metodo1 ( )
{
Clase1 obj = new Clase1 ( );
Clase1 obj2 = obj1;
}
Stack Heap



Ejercicio 2
Crear un programa que permita administrar las cuentas bancarias de una sucursal.
Por cada cuenta se almacenar su nmero (no excede de 8 dgitos), nombre del
cliente, saldo, el estado de la cuenta (abierta o cerrada) y un historial que registre los
movimientos realizados con la cuenta (apertura, clausura, retiro, deposito o consulta).
int j = i
i = 10
obj1 (ref)
obj2 (ref)
Obj
Tpicos Avanzados de Programacin
2014



8
La apertura de una cuenta se realiza con un mnimo de $1000 y las cuentas pueden
ser consultadas, cerradas o canceladas y tambin se les puede realizar depsitos y
retiros.
En el historial de la cuenta se registrar la fecha del movimiento, su tipo y el monto.
Guardar una lista con los nmeros de cuenta y cada cuenta con su informacin.









//Cada que se
cree una
nueva cuenta
se lleva todos
los datos.


Serializacion XML (Xtended Markup Language)
//lenguaje de marcado xml
Serializa en una secuencia XML que se ajusta a un documento especfico del lenguaje
XSD (XML Schema Definition) las propiedades y los campos publico de un objeto o
los parmetros y valores devueltos de los mtodos.
Historial
+ FechaMov: DateTime
+ TipoMov: Enum Movimiento
+ Monto: Decimal

NumeroCuenta
+ ListaNumsCuentas: List<uint>
+ Guardar( )
+ Cargar( )
+ AgregarCuenta( uint numero)
Cuenta
+ NumeroCuenta: uint
+ NombreCuenta: string
+ Saldo: decimal
- estado: bool
+ Estado: string
+ ListaHistorial: List<Historial>
+ Cuenta( uint num, string nom, decimal monto)//constructor
+ Depositar( decimal monto)
+ Retirar( decimal monto)
+ Consultar( ): decimal
+ Abrir( )
+ Guardar( )
+ Cerrar( )
Tpicos Avanzados de Programacin
2014



9
Atributos de xml
XmlArrayAttribute.- Serializa el miembro asociado como array de elementos
xml.
XmlArrayItemAttribute.- Serializa el miembro asociado como elemento del
array.
XmlAttributeAttribute.- Serializa el miembro asociado como atributo xml del
objeto serializado.
XmlElement.- Serializa el miembro asociado como elemento xml del objeto
serializado. Solo miembros publicos
XmlIgnore.- Serializa el miembro asociado no ser serializado
Ejercicio 3
Pendientes
Ejercicio 4
Crear un programa que permita calcular la nomina de los empleados de una
empresa.
De los empleados se capturar su clave, su nombre, salario diario y das trabajados.
Existe un tipo de empleados denominado vendedor de quien se capturar adems
de los datos anteriores el monto de sus ventas y el porcentaje de comisiones.
El programa deber permitir agregar y eliminar empleados.








Empleado
+ Clave: string
+ Nombre: string
+ DiasTrabajados: byte
+ PagoDiario: decimla
+ Sueldo: decimal
Vendedor
+ Comision: double
+ MontoVentas: decimal
+ Sueldo: decimla

Nomina
+ ListaEmpleados: List<Empleado>
Tpicos Avanzados de Programacin
2014



10
Al individualizar se le llama atributo.
Clave seria el atributo principal la llave
primaria
y los elementos serian nombre, pago, etc
ignore. campo o propiedad que no se quiere serializar.
Unidad III. Creacin de componentes y libreras
dinmicas
Un componente es una clase que implementa la interfaz System.
ComponentModel.IComponent o se deriva directa o indirectamente de una clase que
implementa al IComponent. En programacin, el termino componente se utiliza para
objetos que se pueden volver a utilizar y que pueden interactuar con otros objetos.
Ejemplo de contenedor: grupbox, panel, etc.
Control
Es un componente que proporciona o habilita funciones de la interfaz de usuario.
.Net Framework dispone de dos clases base para controles. Una para controles de
formulario de Windows Form y otra para controles de servidor de ASP.Net

Ejercicio 5. Galera de imgenes





Recursividad
En la vida hay muchos conceptos que se utilizan a s mismos para explicarse. Una
rama de un rbol a su vez tiene ramas, que a su vez puede tener ramas y as
sucesivamente hasta que aparecen ramas que solo tienen hojas. Al igual que la
+ Agregar ()
+ Eliminar()
+ Cargar()
+ Guardar()
GaleriaImagenes
+ Imagenes: List<Image>
+ AgregarImagenes(ruta: string)
+ ImagenAgregada()
Tpicos Avanzados de Programacin
2014



11
mayora de los lenguajes de programacin, C# permite definir mtodos recursivos. O
sea, mtodos que se llaman directa o indirectamente a s mismos.
Es una tcnica de programacin que nos permite que un bloque de instrucciones se
ejecute n veces.
En C# los mtodos pueden llamarse a s mismos. Si dentro de un mtodo existe la
llamada a s mismo decimos que el mtodo es recursivo.
Cuando un mtodo se llama a s mismo, se asigna espacio en la pila para las nuevas
variables locales y parmetros.
Al volver de una llamada recursiva, se recuperan de la pila las variables locales y los
parmetros antiguos y la ejecucin se reanuda en el punto de la llamada al mtodo.
Ejercicio 6.Biblioteca
botn salir
public partial class BotonSalir : Button //Indicar que hereda de button para que tenga
todas las caracteristicas.
{
public BotonSalir()
{
InitializeComponent();
}
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
this.FindForm().Close();//metodo para encontrar el formulario donde esta
el boton
}
}

botn limpiar
protected override void OnClick(EventArgs e)
{
Form f = this.FindForm();
Limpiar(f);
//foreach(Control c in this.FindForm().Controls) //recorrer los controles
del formulario
//{
// if (c is TextBox)
// {
// ((TextBox)c).Clear();
// }
// else if(c is ComboBox)
// {
// ((ComboBox)c).SelectedIndex = -1;
// }
// else if(c is NumericUpDown)
// {
// ((NumericUpDown)c).ResetText();
Tpicos Avanzados de Programacin
2014



12
// }
//}
}

private void Limpiar(Control control)
{
foreach (Control c in control.Controls)
{
if (c is GroupBox || c is Panel)
{
Limpiar(c);
}
if (c is TextBox)
{
((TextBox)c).Clear();
}
else if (c is ComboBox)
{
((ComboBox)c).SelectedIndex = -1;
}
else if (c is NumericUpDown)
{
((NumericUpDown)c).ResetText();
}
}
}

Ejercicio 7.
Crear un botn para confirmar una accin.
public partial class BotonConfirmar : Button
{
public BotonConfirmar()
{
InitializeComponent();
}
protected override void OnClick(EventArgs e)
{
//this.FindForm();
if (MessageBox.Show("Esta seguro que desea confirmar?", "Advertencia",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
base.OnClick(e); //lo que se programara en el boton directamente
}
}
}
en el botn
private void botonConfirmar1_Click(object sender, EventArgs e)
{
MessageBox.Show("Confirmando......99% da click en OK para
continuar","Cargando",MessageBoxButtons.OK,MessageBoxIcon.Warning);
this.Close();
}

Tpicos Avanzados de Programacin
2014



13
Crear un text box que acepte nicamente nmeros
public partial class TextBoxNumerico : TextBox
{
public TextBoxNumerico()
{
InitializeComponent();
}
protected override void OnKeyDown(KeyEventArgs e)
{
if ((e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) || (e.KeyCode >=
Keys.NumPad0 && e.KeyCode <= Keys.NumPad9) || (e.KeyCode == Keys.Back) || (e.KeyCode
== Keys.Right && e.KeyCode == Keys.Left))
{
base.OnKeyDown(e);
}
else
{
e.SuppressKeyPress = true; // no escribe la letra si no cumple la
condicion
}
}
}

Reloj
public partial class Reloj : UserControl
{
public Reloj()
{
InitializeComponent();
}

private void Reloj_Load(object sender, EventArgs e)
{
if(!this.DesignMode) // si no esta en modo dise;o
{
lblreloj.Text = DateTime.Now.ToLongTimeString();//trae el tiempo de la
maquina completo en hh,mm,ss
timer1.Start();
}

}

private void timer1_Tick(object sender, EventArgs e)
{
lblreloj.Text = DateTime.Now.ToLongTimeString();//cada segundo se
actualiza
}

}

SubString
Sintaxis
datoString.SubString(inicia,elemento);
Tpicos Avanzados de Programacin
2014



14
Ejercicio 7. Marquesina
Ejemplo 1.
string cadena = ABCDEFGHIJ;
string subcadena1 = cadena.Substring(cadena.lenght-1,1)
string subcadena2 = cadena.Substring(0,cadena.lenght-1)
cadena = subcadena2+subcadena1;

Ejemplo 2.
string cadena = ABCDEFGHIJ;
string subcadena1 = cadena.Substring(1,cadena.lenght-1)
string subcadena2 = cadena.Substring(0,1)
cadena = subcadena1+subcadena2;

Marquesina
public partial class c_marquesina : UserControl
{
public c_marquesina()
{
InitializeComponent();
}
private string texto;
public string Texto
{
get { return texto; }
set
{
texto = value;
lbltexto.Text = texto;
}
}
private bool derecha;

public bool Derecha
{
get { return derecha; }
set { derecha = value; }
}
public int Velocidad
{
set { timer1.Interval = value; }
Tpicos Avanzados de Programacin
2014



15
get { return timer1.Interval; }
}

private void timer1_Tick(object sender, EventArgs e)
{
if (!derecha)
{
lbltexto.Text = lbltexto.Text.Substring(1, lbltexto.Text.Length - 1) +
lbltexto.Text.Substring(0, 1);
}
else
{
lbltexto.Text = lbltexto.Text.Substring(lbltexto.Text.Length - 1, 1) +
lbltexto.Text.Substring(0, lbltexto.Text.Length - 1);
}
}
public void Iniciar()
{
timer1.Start();
}
}

formulario
private void btniniciar_Click(object sender, EventArgs e)
{
c_marquesina1.Texto = txttexto.Text;
c_marquesina1.Velocidad = trackBar1.Value;
c_marquesina1.Derecha = chcderecha.Checked;
c_marquesina1.Iniciar();
}

private void chcderecha_CheckedChanged(object sender, EventArgs e)
{
c_marquesina1.Derecha = chcderecha.Checked;
}

private void trackBar1_Scroll(object sender, EventArgs e)
{
c_marquesina1.Velocidad = trackBar1.Value;
}

También podría gustarte