domingo, 29 de octubre de 2017

Programación Orientada a Objetos

POO
Es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora, la programación orientada a objetos es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. este paradigma cuenta con cuatro pilares fundamentales.

  • Encapsulación. significa que un grupo de propiedades relacionadas, métodos y otros miembros se tratan como una sola unidad u objeto.
  • Herencia. Describe la capacidad de crear nuevas clases basadas en una clase existente.
  • Polimorfismo. significa que puede tener varias clases que se pueden utilizar indistintamente, aunque cada clase implementa las mismas propiedades o métodos de maneras diferentes.
  • Abstracción. Consiste en  capturar las características esenciales de un objeto , así como su comportamiento al mismo tiempo que se ignoran los detalles no esenciales.
Clases y objetos
Los términos clase y objeto se utilizan a veces indistintamente, pero de hecho, las clases describen el tipo de objetos, mientras que los objetos son instancias de clases utilizables. Por lo tanto, se llama la acción de crear un objeto creación de instancias. Con la analogía de plano, una clase es un plano y un objeto es un edificio construido a partir de ese plano.

Miembros de clase
Cada clase puede tener diferentes miembros de clase que incluyen propiedades que describen los datos de la clase, los métodos que definen el comportamiento de la clase y los eventos que proporcionan comunicación entre las distintas clases y objetos.

Los campos y propiedades
Campos y propiedades representan información que contiene un objeto. Los campos son igual que las variables ya que se pueden leer o establecer directamente.

ejemplo:

class SampleClass
{
    private int _sample;
    public int Sample
    {
        // Return the value stored in a field.
        get { return _sample; }
        // Store the value in the field.
        set { _sample = value; }
    }
}

Constructores 
Los constructores son métodos de la clase que se ejecutan automáticamente cuando se crea un objeto de un tipo determinado. Normalmente, los constructores inicializan a los miembros de datos del nuevo objeto. Un constructor se puede ejecutar sólo una vez cuando se crea una clase. Además, el código en el constructor siempre se ejecuta antes que cualquier otro código en una clase. Sin embargo, puede crear varias sobrecargas del constructor de la misma manera que cualquier otro método.

Destructores
Los destructores se utilizan para destruir instancias de clases, el recolector de elementos no utilizados administra automáticamente la asignación y liberación de memoria para los objetos administrados en la aplicación. Sin embargo, puede que aún necesite destructores para limpiar recursos no administrados que crea la aplicación. Sólo puede haber un destructor para cada clase.

Java vs C#





¿Cual lenguaje de programación orientado a objetos y de propósito general es mejor para usted? 
Ambos tienen bibliotecas extensas que se pueden usar para crear aplicaciones de escritorio, la web, dispositivos móviles y otras plataformas. Ambos tienen grandes comunidades de fanáticos entusiastas y mucho apoyo en línea.

Con tanto en común, seleccionar el idioma correcto requiere un enfoque más profundo, echemos un vistazo más de cerca a las similitudes y diferencias entre C# y Java.

