lunes, 15 de agosto de 2016

Factores de comunicación que presenta la metodología ágil XP.

Gestor (Big boss)
  • Es el vínculo entre clientes y programadores, ayuda a que el equipo trabaje efectivamente creando las condiciones adecuadas. Su labor esencial es de coordinación.
Entrenador (Coach)
  • Es responsable del proceso global. Es necesario que conozca a fondo el proceso XP para proveer guías a los miembros del equipo de forma que se apliquen las prácticas XP y se siga el proceso correctamente. 
Programador
  • El programador escribe las pruebas unitarias y produce el código del sistema. Debe existir una comunicación y coordinación adecuada entre los programadores y otros miembros del equipo.
Lo anterior ha sido para mostrar que en Xp no solo es labor del comercial el entablar la relacion entre cliente y empresa (o desarrolladores) sino en que hay una fluida intercomunicabilidad entre los actores del proyecto.

Es una interacción mas unida de cara a que hay que trabajar en parejas y entendernos de una vez con el código y el avance de desarrollo con el cliente, esto nos ayuda a generar una mayor relación entre cliente proyecto y programador(es). 

Los métodos ágiles surgen como una inflexión en un momento o contexto definido, se basa en realimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los cambios.
UML..... 

Bien, investigando un poco, mencionan al Lenguaje Unificado de Modelado (UML), como un modelo estándar para la creación de esquemas, diagramas y documentación, relacionado al desarrollo de programas de software.

Se considera errado la terminología "Lenguaje", pues se dá a entender a que sería otro programa de desarrollo de software o modelado de bases de datos etc. Lo que en verdad es una serie de condicionales, normativas y reglas para representar los esquemas relativos al software, al plano o esqueleto que tiene el software.

Según la fuente :"http://aprenderaprogramar.com" UML es usado por analistas funcionales, pues al haber el problema estos lo analisan, lo estudian y desarrollan el código adecuado para este problema. 

Pasando a los artefactos, estos se describen como la especificación de un componente generado desde un proceso de software, el cual puede generar más artefactos Los artefactos son responsabilidad de cada uno de los trabajadores y estos promueven la idea de que toda parte de información en un proceso debe de ser la responsabilidad de un papel en específico "https://lscauml.wordpress.com/2012/01/05/artefactos-y-uml-en-el-proceso-unificado/" 

Los casos de uso, son las interacciones entre el usuario y el sistema de cómputo.

Los diagramas de secuencias, muestran ordenadamente los eventos que se realizan entre los objetos que un sistema contiene. en este diagrama hay  ejes, el cual la "x" representa los objetos y el eje "y" representa el tiempo.
diagrama obtenida de la fuente: http://www.elclubdelprogramador.com/2012/03/26/uml-diagramas-de-secuencia/
Con los diagramas de Colaboración, (ó de comunicación.) estas muestran las interacciones compartidas y enlazadas entre objetos, Estas se componen en roles (Objetos) Enlaces (Comunicaciones) Mensajes, Anidamientos Iteracciones y Bifurcaciones.

http://www.elclubdelprogramador.com/2012/03/28/uml-diagramas-de-colaboracion/
Los diagramas de transición (estado) manifiestan el comportamiento de un sistema, mostrando los posibles cambios de estado que pudiese tener el programa este trae in estado de inicio, de final, eventos, (Cambios de comportamiento del programa) Transiciones, Etc.

                                           
Los diagramas de paquetes son usados para agrupar elementos de UML. similares al "NameSpace" de c# estas pueden ser estructuras conceptuales o de implementación, pueden depender entre sí u otros paquetes, etc. como también agrupar y encapsular sus elementos y lógicas.



sábado, 13 de agosto de 2016

Características de C#

Tipos de datos y declaración de Variables 

 ¿Qué es un tipo de dato?

Conjunto de mensajes, que responden un objeto en su momento de ejecución.
para que esto se puede efectuar, se debe tener en cuenta que debe existir una variable, el cual es un contenedor donde almacena valores temporales en la memoria, para luego ejecutar operaciones en esta. C# emplea los siguientes tipos de datos, los cuales son los mismos tipos de datos que emplearía .NET:



  • Estructuras o "Structs
  • Tipo Numérico
  • Tipo Booleano
  • Tipos definidos por el usuario.
  • Enumeraciones
  • Tipo entero
  • Tipo punto flotante
  • Tipo Decimal

Para los tipos de datos enteros se clasifican de la siguiente manera:

TipoRango de Datos
sbyteDesde -128 hasta 127
byteDesde 0 hasta 255
charDesde U+0000 hasta U+ffff
shortDesde -32,768 hasta 32,767
ushortDesde 0 hasta 65,535
intDesde -2,147,483,648 hasta 2,147,483,647
uintDesde 0 hasta 4,294,967,295
longDesde -9,223,372,036,854,775,808 hasta 9,223,372,036,854,775,807
ulongDesde 0 hasta 18,446,744,073,709,551,615

El tipo de datos char puede almacenar un caracter a la vez. En total se puede escoger entre 65,536 caracteres.
Ahora para la declaración de las variables en C#, se aplica la siguiente forma:<Tipo de Dato> nombredelaVariable;se debe tener en cuenta las siguientes recomendaciones a la hora de declarar las variables:

  • No iniciaras una variable con un nombre subrayado
  • No usarás nombres con diferenciación de "Case" ejemplo:
  • nombreEmpleado
  • NombreEmpleado
  • Nombreempleado
  • nombreempleado "A pesar de que todas estas serían diferentes variables, a la hora de realizar cambios a estas, podria llevarse a confusiones y retrasos"
  • Comenzar a nombrar la variable siempre por minúscula.
  • Usar la notacion camelCase ejm: nombreEmpleado, codigoCurso, tomaPresion. etc
Ejemplo:
Declarar una variable para calcular la edad de una persona de 33 años:
El tipo de dato es un número entero, no trae decimales ni información alfanumérica, así que se usa el tipo de dato int y como el tipo de dato es entero, vamos a identificar qué tipo de entero debo usar. Tomando en cuenta la tabla anterior, usaria el tipo de entero byte ya que este es de un rango de datos desde 0 hasta 255 quedando así:


byte edadPersona;


• Manejo de cadena y conversión de tipos

La conversion de tipos en c#  es llamada también "Casting", esta conversión lo que hace es cambiar de tipo de dato, sin que el valor de este se vea afectado "Conversión Implicita", en donde un dato del tipo byte, puede ser converso a un tipo de dato Long, sin que este sea afectado en sus valores. Este tipo de conversión la hace automáticamente el CLR (Common Language Runtime), garantizando la no pérdida de información :

La conversión implícita, no requiere una expresión especial en el código fuente , ademas prohibe C# conversiones donde exista una perdida de datos

ejemplo:

int a = 8;
long b = a; (Aquí ocurre la conversión)

La conversión explicita requiere código para realizar la conversión en dado caso de haber un posible error, esto reduce la posibilidad de encontrar "bugs", y hace más eficiente el código, se usa el operador Cast en C#  para realizar conversiones explicitas, este especifica el tipo de dato el cual se realizará la conversión encerrado entre paréntesis por ejemplo

int a = 8;
long b = a; 

a = (long) b; (Al haber un cast "()" C#  ya lo comienza a interpretar como un cambio explicito.)
Pero el formato cast no funciona si se va a cambiar un dato del tipo String a int  para ello usamos los métodos de las clases "System.convert " Estas clases ya ayudan a realizar este tipo de cambio de datos, y se puede hacer en .NET por ejemplo:


edad = System.Convert.To32 (Variable):

Ahora si lo que se quiere es convertir un dato del tipo numero a una cadena o String, podriamos usar lo siguiente:

Variable = variable.ToString();


• Vectores
Los vectores o arrays son secuencias de items o conjunto de variables, cuya funcion es almacenar datos del mismo tipo y estas se declaran de la siguiente manera:

 <tipo> [] <nombre>  = new <tipo> [<tamaño>];

Ahora con un ejemplo más acondicionado:


int [] numeros  = new int [8];


Notese que se llama el tipo de dato, seguido por corchetes simples [], después por el nombre del vector, y el operador new donde se le indica al compilador que se va a crear un nuevo vector. El caso anterior es para vectores unidimensionales. Pero entonces ¿Cómo crear vectores de más de una dimensión?


long [] biDireccional  = new long [8,8];


Esto se logra añadiendo una coma "," entre los corchetes [,] por cada coma añadida, se estaría creando una dimensión más en el array o vector.

• Condicionales

Es cuando en una aplicación, se llega a la desicion de tomar un resultado u otro. Al igual que en la vida diaria cuando decidimos ¿Qué comer hoy?, ¿Qué ropa me pongo hoy?, ¿Será que hoy ganan los Azules o los Blancos? comenzamos a usar ciertas condicionales para hacer una actuacion u otra, de modo que viendolo en una forma de pseudo - código, podría verse así:

si (Tengo Frío);
(Me pongo una chaqueta);
de lo contrario;
(Me aguanto el frío);

Ahora viendolo desde el lado de C#, encontramos lo siguiente:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            float sueldo;
            string linea;
            Console.Write("Ingresar Sueldo : ");
            linea = Console.ReadLine();
            sueldo = float.Parse(linea);
            if (sueldo > 3000);
            {
                Console.Write("Cancele IVA");

            }
            Console.ReadKey();

        }
    }

}

