viernes, 30 de enero de 2015

.Net Open Source

.NET 2015 - .NET como Open Source, .NET en Mac y Linux, y Visual Studio Comunidad

  • Código abierto y multiplataforma.
    • .NET Core 5 es el marco moderno, por componentes que los buques a través de NuGet. Esto significa que puede enviar una versión privada del Core .NET Framework con su aplicación. Versiones de otras aplicaciones no pueden cambiar el comportamiento de su aplicación.
    • Estamos construyendo un .NET CLR Core para Windows, Mac y Linux y será tanto de código abierto y que será apoyado por Microsoft. Todo va a suceder en https://github.com/dotnet .
  • ASP.NET 5 funcionará en todas partes.
    • ASP.NET 5 estará disponible para Windows, Mac y Linux. Soporte para Mac y Linux vendrá pronto y todo se va a pasar a la intemperie en GitHub en https://github.com/aspnet .
    • ASP.NET 5 incluirá un servidor web para Mac y Linux.
  • Los desarrolladores deben tener una gran experiencia.
    • Hay una nueva GRATIS SKU de Visual Studio para desarrolladores de código abierto y estudiantes llamados Visual Studio Comunidad . Es compatible con las extensiones y mucho más, todo en una sola descarga. Esto no es Express. Esto es básicamente Pro.
    • Visual Studio 2015 y ASP.NET 5 para los desarrolladores de front-end.
  • Incluso fuente más abierto.
.NET Código abierto tiene mucho sentido. Tiene buen sentido de los negocios, el buen sentido de la comunidad.

Abrir .NET

Comunidad de Visual Studio

http://downloadvisualstudio.com

visual-studio-2013-logo

Comunidad de Visual Studio http://www.visualstudio.com/free .

Visual Studio 2013 Express para Web

Visual Studio Express 2013 para Web proporciona las herramientas básicas para la creación de aplicaciones web innovadoras convincentes y servicios. Esto incluye los editores ASP.NET para HTML5, CSS3, JavaScript, etc.

Visual Studio 2013 Express para Windows (escritorio)

Visual Studio Express 2013 para Windows de escritorio permite la creación de aplicaciones de escritorio en C #, Visual Basic y C ++, y es compatible con Windows Presentation Foundation (WPF), Windows Forms, y Win32.

Microsoft Visual Studio Team Foundation Server Express 2013

Visual Studio Team Foundation Server Express 2013 es un control de código fuente, gestión de proyectos, y la plataforma de colaboración en equipo en el núcleo de la suite de Microsoft de Application Lifecycle Management (ALM) herramientas.

Ejemplo sencillo Banco. Clientes y caja de ahorros

Un banco quiere registrar a sus clientes a través del DNI y su nombre.
El banco registra a cada uno de sus clientes a una cuenta que se denomina caja de ahorro en pesos, la misma tiene como atributo el nro. de cuenta y un saldo. 

En el siguiente ejemplo se desarrollo una aplicación Windows Forms com Visual studio 2010, lenguaje C#, y tiene las siguientes características;

1) Alta de Clientes. 

2) Alta Caja de ahorros. (En el alta de una caja de ahorro busca y valida que el cliente exista)

3) Movimientos del banco: realiza un deposito  y una extracción.
 Desposito 1000$ en la cuenta 1 


Extraccion de la cuenta 1, 500$.


4) Listado de clientes del banco.
 
5) Listado de caja de ahorros.

6) Menú principal para llamar a las distintas opciones dentro del banco. (puntos 1 al 5).



jueves, 29 de enero de 2015

Propiedades

Una propiedad es un miembro que ofrece un mecanismo flexible para leer, escribir o calcular el valor de un campo privado. Las propiedades pueden utilizarse como si fuesen miembros de datos públicos, aunque en realidad son métodos especiales denominados descriptores de acceso. De este modo, se puede obtener acceso a los datos con facilidad, a la vez que se promueve la seguridad y flexibilidad de los métodos.

  • Las propiedades permiten que una clase exponga una manera pública de obtener y establecer valores, ocultando el código de implementación o comprobación.
     
  • El descriptor de acceso de una propiedad get se utiliza para devolver el valor de propiedad y el descriptor de acceso set se utiliza para asignar un nuevo valor. Estos descriptores de acceso pueden tener niveles de acceso diferentes.
     
  • La palabra clave value se usa para definir el valor asignado por el descriptor de acceso set
     
  • Las propiedades que no implementan un descriptor de acceso set son de solo lectura.
     
  • En el caso de las propiedades simples que no requieren ningún código de descriptor de acceso personalizado, considere la posibilidad de utilizar propiedades autoimplementadas.
 

