domingo, 9 de noviembre de 2008

Especificaciones del Proyecto

El proyecto consiste en construir un Sistema de Foros en la cual será posible ingresar Entradas mediante un Dispositivo Móvil. Esta solucion esta pensada para el Ambiente Académico, por lo tanto los Usuarios serán de dos Tipos:
  • Profesores
  • Alumnos
Estos deberán registrarse previamente en un Sitio Web, y crear sus temas de discusión y opinión desde sus celulares, los cuales podrán ser respondidos por otros Usuarios registrados en dicho sitio, y también mediante un Dispositivo Móvil.
En este foro se clasificarán los Temas por Materia, cada vez que el Usuario ingrese, primero deberá seleccionar el tema y luego loguearse. Una vez realizado esto, el Usuario recién podrá ver las opiniones y temas de discusión de otros Usuarios, siendo posible visualizar los listados de respuestas segun algún criterio seleccionado, y los cuales pueden ser:
  • Temas de discusión y Opiniones de todos los Usuarios.
  • Solo las Opiniones de los Profesores.
  • Solo las Opiniones se algunos Usuarios seleccionados.
También será posible que el Usuario pueda diferenciar entre los mensajes leídos de los que no fueron leídos.

Este Sistema está pensado para ser implementado en Teléfonos Celulares con Windows Mobile y que cuenten con una conexión a Internet.
Su desarrollo respetará el modelo de las 3 Capas: Presentación, Lógica y Modelo de Datos.
El Motor del Foro se ejecutará en un Servidor Web y la Capa de Datos se realizará utilizando Linq.

martes, 14 de octubre de 2008

Nuestro Proyecto!

Luego de 3 meses de haber nacido esta célula, logramos definir el Tema y el Proyecto en el que trabajaremos, con el fin de aprender y practicar algunos aspectos de las actuales tecnologías existentes.

Se trata de un Sistema de Consulta de un Foro de Cátedra de Profesores, mediante un Dispositivo Móvil con Windows Mobile. Para el desarrollo de este proyecto utilizaremos las herramientas que vienen en el paquete Windows Mobile 6 SDK, SQLServer 2005, y el Visual Studio 2008.

.

domingo, 28 de septiembre de 2008

CodeCamp 2008





Sábado 4 de Octubre, más de 40 conferencias. Registráte!!


martes, 9 de septiembre de 2008

CSS-XML

Hola que tal? Bien es necesario empezar con algo al ver el tema de ASP, que mejor que recorrer de a poco el tema con algo de CSS y XML, aquellos que deseen hechar un vistazo pueden hacerlo en :
http://www.4shared.com/file/62363647/e5ee9e2e/Ejemplo1.html
http://www.4shared.com/file/62363837/a03125e3/Ejemplo2.html
Saludos!!!

domingo, 31 de agosto de 2008

Sobre los Libros

Algunos libros que fueron recomendados fueron dados de baja por cuestiones de copyright.
Los libros listados son los que a la fecha están subidos en el skydrive de Jose Villagrán:

-Illustrated C# 2008
-Silverlight and ASP.NET Revealed
-Silverlight 2 Visual Essentials
-Pro WPF in C# 2008

Si te interesa bajarlos entra al siguiente link:

http://jvillagran.blogspot.com/2008/08/ms-sobre-los-libros.html
-

sábado, 30 de agosto de 2008

Interfaces y Herencia

Las Interfaces son una forma especial de una clase, aunque la diferencia principal con las clases es que las interfaces no contienen código ejecutable, solo definen los miembros y en el caso de los métodos solo indican si reciben parámetros y de que tipo son.

La interfaz es como un contrato, el papel que juegan es el de solo indicar que es lo que una clase o estructura debe implementar.

Cuando una clase implementa una interfaz está firmando un contrato con el que se compromete a definir todos los miembros que la clase define, de hecho el propio compilador nos obliga a hacerlo.