Esta condicional es del tipo simple, pues solo tiene una acción después de la decisión, y no lleva a una acción, si la decisión es contraria.

Pero también existen las condicionales compuestas, las cuales hacen un cierto proceso en caso de haber decidido una opción u otro procedo, en caso de haber tomado la otra opción, eso sí ambas acciones se realizaran al mismo tiempo. En este tipo de condicionales se usa la expresión "else" que quiere decir De lo contrario; 

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int num1, num2;
            string linea;
            Console.Write("Ingresar valor # 1 :");
            linea = Console.ReadLine();
            num1 = int.Parse(linea);
            Console.Write("Ingresar valor # 2 :");
            linea = Console.ReadLine();
            num2 = int.Parse(linea);
            if (num1 > num2)
            {
                Console.Write(num1);
            }
            else
            {
                Console.Write(num2);
            }
            Console.ReadKey();
        }
    }
}


• Bucles 

Son secuencias repetitivas hasta cierto punto donde uno como programador halla configurado, se caracterizan por tener una o varias sentencias que se repiten, y la validación de la condición antes de continuar con la repetición, Existen varias estructuras repetitivas:

  • While:
    • Verifica la condición, si esta es verdadera comienza a hacer el proceso.
    • Se retorna la operación a validar de nuevo la condición.
    • Si la condición es falsa, entonces termina el proceso.
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a;
            a =  1;
            while (a <= 20) ;
            {
                Console.Write(a);
                Console.Write("--");
                a = a + 1;
            }
            Console.ReadKey();
        }
    }
}

  • For:
    • Este tipo de Bucle, lo que hace es por medio de un contador, ejecutar un proceso, desde la afirmación de una variable, hasta que esta variable sea marcada como falso.
    • Al igual que un While, este bucle usa operadores de incremento o decremento para que se cambie la condición de la variable
    • En este tipo de proceso repetitivo, se conoce la cantidad de veces en donde se debe repetir el proceso.
Ejemplo:

namespace ConsoleApplication1
{
    class WhileTest
    {
        static void Main()
        {
            int n = 1;
            while (n < 6)
            {
                Console.WriteLine("El valor correcto de n es {0}", n);
                n= n+1;
            }
            Console.ReadKey();
        }
    }
    
}

  • Do - While
    • En esta estructura, se ejecuta primero un proceso, que a diferencia de las estructuras anteriores, el proceso se ejecuta después de la validación.
namespace DoWhile
{
    class Programa
    {
        static void Main(string [] args)
        {
            int suma = 0, cant = 0, valor, promedio;
            string  Lin;
            do
            {
                Console.WriteLine("Ingrese un valor (Pulsar 0 para calcular el total.)");
                Lin = Console.ReadLine();
                valor = int.Parse(Lin);
                if (valor != 0)
                {
                    suma = suma + valor;
                    cant = cant + 1;

                }
            } while (valor != 0);
                if (cant != 0)
            {
                promedio = suma / cant;
                Console.WriteLine("El promedio de acuerdo a lo ingresado es: {0}",promedio);

            }
            else
            {
                Console.WriteLine("No hay valores ingresados!");
            }
            Console.ReadKey();
        }
    }
}
• Clases 

Una clase es un molde del que luego se pueden crear múltiples objetos, con similares características. Define los datos, variables y los comportamientos de los tipos, se muestra la siguiente estructura:

Class "molde o contenedor" Nombre de la clase{
       [Atributos "Variables, para esta clase"];
       [Métodos "o funciones de la clase"];
[Main]
}

• Herencia


Son clases nuevas, pero con la particularidad que tienen atributos o métodos de otras clases, pero también tienen atributos y métodos propios. a estas se llaman clases derivadas.
Alimentos

Frutas                                                  Verduras                                       Harinas

Uvas                                                    Tomates                                       Pan
Mandarinas                                          Cubios                                         Bizcochos
Naranjas                                              Arvejas                                        Pastas



De la clase Alimentos , encontramos las frutas o las verduras y las harinas. En donde cada sub clase nos separa los tipos de frutas, verduras o harinas, que en sí lo que heredan es la cualidad de los alimentos, como fuente de energía.

Enumeraciones
La enumeracion o enum es un tipo especial de clase que solo contiene un número exclusivo de valores declarados internamente, no puede estar dentro de una clase, por ejemplo dias de la semana, colores, datos especificos etc.

se codifica de la siguiente manera