Principales Similitudes
Los orígenes de Java y C# están estrechamente ligados a la transición de los lenguajes de programación de bajo nivel como C++, puesto que los lenguajes de programación de alto nivel que se compilan en código de bytes se pueden ejecutar en una máquina virtual. Esto viene con una serie de beneficios, más notablemente la capacidad de escribir código legible por el hombre, una vez que se puede ejecutar en cualquier arquitectura de hardware que tiene la máquina virtual instalada en él. Estas son algunas de las principales similitudes entre C# y Java:

  • Tipo seguro. Si se produce un error de tipo cuando el tipo de datos de un objeto se asigna por error a otro objeto, creando efectos secundarios no deseados. Tanto C # como Java hacen un buen esfuerzo para garantizar que los lanzamientos ilegales se capturen en tiempo de compilación y se expulsarán excepciones en el tiempo de ejecución si un lanzamiento no se puede convertir a un nuevo tipo.
  • Garbage Collection. En lenguajes de bajo nivel, la gestión de memoria puede ser tedioso porque hay que recordar eliminar adecuadamente los nuevos objetos para liberar recursos. Ese no es el caso en C# y Java, donde la recolección de basura incorporada ayuda a prevenir pérdidas de memoria mediante la eliminación de objetos que ya no están siendo utilizados por la aplicación.
  • Herencia. Tanto C# y Java soportan una sola sola ruta de herencia de cualquier clase base a cualquiera de sus clases derivadas. Esto limita los efectos secundarios no deseados que pueden ocurrir cuando existen varias rutas entre múltiples clases base y clases derivadas.
  • Interfaces. Una interfaz es una clase abstracta en donde todos los métodos son abstractos. Un método abstracto es uno que se declara pero que no contiene los detalles de su implementación. El código de administración de todos los métodos o propiedades definidas por la interfaz debe ser suministrado por la clase que lo implementa.
Principales Diferencias 

Existen muchas similitudes entre ambos lenguajes de programación pero es importante recordar que C # tiene su origen en el deseo de Microsoft de tener un lenguaje propietario “similar a Java” para su propia la plataforma .NET. Al mismo tiempo, la comunidad de código abierto de Java continuó creciendo, y hay una carrera de armas técnica desarrollada entre los dos lenguajes de programación.  Estas son algunas de las principales diferencias entre C# y Java. 
  • Enumeraciones: en C #, las enumeraciones son listas simples de constantes con nombre donde el tipo subyacente debe ser integral. Java lleva la enumeración más allá tratándola como una instancia nombrada de un tipo, lo que hace que sea más fácil agregar un comportamiento personalizado a las enumeraciones individuales.
  • Excepciones contraladas. Java distingue entre dos tipos de excepciones-marcado y sin marcar. C# eligió un enfoque más minimalista tan solo por tener un tipo de excepción. Mientras que la capacidad de capturar las excepciones puede ser útil, también puede tener un efecto adverso sobre el control de la escalabilidad y la versión.
  • Polimorfismo. C# y Java tienen enfoques muy diferentes de polimorfismo. Mientras que Java permite el polimorfismo de forma predeterminada, C # debe invocar la palabra clave “virtual” en una clase base y la palabra clave “override” en una clase derivada.
  • Soporte para Delegados. C # tiene delegados que esencialmente sirven como métodos que pueden invocarse sin conocimiento del objeto de destino. Para lograr la misma funcionalidad en Java, necesita usar una interfaz con un único método o alguna otra solución que puede requerir una cantidad no trivial de código adicional, dependiendo de la aplicación.
¿Cuándo se debe usar C# o Java?
Con tanto en común entre ambos lenguajes de programación, final la decisión será tuya, dependiendo en gran medida de la plataforma que elijas para tu proyecto. C# se utiliza principalmente en las implementaciones de .NET Framework, Mono, y Portable.NET de CLI. Si tu software o aplicación web se está construyendo para Windows, C# funciona mejor con la suite de tecnologías de .NET.

Basados en lo anterior, si deseas desarrollar para Unix, Linux u otras plataformas que no son Microsoft, Java es la mejor opción. La comunidad Open Source está en constante creación de nuevas bibliotecas y herramientas. Hay que recordar también que Java es el lenguaje principal utilizado por Google para desarrollar Android, que es actualmente el mayor sistema operativo para dispositivos móviles.

Ten en cuenta que las ventajas mencionadas anteriormente son leves, ni uno ni otro lenguaje de programación es probable que desaparezcan en el corto plazo. Ambos lenguajes han existido el tiempo suficiente como para que realmente no haya nada que no se puede construir en uno que no se pueda construir en el otro. En pocas palabras: Elije el lenguaje de programación que mejor se adapte a tu proyecto o plataforma de elección.

Tú puedes dar tu punto de vista sobre este debate en los comentarios. Me sentiré muy agradecido si compartes este artículo en las redes sociales.




Lenguaje Java

      

La tecnología Java se usa para desarrollar aplicaciones para un amplio alcance de entornos, desde dispositivos del consumidor hasta sistemas empresariales heterogéneos. Inicialmente lanzado por Sun Microsystems en 1995 java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible, como cualquier lenguaje de programación, el lenguaje Java tiene su propia estructura, reglas de sintaxis y paradigma de programación. El paradigma de programación del lenguaje Java se basa en el concepto de programación orientada a objetos (OOP), que las funciones del lenguaje soportan.

El lenguaje Java es un derivado del lenguaje C, por lo que sus reglas de sintaxis se parecen mucho a C: por ejemplo, los bloques de códigos se modularizan en métodos y se delimitan con llaves ({ y }) y las variables se declaran antes de que se usen.

Compilador Java

Cuando usted programa para la plataforma Java, escribe el código de origen en archivos .java y luego los compila. El compilador verifica su código con las reglas de sintaxis del lenguaje, luego escribe los códigos byte en archivos .class. Los códigos byte son instrucciones estándar destinadas a ejecutarse en una Java Virtual Machine (JVM). Al agregar este nivel de abstracción, el compilador Java difiere de los otros compiladores de lenguaje, que escriben instrucciones apropiadas para el chipset de la CPU en el que el programa se ejecutará.

JVM

Es una máquina virtual de proceso nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el bytecode Java), el cual es generado por el compilador del lenguaje Java.




Java Runtime Environment

El Java Runtime Environment (JRE, también conocido como el Java Runtime) incluye las bibliotecas de códigos de la JVM y los componentes que son necesarios para programas en ejecución escritos en el lenguaje Java. Está disponible para múltiples plataformas. Puede redistribuir libremente el JRE con sus aplicaciones, de acuerdo a los términos de la licencia del JRE, para darles a los usuarios de la aplicación una plataforma en la cual ejecutar su software. El JRE se incluye en el JDK.

JDK

El JDK incluye herramientas útiles para desarrollar y probar programas escritos en el lenguaje de programación Java y que se ejecutan en la plataforma Java.

jueves, 26 de octubre de 2017

Lenguaje C#

C# 
Lenguaje elegante, con seguridad de tipos y orientado a objetos, que permite a los desarrolladores crear una gran variedad de aplicaciones seguras y sólidas que se ejecutan en .NET Framework .NET. Puede usar C# para crear aplicaciones cliente de Windows, servicios web XML, componentes distribuidos, aplicaciones cliente-servidor, aplicaciones de base de datos y muchas, muchas más cosas. Visual C# proporciona un editor de código avanzado, prácticos diseñadores de interfaz de usuario, un depurador integrado y muchas otras herramientas que facilitan el desarrollo de aplicaciones basadas en el lenguaje C# y .NET Framework.
Sintaxis
Es muy expresiva, pero también sencilla y fácil de aprender. Cualquier persona familiarizada con C, C++ o Java, reconocerá al instante la sintaxis de llaves de C#. Los desarrolladores que conocen cualquiera de estos lenguajes puede empezar normalmente a trabajar en C# de forma productiva en un espacio muy corto de tiempo. La sintaxis de C# simplifica muchas de las complejidades de C++ y proporciona características eficaces, como tipos de valor que aceptan valores NULL, enumeraciones, delegados, expresiones lambda y acceso directo a memoria, que no se encuentran en Java.

C# Orientado a Objetos
Además de los principios básicos orientados a objetos, C# facilita el desarrollo de componentes de software mediante varias construcciones de lenguaje innovadoras, incluidas las siguientes:
  • Signaturas de método encapsulado llamadas delegados, que permiten notificaciones de eventos con seguridad de tipos.
  • Propiedades, que actúan como descriptores de acceso para variables miembro privadas.
  • Atributos, que proporcionan meta datos declarativos sobre tipos en tiempo de ejecución.
  • Comentarios de documentación XML insertados.
  • LINQ que proporciona funcionalidades de consulta integradas en diversos orígenes de datos.


Tu Primer Programa C# (Ejemplo "Hola Mundo")

// A Hello World! program in C#. using System; namespace HelloWorld { class Hello { static void Main() { Console.WriteLine("Hello World!"); // Keep the console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); } } }

Directivas using y namespaces
Las directivas using facilitan el uso de namespace y tipos definidos en otros
namespace, existen 2 tipos de directivas:

  • directivas de tipo “using-alias-directive” introducen un alias para un namespace o un tipo. 
  • directivas de tipo “using-namespace-directive” importan los tipos miembro de un namespace.

Introducción Lenguajes de Programación




  • Los Lenguajes de programación son un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por maquinas como las computadoras.
  • Se basan en un sistema de instrucciones preestablecidas que indican al ordenador lo que debe realizar.
  • Son códigos integrados compuestos por un vocabulario, con una sintaxis y una semántica que permite elaborar infinitas secuencias válidas de tareas e instrucciones.

Clasificación de los lenguajes 
  • Lenguajes de alto-bajo nivel
    • El nivel de un lenguaje hace referencia a su proximidad al lenguaje natural, considerándose de más nivel cuanto más cercanos están a este y de menos nivel cuando más cerca están del lenguaje máquina.
    • El lenguaje de más bajo nivel o lenguaje máquina es el que utiliza el ordenador, el que la máquina entiende, basado en un sistema de 0 y 1. Son difíciles de aprender y manejar, ya que no resultan cercanos al ser humanos, pero son rápidos ya que evitan las traducciones intermedias. Fueron los primeros en aparecer.
    • Los lenguajes de alto nivel son más fáciles de aprender y permiten despreocuparse de la arquitectura del ordenador. Ejemplos son: BASIC, PASCAL, FORTRAN, C (aunque este es intermedio)…
  • Lenguajes interpretados o compilados
    • Los Lenguajes interpretados, se encargan de realizar la traducción instrucción a instrucción a la vez que se ejecuta el programa. Son más lentos, pero mejores cuando el proceso de traducción/ejecución se realiza en repetidas ocasiones, por lo que son más adecuados para principiantes.
    • Los Lenguajes compilados traducen el programa entero y luego lo montan generando un programa ejecutable por si sólo. Una vez compilado el programa, el compilador no tiene porque estar presente, pudiéndose transportar el programa ejecutable a cualquier ordenador, sin necesidad de manejar el compilador.
  • Lenguajes clásicos, visuales y de internet
    • Los Lenguajes clásicos están basados en un lenguaje en el que se escribe el código necesario para realizar las operaciones que se requieren . Los más conocidos son el BASIC, el PASCAL, el C, el COBOL y el CLIPPER.
    • Los Lenguajes visuales son más avanzados y están basados en objetos. Cada entidad del programa (eventos, acciones..) es un objeto sobre el que se definen operaciones. ej.: Visual Basic.
    • Los Lenguajes de Internet son lenguajes específicos diseñados para la creación de páginas Web y realizar su programación (motores de búsqueda, seguridad, establecimiento de comunicaciones…). Son la última generación de lenguajes. ej.: JAVA, HTML.
  • Por el objetivo
    • Los programas pueden clasificarse por el objetivo para el que fueron creados:
      • BASIC, PASCAL: aprendizaje de programación.
      • C y C++: programación de sistemas.
      • COBOL, RPG, Natural: gestión de empresas.
      • CLIPPER, ACESS, Dbase, Delphi, SQL: bases de datos.
      • Visual BASIC, Visual C: programación en Windows.
      • HTLM, JAVA, PERL: Internet (páginas Web).
      • Prolog, Lisp: Inteligencia Artificial.