Objetos

En filosofía un objeto es aquello que puede ser observado, estudiado y aprendido, en contraposición a la representación abstracta de ese objeto que se crea en la mente a través del proceso de generalización. Un objeto en POO representa alguna entidad de la vida real, es decir, alguno de los objetos que pertenecen al negocio con que estamos trabajando o al problema con el que nos estamos enfrentando, y con los que podemos interactuar. A través del estudio de ellos se adquiere el conocimiento necesario para, mediante la abstracción y la generalización, agruparlos según sus características en conjuntos. Estos conjuntos determinan las clases de objetos con las que estamos trabajando. Primero existen los objetos; luego aparecen las clases en función de la solución que estemos buscando. Ésta es la forma más común de adquirir conocimiento aunque no es la única. En ocasiones, cuando el observador es un experto del negocio (o del problema), el proceso puede ser a la inversa y comenzar el análisis en una base teórica abstracta, sustentada por el conocimiento previo que da lugar primeramente a clases de objetos que satisfagan las necesidades de la solución.

Clases

Una clase es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el lenguaje. Cada clase es un modelo que define un conjunto de variables -el estado, y métodos apropiados para operar con dichos datos -el comportamiento. Cada objeto creado a partir de la clase se denomina instancia de la clase.
Las clases son un pilar fundamental de la programación orientada a objetos. Permiten abstraer los datos y sus operaciones asociadas al modo de una caja negra. Los lenguajes de programación que soportan clases difieren sutilmente en su soporte para diversas características relacionadas con clases. La mayoría soportan diversas formas de herencia. Muchos lenguajes también soportan características para proporcionar encapsulación, como especificadores de acceso.

Clases y miembros de clase abstractos y sellados

La palabra clave abstract permite crear clases y miembros de clase que están incompletos y se deben implementar en una clase derivada.
La palabra clave sealed permite impedir la herencia de una clase o de ciertos miembros de clase marcados previamente como virtuales. 

No se pueden crear instancias de una clase abstracta. El propósito de una clase abstracta es proporcionar una definición común de una clase base que múltiples clases derivadas pueden compartir. Por ejemplo, una biblioteca de clases puede definir una clase abstracta que se utiliza como parámetro para muchas de sus funciones y solicitar a los programadores que utilizan esa biblioteca que proporcionen su propia implementación de la clase mediante la creación de una clase derivada.
Las clases abstractas también pueden definir métodos abstractos. Esto se consigue agregando la palabra clave abstract antes del tipo de valor que devuelve el método.
 
Los métodos abstractos no tienen ninguna implementación, de modo que la definición de método va seguida por un punto y coma en lugar de un bloque de método normal. Las clases derivadas de la clase abstracta deben implementar todos los métodos abstractos. Cuando una clase abstracta hereda un método virtual de una clase base, la clase abstracta puede reemplazar el método virtual con un método abstracto
 
Las clases se pueden declarar como selladas si se incluye la palabra clave sealed antes de la definición de clase 
 
Una clase sellada no se puede utilizar como clase base. Por esta razón, tampoco puede ser una clase abstracta. Las clases selladas evitan la derivación. Puesto que nunca se pueden utilizar como clase base, algunas optimizaciones en tiempo de ejecución pueden hacer que sea un poco más rápido llamar a miembros de clase sellada.
Un método, indizador, propiedad o evento de una clase derivada que reemplaza a un miembro virtual de la clase base puede declarar ese miembro como sellado. Esto niega el aspecto virtual del miembro para cualquier clase derivada adicional. Esto se logra colocando la palabra clave sealed antes de la palabra clave override en la declaración del miembro de clase.   

El polimorfismo

El polimorfismo suele considerarse el tercer pilar de la programación orientada a objetos, después de la encapsulación y la herencia. Polimorfismo es una palabra griega que significa "con muchas formas" y tiene dos aspectos diferentes:
  • En tiempo de ejecución, los objetos de una clase derivada pueden ser tratados como objetos de una clase base en lugares como parámetros de métodos y colecciones o matrices. Cuando ocurre, el tipo declarado del objeto ya no es idéntico a su tipo en tiempo de ejecución.
  • Las clases base pueden definir e implementar métodosvirtuales, y las clases derivadas pueden invalidarlos, lo que significa que pueden proporcionar su propia definición e implementación. En tiempo de ejecución, cuando el código de cliente llama al método, CLR busca el tipo en tiempo de ejecución del objeto e invoca esa invalidación del método virtual. Por lo tanto, en el código fuente puede llamar a un método en una clase base y hacer que se ejecute una versión del método de la clase derivada.
 
