
Es una plataforma de desarrollo y ejecución de aplicaciones.
Esto quiere decir que no sólo nos brinda todas las herramientas y servicios que se necesitan para desarrollar modernas aplicaciones empresariales y de misión crítica, sino que también nos provee de mecanismos seguros y eficientes para asegurar que la ejecución de las mismas sea óptima.
Los componentes principales de la plataforma .NET son:
• Un entorno de ejecución de aplicaciones, también llamado “Runtime”, que es un componente de software cuya función es la de ejecutar las aplicaciones .NET e interactuar con el sistema operativo ofreciendo sus servicios y recursos.
• Un conjunto de bibliotecas de funcionalidades y controles reutilizables, con una enorme cantidad de componentes ya programados listos para ser aprovechados por otras aplicaciones.
• Un conjunto de lenguajes de programación de alto nivel, junto con sus compiladores y linkers, que permitirán el desarrollo de aplicaciones sobre la plataforma .NET.
• Documentación y guías de arquitectura, que describen las mejores prácticas de diseño, organización, desarrollo, prueba e instalación de aplicaciones .NET
ARTICULO DE INTERES
".NET es un proyecto de Microsoft para crear una nueva plataforma de desarrollo de software con énfasis en transparencia de redes, con independencia de plataforma de hardware y que permita un rápido desarrollo de aplicaciones. Basado en ella, la empresa intenta desarrollar una estrategia horizontal que integre todos sus productos, desde el sistema operativo hasta las herramientas de mercado.
.NET podría considerarse una respuesta de Microsoft al creciente mercado de los negocios en entornos Web, como competencia a la plataforma Java de Sun Microsystems. Su propuesta es ofrecer una manera rápida y económica, a la vez que segura y robusta, de desarrollar aplicaciones –o como la misma plataforma las denomina, soluciones– permitiendo una integración más rápida y ágil entre empresas y un acceso más simple y universal a todo tipo de información desde cualquier tipo de dispositivo."
2. El proceso de Evolución hacia .net
Línea del tiempo de .NET .NET representa la evolución de COM (Component Object Model), la plataforma de desarrollo de Microsoft anterior a .NET y sobre la cual se basaba el desarrollo de aplicaciones Visual Basic 6 (entre otros tantos lenguajes y versiones).
En .NET se corrigen muchos de los problemas que afectaban el desarrollo de aplicaciones en plataforma Microsoft antes de su llegada: se crea un sistema de tipos unificado, se define e implementa un sistema de clases único, se permite un manejo integral de los recursos de hardware, se incorpora un sistema de seguridad desde el mismo nivel de código, etc.
Pero quizás lo más importante con la plataforma .NET es la apertura y adopción de Microsoft a una serie de estándares universales (es decir, no propietarios a una empresa en particular) lo cual permite que las aplicaciones aqui escritas sirvan en cualquier plataforma.
3. Framework

Es un es un esquema o patrón para el desarrollo y/o la implementación de una aplicación que permite estructurar y normalizar toda la información que en ella manejemos. Ofrece pautas que facilitan el trabajo de desarrollo y mantenimiento de dicha aplicación, brindan la manera de dividir en una aplicación: la gestión de los datos, las operaciones, y la presentación, definir los nombres de ficheros, su estructura, las convenciones de programación, etc.
Ventajas de Utilizar un Framework
• El programador no necesita plantearse una estructura global de la aplicación, sino que el framework le proporciona un esqueleto que hay que “rellenar”.
• Mediante la definición y estandarización, el programador va a ahorrar tiempo y trabajo facilitando los desarrollos colaborativos. Evitando dificultades al enfrentarse con el código fuente de otro programador o incluso con el propio, pasado algún tiempo, por lo difícil que es entenderlo y modificarlo.
• Es más fácil encontrar herramientas (utilidades, librerías) adaptadas al framework concreto para facilitar el desarrollo.
• La utilización de un framework en el desarrollo de una aplicación implica un cierto coste inicial de aprendizaje, aunque a largo plazo facilita tanto el desarrollo como el mantenimiento.
• Mediante la definición y estandarización, el programador va a ahorrar tiempo y trabajo facilitando los desarrollos colaborativos. Evitando dificultades al enfrentarse con el código fuente de otro programador o incluso con el propio, pasado algún tiempo, por lo difícil que es entenderlo y modificarlo.
• Es más fácil encontrar herramientas (utilidades, librerías) adaptadas al framework concreto para facilitar el desarrollo.
• La utilización de un framework en el desarrollo de una aplicación implica un cierto coste inicial de aprendizaje, aunque a largo plazo facilita tanto el desarrollo como el mantenimiento.
Existen multitud de frameworks orientados a diferentes lenguajes, funcionalidades, etc. Aunque la elección de uno de ellos puede ser una tarea complicada, lo más probable que a largo plazo solo los mejor definidos o más utilizados, permanezcan. Y si ninguno de ellos se adapta a las necesidades de desarrollo, siempre es mejor definir uno propio. La elección del framework concreto a utilizar en nuestra aplicación vendrá marcada por:
•El tipo de aplicación a desarrollar
•El lenguaje de programación y otras tecnologías concretas: base de datos, sistema operativo, etc.
•El lenguaje de programación y otras tecnologías concretas: base de datos, sistema operativo, etc.
4. El ambiente de Programación de .net
Describiremos a continuación algunas de las características principales de la plataforma Microsoft .NET:
• Se dice que es una plataforma de ejecución intermedia, ya que las aplicaciones .NET no son ejecutadas directamente por el sistema operativo, como ocurre en el modelo tradicional de desarrollo. Aqui las aplicaciones .NET son diseñadas para ejecutarse en un componente de software llamado Entorno de Ejecución (muchas veces también conocido como “Runtime”, o, “Máquina Virtual”). Este componente maneja el ciclo de vida de cualquier aplicación .NET, iniciándola, deteniéndola, interactuando con el Sistema Operativo y proporcionando servicios y recursos en tiempo de ejecución.
• La plataforma Microsoft .NET se basada en la Orientación a Objetos (para más información acerca de este tema puede consultar el material de estudio de la Estrella 0 del programa)
• .NET es multi-lenguaje: no necesitamos aprender un único lenguaje específico de programación de alto nivel, sino que podemos elegir entre una amplia lista de opciones.
• Si bien .NET es muy llamativo para desarrolladores no profesionales, estudiantes y entusiastas, su poder radica en la capacidad para soportar las aplicaciones más grandes y complejas.
• .Net fue diseñado de manera tal de poder proveer un único modelo de programación, uniforme y consistente, para todo tipo de aplicaciones (ya sean de formularios Windows, de consola, aplicaciones Web, aplicaciones móviles, etc.) y para cualquier dispositivo de hardware (PC’s, Pocket PC’s, Teléfonos Celulares Inteligentes, también llamados “SmartPhones”, Tablet PC’s, etc.). Esto representa un gran cambio con respecto a las plataformas anteriores a .NET, las cuales tenían modelos de programación, bibliotecas, lenguajes y herramientas distintas según el tipo de aplicación y el dispositivo de hardware.
• .Net fue diseñado de manera tal de poder proveer un único modelo de programación, uniforme y consistente, para todo tipo de aplicaciones (ya sean de formularios Windows, de consola, aplicaciones Web, aplicaciones móviles, etc.) y para cualquier dispositivo de hardware (PC’s, Pocket PC’s, Teléfonos Celulares Inteligentes, también llamados “SmartPhones”, Tablet PC’s, etc.). Esto representa un gran cambio con respecto a las plataformas anteriores a .NET, las cuales tenían modelos de programación, bibliotecas, lenguajes y herramientas distintas según el tipo de aplicación y el dispositivo de hardware.
En el siguiente diagrama podemos ver que la plataforma Microsoft.NET es denominada “de Ejecución Intermedia” justamente porque se ubica entre el Sistema Operativo y las aplicaciones finales con las que interactúan los usuarios, actuando como intermediario entre ambos
5. La Programación Orientada a Objetos
Se puede definir POO como una técnica o estilo de programación que utiliza objetos como bloque esencial de construcción.Los objetos son en realidad como los tipos abstractos de datos. Un TAD es un tipo definido por el programador junto con un conjunto de operaciones que se pueden realizar sobre ellos. Se denominan abstractos para diferenciarlos de los tipos de datos fundamentales o básicos.Al igual que los tipos de datos definidos por el usuario, un objeto es una colección de datos, junto con las funciones asociadas, utilizadas para operar sobre esos datos. Sin embargo la potencia real de los objetos reside en las propiedades que soportan: herencia, encapsulación y polimorfismo, junto con los conceptos básicos de objetos, clases, métodos y mensajes.
Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.
En programación convencional los programas se dividen en dos componentes: procedimientos y datos. En esencia los datos se tratan separadamente de los procedimientos.En POO un programa se divide en componentes que contienen procedimientos y datos. Cada componente se considera un objeto.
Los objetos son entidades que combinan estado, comportamiento e identidad:
* El estado está compuesto de datos, serán uno o vários atributos a los que se habrán asignado unos valores concretos (datos).
* El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, qué operaciones se pueden realizar con él y que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separan ni deben separarse el estado y el comportamiento.
* La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).
Un objeto: una unidad que contiene Datos y las funciones que operan sobre esos datos.
A los elementos de un objeto se les conoce como miembros; las funciones que operan sobre los datos se denominan métodos.
En Programacion Orientada a Objetos los objetos pueden ser cualquier entidad del mundo real:
- Objetos físicos
* Automóviles en una simulación de tráfico
* aviones en un sistema de control de tráfico aéreo * animales mamíferos, etc
- Elementos de interfaces gráficos de usuarios* ventanas
* iconos
* menús
* ratones
- Estructuras de datos* arrays
* pilas
* Arboles binarios
- Tipos de datos definidos por el usuario
* números complejos
* hora del díaEn la programación orientada a objetos un programa es un conjunto de estos objetos, que se relacionan para realizar tareas, lo cual permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.
Asi, un objeto contiene toda la información con la cual se lo puede definir e identificar entre varios objetos de otras clases y aun de la misma clase, mediante sus atributos.
Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a ninguno de ellos, hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos.
Esto difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada sólo se escriben funciones que procesan datos. Los programadores que emplean éste nuevo paradigma, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.
Origen
Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo. Al parecer, en este centro, trabajaban en simulaciones de naves, y fueron confundidos por la explosión combinatoria de cómo las diversas cualidades de diversas naves podían afectar unas a las otras. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamiento. Fueron refinados más tarde en Smalltalk, que fue desarrollado en Simula en Xerox PARC (y cuya primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar "en marcha" en lugar de tener un sistema basado en programas estáticos.
Conceptos fundamentales
La programación orientada a objetos es una nueva forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:
Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos). Corresponden a los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.---
Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas. Una clase es una colección de objetos similares y un objeto es una instancia de una definición de una clase.
La comunicación con el objeto se realiza a través del paso de mensajes. El envío a una instancia de una clase produce la ejecución de un método o función miembro. El paso de mensajes es el término utilizado para referirnos a la invocación o llamada de una función miembro de un objeto.
Método: algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
Evento: un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.
Mensaje: es una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó. Un mensaje es simplemente una petición para que un objeto se comporte de una determinada manera, ejecutando una de sus funciones miembro. La técnica de enviar mensajes se conoce como paso de mensajes.
Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.
Estado interno: es una propiedad invisible de los objetos, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos).
Componentes de un objeto: atributos, identidad, relaciones y métodos.
Representación de un objeto: un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.
En comparación con un lenguaje imperativo, una "variable", no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.
Características de la Programación Orientada a Objetos
Hay un cierto desacuerdo sobre exactamente qué características de un método de programación o lenguaje le definen como "orientado a objetos", pero hay un consenso general en que las características siguientes son las más importantes (para más información, seguir los enlaces respectivos):
Abstracción: Un concepto muy importante introducido por la programación estructurada es la abstracción. La abstracción se puede definir como la capacidad de examinar algo sin preocuparse de los detalles internos. En un programa estructurado es suficiente conocer que un procedimiento dado realiza una tarea específica. El cómo se realiza la tarea no es importante; mientras el procedimiento sea fiable se puede utilizar sin tener que conocer cómo funciona su interior. Esto se conoce como abstracción funcional.
Las estructuras de datos y los tipos de datos son un ejemplo de abstracción. Los procedimientos y funciones son otro ejemplo. Sólo recientemente han emergido lenguajes que soportan sus propios tipos abstractos de datos (TAD), como Pascal, Ada, Modula-2 y C++.
Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción.
Polimorfismo: En un sentido literal, significa la cualidad de tener más de una forma. En el contexto de POO, el polimorfismo se refiere al hecho de que una misma operación puede tener diferente comportamiento en diferentes objetos. Por ejemplo, consideremos la operación sumar. El operador + realiza la suma de dos números de diferente tipo. Además se puede definir la operación de sumar dos cadenas mediante el operador suma.
Herencia: es la propiedad que permite a los objetos construirse a partir de otros objetos. Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Esto suele hacerse agrupando los objetos en clases, subclases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple; esta característica no está soportada por algunos lenguajes (como Java).
En C++ la clase original se denomina clase base; las clases que se definen a partir de la clase base, compartiendo sus características y añadiendo otras nuevas, se denominan clases derivadas, que pueden heredar código y datos de su clase base añadiendo su propio código y datos a la misma.Si una clase sólo puede recibir características de otra clase base, la herencia se denomina herencia simple.Si una clase recibe propiedades de más de una clase base, la herencia se denomina herencia múltiple.
No hay comentarios:
Publicar un comentario