El siguiente Ejemplo es una aplicación de consola realizada con el Visual Studio 2008 y se mostrará como usar las interfaces de .Net:


   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:  
   6:  namespace Interfaces
   7:  {
   8:      class Program
   9:      {
  10:          static void Main(string[] args)
  11:          {
  12:              Persona objPersona = new Persona();
  13:              objPersona.Mostrar();
  14:              IMiInterface i = objPersona;
  15:              i.Mostrar();
  16:              CaractPersona c = objPersona;
  17:              c.Apellido = "Nuevo Apellido";
  18:  
  19:              objPersona.Mostrar();
  20:              Console.WriteLine(c.ToString());
  21:          }
  22:      }
  23:  

Lo que se muestra hasta aqui es la Clase Program que contiene el método Main, en esta se crea un objeto objPersona, dos variables i y c; del tipo Persona, IMiInterface y CaractPersona respectivamente que se definiran mas adelante.

En la línea 13 y 15 se utiliza el método Mostrar para mostrar por pantalla el Nombre y Apellido de una Persona, y en la línea 20 se utiliza el método ToString como otra forma de mostrar el Apellido y Nombre de la Persona usando los conceptos de Polimorfismo.

La salida es la siguiente:



Ahora veamos la declaración de las Clases e Interfaces, primero definimos una interface IMiInterface, que define los métodos y propiedades, junto con sus métodos get y set, que deberán utilizar las Clases que implementen dicha Interfaz.

Luego definimos una clase CaracPersona en donde definimos la Propiedad Apellido con sus correspondiente get y set.

Cuando hablamos de propiedades el método get devuelve un valor y el método set asigna un valor al atributo, debido a que los atributos son declarados privados y se acceden a ellos a través de métodos.

Luego se define la clase Persona que heredará de la clase CaracPersona e implentará la Interface IMiInterface, es decir se suscribe al contrato de la Interface mencionada. Si en esta clase no coloco todos los métodos que figuran en la Interface el compilador me mostrará error. Por lo tanto esta clase está obligada a implementar todo lo que implemente la interface.

En la línea 47 se muestra como a la Clase Persona se le hace heredar de la Clase y la Interfaz, se debe tener en cuenta el orden en que esto se coloca, sino nos dará error, primero se debe poner que se hereda de las clases y despues de la interface.

Luego se define las propiedades con sus métodos get y set correspondientes. Tambien se define el método Mostrar que tiene la función de imprimir por pantalla y se usa el método ToString definido en la clase Object, que es la clase por defecto que heredan todas las Clases, y se le puede sobreescribir haciendo que imprima el Apellido y Nombre de la Persona.


  24:      interface IMiInterface
  25:      {
  26:          void Mostrar();
  27:          string Nombre { get; set; }
  28:          int Edad { get; }
  29:      }
  30:  
  31:      public class CaractPersona
  32:      {
  33:          private string _Apellido = "Castillo";
  34:          public string Apellido
  35:          {
  36:              get
  37:              {
  38:                  return _Apellido;
  39:              }
  40:              set
  41:              {
  42:                  _Apellido = value;
  43:              }
  44:          }
  45:      }
  46:  
  47:      public class Persona : CaractPersona, IMiInterface
  48:      {
  49:          private string _Nombre = "César";
  50:          public string Nombre
  51:          {
  52:              get
  53:              {
  54:                  return _Nombre;
  55:              }
  56:              set
  57:              {
  58:                  _Nombre = value;
  59:              }
  60:          }       
  61:          
  62:          private int _Edad = 20;
  63:          public int Edad
  64:          {
  65:              get
  66:              {
  67:                  return _Edad;
  68:              }
  69:          }
  70:  
  71:          public void Mostrar()
  72:          {
  73:              Console.WriteLine(Nombre + " " +Apellido);
  74:          }
  75:  
  76:          public override string ToString()
  77:          {
  78:              return Apellido + " " + Nombre;
  79:          }
  80:      }
  81:  }

De esta forma definimos una estructura de clases utilizando Interfaces, espero comentarios y que el ejemplo sirva.


lunes, 21 de julio de 2008

Clases herencia y polimorfismo

En el siguiente ejercicio vamos a revisar algunos conceptos sobre esta cosa que llaman programación orientada a objetos.

Definitivamente, la técnica de definir clases y reutilizar esas definciones facilita la programación.

Uno de los aspectos más importantes es la capacidad de hereder propiedades y métodos de manera que se puede lograr la famosa especializacion de una clase redifiniendo lo que debe hacerse al ejecutar un método, esto es lo que llaman polimorfismo.

Veamos el ejemplo que hace las cosas mas fáciles de entender. Se trata de una aplicación de consola realizada con el Visual Studio 2008.



1using System;
2using System.Collections.Generic;
3 
4namespace Polymorphism
5{
6 class Program
7 {
8 static void Main(string[] args)
9 {
10 
11 Perro perro = new Perro("Sultan");
12 Gato gato = new Gato("Garfield");
13 Pato pato = new Pato("Lucas");
14 
15 Console.WriteLine("\nDesde los objetos directamente");
16 perro.Presentarse();
17 gato.Presentarse();
18 pato.Presentarse();
19 
20 List<Animal> bichos = new List<Animal>();
21 bichos.Add(new Perro("Sultan 2") as Animal);
22 bichos.Add(new Perro("Diablo") as Animal);
23 bichos.Add(new Pato("Lucas 2") as Animal);
24 bichos.Add(new Gato("Silvestre") as Animal);
25 bichos.Add(new Gato("Midnight") as Animal);
26 bichos.Add((Animal) perro);
27 bichos.Add((Animal) gato);
28 bichos.Add((Animal) pato);
29 
30 bichos.Sort(delegate(Animal a1, Animal a2) { return String.Compare(a1.Nombre, a2.Nombre); });
31 
32 Console.WriteLine("\nDesde un arreglo de objetos indirectamente");
33 foreach (Animal bicho in bichos)
34 {
35 bicho.Presentarse();
36 }
37 }
38 }
39 


Hasta aquí, lo que tenemos es la clase Program que es la que contiene el método Main, que se ejecuta por defecto en este tipo de aplicaciones.

Como pueden ver se crean unos objetos (más adelante está la declaración de esas clases) y se invoca el método presentarse de cada uno de ellos. Obviamente cada objeto hace lo que tiene que hacer o mejor dicho lo que se ha codificado en el método Presentarse.

Observen que en las líneas 16 a 18 se invoca el método directamente desde cada objeto; a continuación se declara una colección (en este caso una Lista) de objetos tipo Animal (esta es la clase de la cual heredan las otras) y se crean diferentes tipos de objetos agregándolos a la lista. Tengan en cuenta la forma como se hace el "cast" para que el compilador no se queje.

Finalmente se ordena de acuerdo al nombre de cada bicho y se invoca el método Presentarse por cada una de las instancias en la lista.

La salida del ejercicio es la siguiente:

---------------------------------------------------------------------------------
Desde los objetos directamente
Soy un Polymorphism.Perro me llamo Sultan GUAU GUAU
Soy un Polymorphism.Gato me llamo Garfield MIAU MIAU
Soy un Polymorphism.Pato me llamo Lucas CUAC CUAC

Desde un arreglo de objetos indirectamente
Soy un Polymorphism.Perro me llamo Diablo GUAU GUAU
Soy un Polymorphism.Gato me llamo Garfield MIAU MIAU
Soy un Polymorphism.Pato me llamo Lucas CUAC CUAC
Soy un Polymorphism.Pato me llamo Lucas 2 CUAC CUAC
Soy un Polymorphism.Gato me llamo Midnight MIAU MIAU
Soy un Polymorphism.Gato me llamo Silvestre MIAU MIAU
Soy un Polymorphism.Perro me llamo Sultan GUAU GUAU
Soy un Polymorphism.Perro me llamo Sultan 2 GUAU GUAU
---------------------------------------------------------------------------------

Ahora veamos la declaración de las clases; para comenzar se tiene una clase abstraca (no puede tener instancias) que incorpora el miembro _Nombre (privado) y una propiedad pública Nombre la que nos permite acceder a dicho miembro. Observen que se puso dos constructores el que es por defecto y otro que nos permite crear instancias de la clase y a la vez asignar un valor por medio de la propiedad Nombre.

El método Presentarse muestra el tipo de objeto (el nombre de la clase) de la instancia que ejecuta el método.

A continuación se declaran tres clases, Perro, Gato y Pato que son todas derivadas (este es un término de la programación en C++) debería decir que "heredan" de Animal.

Vean cómo se declaran los constructores de manera que invocan al constructor de la clase base, como en este caso no hay nada más que hacer estos constructores están vacíos, pero tranquilamente se podría incorporar más código.

Observen también que el método Presentarse invoca al mismo método de la clase base, de este modo es que logramaos que clases derivadas ejecuten código escrito para la clase báse.



40 public abstract class Animal
41 {
42 public Animal() {}
43 public Animal(string nombre)
44 {
45 Nombre = nombre;
46 }
47 
48 private string _Nombre = string.Empty;
49 public string Nombre
50 {
51 get { return _Nombre; }
52 set { _Nombre = value ?? string.Empty; }
53 }
54 
55 public virtual void Presentarse()
56 {
57 Console.Write("Soy un " + this.GetType() + " ");
58 }
59 }
60 
61 public class Perro : Animal
62 {
63 public Perro()base() {}
64 public Perro(string nombre) : base(nombre) { }
65 
66 public override void Presentarse()
67 {
68 base.Presentarse();
69 Console.WriteLine("me llamo " + this.Nombre + " GUAU GUAU");
70 }
71 }
72 
73 public class Gato : Animal
74 {
75 public Gato() : base() {}
76 public Gato(string nombre) : base(nombre) {}
77 
78 public override void Presentarse()
79 {
80 base.Presentarse();
81 Console.WriteLine("me llamo " + this.Nombre + " MIAU MIAU");
82 }
83 }
84 
85 public class Pato : Animal
86 {
87 public Pato() : base() {}
88 public Pato(string nombre) : base(nombre) {}
89 
90 public override void Presentarse()
91 {
92 base.Presentarse();
93 Console.WriteLine("me llamo " + this.Nombre + " CUAC CUAC");
94 }
95 }
96 
97}


Bueno, seguramente hay preguntas sobre algunos aspectos del ejemplo pero lo más importante es que tienen un pequeño punto de arranque para desarrollar su propio esquema de clases.

En general un sistema tiene un esquema bastante complejo respecto de las clases de negocio, con todas estas alternativas de clases Abstracas, Virtuales, Interfaces, etc. es cómo hoy en día se construyen modelos que representan con mayor y mejor exactitud el comportamiento de las entidades del mundo real.

Espero que sirva.

miércoles, 9 de julio de 2008

Video Ejemplo

Hola a todos, me hice un videito para aquellos que recien estan empezando... no me salio como lo esperaba pero sirve... espero que lo disfruten SALUDOS!!!

http://www.4shared.com/dir/8167139/a50afb08/sharing.html

Tipos de Datos

Cada variable debe tener un tipo de datos. El tipo de datos de una variable determina los valores que la variable puede contener y las operaciones que pueden llevarse a cabo en ellas.

Tipos de Datos Primitivos

Números Enteros

int numeroEntero; //Entero de 32 Bits
short numeroCorto; //Entero de 16 Bits

long numeroLargo; //Entero de 64 Bits


Números Enteros sin signo

uint numeroEnteroSinSigno; //Entero de 32 Bits sin signo
ushort numeroCortoSinSigno; //Entero de 16 Bits sin signo
ulong numeroLargoSinSigno; //Entero de 64 Bits sin signo


Fraccionarios

float numeroFraccionario; //Números Reales de 32 bits
double numeroFraccionario; //Número Reales de 64 bits


Caracteres

byte nByte; //Caracteres Numéricos sin signo
sbyte nByteConSigno; //Caracteres Numéricos con signo
char caracter; //Caracter Simple
string cadenaTexto; //Cadena de Texto


Booleanos

bool tipoBooleano; //Los valores que permite son True o False.

Tipos por Valor

Los tipos por valor son tipos de datos cuyo valor se almacena en la pila, y cualquier cambio que hagamos lo haremos directamente sobre dicho valor, de igual forma cuando copiamos valores de un tipo por valor a otro, estaremos haciendo copias independientes.

Ejemplo de Tipo por Valor:

Defino una variable del tipo entero:

int numeroEntero;

Le asigno un valor:

numeroEntero = 10;

Es un tipo por valor por que le estoy asignado un valor a la variable numeroEntero, en este caso 10.

Ahora defino una variable del tipo entero:

int numeroEnteroB;

Y si le asigno el contenido de numeroEntero, a esta nueva variable:

numeroEnteroB = numeroEntero;

Entonces el contenido de la nueva variable tambien sera 10

Tipo por Referencia

Se almacenan en el heap o memoria lejana, lo único que almacenan es una referencia al valor asignado. Si hacemos copias de tipos por referencia relamente lo que copiamos es la referencia propiamente dicha, pero no el contenido.

Ejemplo de tipo por referencia

Mas adelante veremos como crear nuestros propios tipos de datos por referencia, por el momento utilizaremos un tipo por referencia existente:

Object tipoRef;
tipoRef = numeroEntero;

Por lo tanto a la variable tipoRef no le estoy asignando el contenido, sino la referencia de memoria, es decir la dirección de memoria donde puedo encontrar el contenido.

Por lo tanto los Tipos de datos por Valor son todos los Tipo de datos Primitivos, y por Referencia son los restantes.

lunes, 7 de julio de 2008

Nuestro primer programa en C#!!!!!!

Como primer paso abrimos el Visual C# y nos aparecerá la siguiente pantalla:


En el menú File elegiremos la opción New Proyect y crearemos un Proyecto en modo consola eligiendo la opción como se muestra en la pantalla que sigue:


Luego le ponemos un nombre al proyecto, para este caso le pondremos "MiPrimerPrograma" y le damos OK. Nos aparecerá una pantalla que contiene el siguiente código:



Por defecto se crea la clase Program y un método estático denominado Main, dentro del cual escribiremos el siguiente código explicado linea por linea para realizar nuestra primera aplicación:

//Nuestra Primera Aplicación!!!

//Defino una cadena y asigno un valor
string valor1 = "Este es el valor 1";

//Defino un entero y asigno un valor

int valor2 = 5;

//Defino una cadena y Asigno a la variable
//valor3 una dirección de memoria,

//en este caso la de valor1
string valor3 = valor1;

//Imprime por pantalla el valor de la
//variable correspondiente

Console
.WriteLine(valor1);
Console.WriteLine(valor2);
Console
.WriteLine(valor3);
Console
.WriteLine();

//Imprime por pantalla la cadena que

//encuentra como parámetro

Console
.WriteLine("Presione una tecla para continuar");

//Lee una tecla presionada por el usuario
Console.ReadKey();

Ahora podemos ejecutarlo presionando sobre el Botón Verde que se encuentra en la Barra ubicada en la parte superior, que se muestra a continuación:


La Salida será la siguiente:



Bueno eso es todo por ahora, espero que puedan hacerlo.

Herramientas

Las herramientas que utilizaremos son las siguientes:

-Microsoft Visual C# 2005 Express Editions
-Microsoft Visual Web Developer 2005 Express Editions
-Microsoft SQLServer 2005 Express Editions


Lo podes bajar desde el siguiente link:

http://msdn.microsoft.com/es-es/express/default.aspx

domingo, 6 de julio de 2008

Empezamos de Cero!!!

Antes que nada vamos a elegir cual es el tema que vamos estudiar, en principio yo propongo que comenzemos con el Lenguaje C#, de modo que estaré preparando algo para postear sobre este tema, espero que publiquen sus preguntas, ideas y propuestas.

Páginas Recomendadas

Antes de Empezar les recomiendo visitar las siguientes páginas:

http://www.illasaron.com/, donde encontrarán videos introductorios de ASP.NET y videos de C#.

http://www.mslatam.com/latam/msdn/comunidad/dce2005/default.aspx, en esta página es posible participar en el programa Desarrollador Cinco Estrellas 2005 el cual consiste en un programa de capacitación online gratuita en tecnologías .NET de Microsoft.

http://www.asp.net/, donde podrán encontrar Videos, Tutoriales, Libros en ASP.NET y algunos Starter Kit (aplicaciones Web de muestra).

sábado, 5 de julio de 2008

Nuestro Logo!!!

Les Presento nuestro Logo!!!

Saludos

Saludos a todos y espero que les sean venideros estos tiempos. Exitos!!!

Bienvenida

Bienvenidos al Blog de la Célula TeamDJ.Net !!!!, aqui publicaremos todos los avances, dudas, comentarios, y temas de interés que irán surgiendo durante el desarrollo de nuestras actividades.