Cuando una clase derivada hereda de una clase base, obtiene todos los métodos, campos, propiedades y eventos de la clase base. El diseñador de la clase derivada tiene las siguientes opciones:
  • Invalidar los miembros virtuales de la clase base.
  • Heredar el método de la clase base más próximo sin invalidarlo.
  • Definir una nueva implementación no virtual de esos miembros que oculte las implementaciones de la clase base.
Una clase derivada puede invalidar un miembro de la clase base si este se declara como virtual o abstracto. El miembro derivado debe usar la palabra clave override para indicar explícitamente que el propósito del método es participar en una invocación virtual.

Una clase derivada puede detener la herencia virtual declarando una invalidación como sealed. Para ello, es necesario colocar la palabra clave sealed antes de la palabra clave override en la declaración del miembro de la clase.



La herencia

La herencia, junto con la encapsulación y el polimorfismo, es una de las tres características principales (o pilares) de la programación orientada a objetos. La herencia permite crear nuevas clases que reutilizan, extienden y modifican el comportamiento que se define en otras clases. La clase cuyos miembros se heredan se denomina clase base y la clase que hereda esos miembros se denomina clase derivada. Una clase derivada solo puede tener una clase base directa. Sin embargo, la herencia es transitiva. Si ClassC se deriva de ClassB y ClassB se deriva de ClassA, ClassC hereda los miembros declarados en ClassB y ClassA.

Conceptualmente, una clase derivada es una especialización de la clase base. Por ejemplo, si tiene una clase base Animal, puede tener una clase derivada denominada Mammal y otra clase derivada denominada Reptile. Mammal es Animaly Reptile es Animal, pero cada clase derivada representa especializaciones diferentes de la clase base.
Al definir una clase para derivar de otra clase, la clase derivada obtiene implícitamente todos los miembros de la clase base, salvo sus constructores y destructores. La clase derivada puede, por tanto, reutilizar el código de la clase base sin tener que volver a implementarlo. En la clase derivada, puede agregar más miembros. De esta manera, la clase derivada extiende la funcionalidad de la clase base.
 

Principio interfaz de segregación

El principio interfaz de segregación (ISP) establece que ningún cliente debe ser forzado a depender de métodos que no utiliza. ISP divide las interfaces que son muy grandes en otras más pequeñas y más específicas para que los clientes sólo tendrán que saber sobre los métodos que son de interés para ellos. Estas interfaces de reducidas también se llaman interfaz papel ISP tiene la intención de mantener un sistema desacoplado y por lo tanto más fácil de refactorizar, cambiar y volver a implementar.

Ejemplo:

Principio de inversión de Dependencia

En la programación orientada a objetos , el principio de inversión de dependencia se refiere a una forma específica de desacoplamiento de software módulos. El principio establece:
A. módulos de alto nivel no deben depender de los módulos de bajo nivel. Ambos deben depender de las abstracciones .
B. Las abstracciones no debe depender de los detalles. Detalles deberían depender de las abstracciones.
El principio invierte la forma en que algunas personas pueden pensar en el diseño orientado a objetos, que dicta que ambos objetos de alto y de bajo nivel deben depender de la misma abstracción.

Ejemplo:







Abierto / Cerrado

En la programación orientada a objetos , el abierto / cerrado principio establece "entidades de software (clases, módulos, funciones, etc.) deben estar abiertos para la extensión, pero cerrado por modificación"; es decir, una entidad de este tipo puede permitir que su comportamiento que extenderse sin modificar su código fuente . Esto es especialmente valioso en un entorno de producción, donde los cambios en el código fuente pueden requerir revisiones de código , pruebas unitarias , y otros procedimientos para calificar para su uso en un producto: Código de obedecer el principio no cambia cuando se extiende, y por lo tanto no necesita tanto esfuerzo.
El nombre de principio de abierto / cerrado ha sido utilizado de dos maneras. Ambos modos utilizan herencia para resolver el dilema aparente, pero las metas, las técnicas y los resultados son diferentes.





 

Principio de responsabilidad individual

En programación orientada a objetos, se suele definir como principio de diseño que cada clase debe tener una única responsabilidad, y que esta debe estar contenida únicamente en la clase. Así:
  • Una clase debería tener sólo una razón para cambiar
  • Cada responsabilidad es el eje del cambio
  • Para contener la propagación del cambio, debemos separar las responsabilidades.
  • Si una clase asume más de una responsabilidad, será más sensible al cambio.
  • Si una clase asume más de una responsabilidad, las responsabilidades se acoplan

Ejemplo: