martes, 5 de julio de 2016

Introducción

Introducción


La programación orientada a objetos es una “filosofía”, un
modelo de programación, con su teoría y su metodología
que conviene conocer y estudiar antes de nada. Un lenguaje 
orientado a objetos es un lenguaje de programación que
 permite el diseño de aplicaciones orientadas a objetos.
 Dicho esto, lo normal es que toda persona que vaya a 
desarrollar aplicaciones orientadas a objetos aprenda
 primero la “filosofía” (o adquiera la forma de pensar) y
 después el lenguaje, porque “filosofía” sólo hay una y
 lenguajes muchos. En este documento veremos brevemente
 los conceptos básicos de la programación orientada a 
objetos desde un punto de vista global, sin particularizar para ningún lenguaje de programación específico.

Objeto

Objeto



La programación orientada a objetos consiste en ordenar datos en conjuntos modulares de elementos de información del mundo real (denominado un dominio). Estos elementos de datos se llaman objetos. Estos datos se agrupan de acuerdo a las características principales del mundo real de estos elementos (tamaño, color, etc.).

El enfoque de objetos es una idea que se ha probado con creces. Simula fue el primer lenguaje de programación en implementar el concepto de clases en 1967. En 1976, Smalltalk implementó los conceptos de encapsulación, agrupación y herencia (los conceptos principales de la programación orientada a objetos). Por otra parte, se han implementado varios lenguajes de programación orientada a objetos a escala global (EiffelObjective CLoops, etc.).

La dificultad que presenta este enfoque es la creación de una representación abstracta, en forma de objetos, de entidades que realmente existen (perro, auto, lámpara eléctrica...) o que existen virtualmente (seguridad social, clima...).

Un objeto se caracteriza por varios conceptos:

  • Atributos: estos son los datos que caracterizan al objeto. Son variables que almacenan datos relacionados al estado de un objeto.

  • Métodos (usualmente llamados funciones de miembro): Los métodos de un objeto caracterizan su comportamiento, es decir, son todas las acciones (denominadas operaciones) que el objeto puede realizar por sí mismo. Estas operaciones hacen posible que el objeto responda a las solicitudes externas (o que actúe sobre otros objetos). Además, las operaciones están estrechamente ligadas a los atributos, ya que sus acciones pueden depender de, o modificar, los valores de un atributo.

  • Identidad: El objeto tiene una identidad, que lo distingue de otros objetos, sin considerar su estado. Por lo general, esta identidad se crea mediante un identificador que deriva naturalmente de un problema (por ejemplo: un producto puede estar representado por un código, un automóvil, por un número de modelo, etc.).

Clase

Clase


Una clase es una construcción que permite crear tipos personalizados propios mediante la agrupación de variables de otros tipos, métodos y eventos.  Una clase es como un plano.  Define los datos y el comportamiento de un tipo.  Si la clase no se declara como estática, el código de cliente puede utilizarla mediante la creación de objetos o instancias que se asignan a una variable.   La variable permanece en memoria hasta que todas las referencias a ella están fuera del ámbito.   En ese momento, CLR la marca como apta para la recolección de elementos no utilizados.  Si la clase se declara como estática, solo existe una copia en memoria y el código de cliente solo puede tener acceso a ella a través de la propia clase y no de una variable de instancia.  Para obtener más información, vea Clases estáticas y sus miembros (Guía de programación de C#). 
A diferencia de los structs, las clases admiten la herencia, una característica fundamental de la programación orientada a objetos.  Para obtener más información, vea Herencia (Guía de programación de C#). 

Clases:


Las clases son plantillas que agrupan comportamiento (métodos) y estados (atributos) de los futuros objetos.

Los objetos son instancias de una clase. Usando el símil “variable – tipo” de la programación estructurada, se entiendo que un objeto es una variable que tiene el comportamiento y estados del tipo (objeto)
Veamos la creación de la clase Persona
1
2
3
4
5
6
7
8
9
public class Persona {
      public String nombre;
      public int edad;

      public void correr(){
              /* por implementar */
      }

}

y dentro del cuerpo del programa instanciamos una nueva Persona denominada Esteban:
1
2
3
4
5
6
7
8
9
10
11
public class Main {

    public static void main(String[] args) {

        Persona esteban = new Persona();

                // Ahora que esteban es persona, puede correr
                esteban.corre();

    }

Herencia

Herencia



La herencia es específica de la programación orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La herencia (a la que habitualmente se denomina subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene las atributos y métodos de la clase primaria. La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para la subclase, que luego se aplican a los atributos y métodos heredados. 
Esta particularidad permite crear una estructura jerárquica de clases cada vez más especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando desea especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases que ofrecen una base que puede especializarse a voluntad (la compañía que vende estas clases tiende a proteger las datos miembro usando la 
encapsulación).

Herencia múltiple


Algunos lenguajes orientados a objetos, como C++ permiten herencias múltiples, lo que significa que una clase puede heredar los atributos de otras dos superclases. Este método puede utilizarse para agrupar atributos y métodos desde varias clases dentro de una sola.


Identificación de los elementos de la POO

Identificación de los elementos de la POO



La Programación Orientada a Objetos (POO u OOP) es un 

paradigma de programación que define los programas en 

términos de “clases de objetos”, objetos que son entidades 

que combinan estado (propiedades o datos), 

comportamiento (procedimientos o métodos) e identidad 

(propiedad del objeto que lo diferencia del resto). La 

programación orientada a objetos expresa un programa 

como un conjunto de estos objetos, que colaboran entre 

ellos para realizar tareas. Esto permite hacer los programas 

y módulos más fáciles de escribir, mantener y reutilizar. 



Elementos de la POO: 


-. Objetos: contienen toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases (e incluso entre objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos). 

A su vez, dispone de mecanismos de interacción (los llamados métodos) que favorecen la comunicación entre objetos (de una misma clase o de distintas), y en consecuencia, 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) información (datos) y procesamiento (métodos). 

-. Atributos: Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables. 
Las variables de instancia también denominados miembros dato, son declaradas en la clase pero sus valores son fijados y cambiados en el objeto. 
Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos los automóviles. 

-.Mensajes: Corresponde a la forma que tienen los objetos para comunicarse entre sí, de esta forma, el objeto que activa el mensaje se llama objeto emisor y el que lo recibe objeto receptor. Cabe señalar que un mensaje debe ser activado o generado desde un método hacia un objeto. En términos generales equivale a la llamada a un procedimiento o función. 
Forma general de un mensaje: 
receptor_mensaje.selector_mensaje [(parámetros)] 
p/e ventana_editor.maximizar; documento1.imprimir(2); 

-. Clases: son declaraciones o abstracciones de objetos, lo que significa, que una clase es la definición de un objeto. Cuando se programa un objeto y se definen sus características y funcionalidades, realmente se programa una clase. 

Para crear una clase se utiliza la palabra reservada class y a continuación el nombre de la clase. La definición de la clase se pone entre las llaves de apertura y cierre. El nombre de la clase empieza por letra mayúscula. 
class Rectangulo{ 
//miembros dato
//funciones miembro
} 

-.Instanciación: una instancia se produce con la creación de un objeto perteneciente a una clase (se dice que se instancia la clase). El objeto que se crea tiene los atributos, propiedades y métodos de la clase a la que pertenece. Los objetos y sus características se usan en la construcción de programas, ya sea como contenedores de datos o como partes funcionales del programa. 



Características del POO:


-. Abstracción: Mediante la abstracción la mente humana 

modeliza la realidad en forma de objetos. Para ello busca 

parecidos entre la realidad y la posible implementación de 

objetos del programa que simulen el funcionamiento de los 

objetos reales. 


-. Encapsulamiento: Uno de los objetivos primordiales de la P.O.O., es la creación de objetos que funcionen como entidades complejas, es decir autosuficientes, una de las reglas del encapsulamiento es que el programador nunca necesita acceder directamente a los datos de un objeto, en vez de esto se deben definir métodos dentro del objeto que gobiernen toda la manipulación de datos. El encapsulamiento está referido, también, a los métodos de cada objeto en el sentido que su código interno debe ser transparente a la hora de activarse. 


-.Polimorfismo: Se refiere a la capacidad que tiene el objeto para hacer lo adecuado después de haber recibido un mensaje, independientemente de quién lo haya enviado. Hay que tener en cuenta que el polimorfismo se mueve a través de la herencia, dicho de otra forma trata de hacer posible enviar mensajes genéricos a objetos y que éstos realicen lo estipulado de acuerdo a su codificación interna, es decir, la acción varía en relación al receptor del mensaje. 

Ejemplo: Se desea enviar un mensaje a dos objetos distintos (Triángulo y Rectángulo) los cuales podrían ser descendientes de la clase polígono, sin embargo cuando el triángulo reciba la orden área, la ejecución de este método se obtendrá a partir de (b*h)/2 en cambio si se activa el mismo método para el rectángulo el valor se calculará a partir de ð *r2 , aún cuando ambos objetos recibieron la misma orden. 

-. Herencia: En términos simples la herencia en la P.O.O. es la capacidad que tiene los objetos para heredar todas o algunas de sus características (datos) y comportamiento (procedimientos) a sus descendientes o herederos, permitiendo así la reutilización de código lo que en la práctica se traduce en una herramienta muy potente de programación. 
Esta herencia puede ser a nivel de estado (características) o protocolo (métodos y procedimientos) o ambas. La herencia en la P.O.O tiene sus raíces en el concepto de registros anidados. 
Ejemplo: 
Type 
edades: 0..150; 
InfPersona = RECORD 
Apellido: integer; 
Nombre: integer; 
Edad: edades; 
end; 
grados: 0..12; 
InfEstudiante= RECORD 
persona: InfPersona; 
grado: Grados; 
Profesor: string (30); 
end; 
El registro Inf Persona contiene campos que se utilizan para describir a cualquier persona. El segundo registro Inf Estudiante, incluye el campo Persona, que contiene los campos del registro Inf Persona. En la P.O.O., se utiliza el mismo concepto para construir incrementalmente objetos que son capaces de heredar algunas o todas las características de sus ascendientes (objetos padres).



Les dejo un videos para que sepan mas acerca de la poo







Identificacion de los elementos de la programación dirigida por eventos

Identificación de los elementos de la programación dirigida por eventos


Los lenguajes de programación orientado a eventos están especialmente indicados para aquellos que no tienen muchos conocimientos de los lenguajes de programación. Con este tipo de lenguaje de programación se consiguen en muy poco tiempo realizar sus propios programas utilizando interfaces gráficas gracias el efecto que producen una serie de eventos. Estos eventos ofrecen al usuario la posibilidad de realizar una serie de acciones encaminadas a crear un determinado programa.
Para poder logar este proceso es preciso que actúen dos herramientas conjuntamente. Una sería la herramienta que permite llevar a cabo el entorno grafico en el que se desarrolla este proceso de programación. Y la otra, un lenguaje de programación de alto nivel que nos ayuda a codificar todos estos eventos. Con estas dos aplicaciones podemos desarrollar cualquier tipo de aplicación o programa que necesitemos.

Dentro de los lenguajes de programación orientado a eventos tenemos que mencionar al Visual Basic. Este lenguaje de programación es uno de los que más adeptos tienen dentro de la programación. Este lenguaje nos permite crear en muy poco tiempo aplicaciones relativamente complejas. Es un lenguaje de cuarta generación, esto significa que una mayoría de las tareas que realizamos con el se consiguen sin escribir código. Lo logramos simplemente con operaciones gráficas que hacemos con el ratón sobre la pantalla de nuestra computadora.

Con los lenguajes de programación orientado a eventos podemos crear programas que una vez en funcionamiento se quedan a la espera de determinadas acciones del usuario del programa, esto es lo que se conoce con el nombre de eventos.


Les dejo un video sobre la programacion dirigida a eventos


Visual Basic

Visual Basic



Visual Basic en un lenguaje de programación visual con un entorno de desarrollo gráfico proveniente del Basic. Es uno de los lenguajes más utilizados para realizar aplicaciones de grande o pequeño tamaño.


Caracteristicas


  • Barra de titulo: muestra el nombre del proyecto y del formulario que se está diseñando actualmente

  •  Barra de menús: agrupa los menús despegables que contienes todas las operaciones que pueden llevarse a cabo con Visual Basic 6.0.
 
  • Barra de herramientas estándar: contienen los botones que se utilizan con mayor frecuencia cuando se trabaja con un proyecto. Simplifica la elección de opciones de los menús ArchivoEdición, Ver y Ejecutar; además, en el área derecha presenta la ubicación (coordenadas) y el tamaño del objeto seleccionado
 
  • Ventana de formulario: es el área donde se diseña la interfaz gráfica, es decir, es donde se inserta electo gráficos, como botones, imágenes, casilla de verificación, cuadros de listas,etc.
 
  • Cuadro de herramientas: presenta todos los controles necesarios para diseñar una aplicación, como cuadros de texto, etiquetas, cuadros de listas, botones de comandos, etc.


Java Script

Java Script






Es un lenguaje interpretado línea a línea por el navegador, mientras se carga la página, que solamente es capaz de realizar las acciones programadas en el entorno de esa página HTML donde reside. Sólo es posible utilizarlo con otro programa que sea capaz de interpretarlo, como los navegadores web.


Caracteristicas

  • Es simple, no hace falta tener conocimientos de programación para poder hacer un programa en java script.

  • Maneja objetos dentro de nuestra página web y sobre ese objeto podemos definir diferentes eventos. Dichos objetos facilitan la programación de páginas interactivas a la vez que se evita la posibilidad de ejecutar comandos que pueden peligrosos para la máquina del usuario, tales como formateo de unidades, modificar archivos, etc.

  • Es dinámico, responde a eventos en tiempo real. Eventos como presionar un botón, pasar el puntero del mouse sobre un determinado texto o el simple hecho de cargar la página o caducar un  tiempo. Con esto podremos cambiar totalmente el aspecto de nuestra página al gusto del usuario, evitándonos tener en el servidor una página para cada gusto, hacer cálculos en base a variables cuyo valor esa determinado por el usuario.


JAVA

Java






Java es un lenguaje de programación orientado a objetos que se popularizó a partir del lanzamiento de su primera versión comercial de amplia difusión, la JDK 1.0 en 1996. Actualmente es uno de los lenguajes más usados para la programación en todo el mundo.



Características

      
  •          Lenguaje totalmente orientado a Objetos. Todos los conceptos en los que se apoya esta técnica, encapsulación, herencia, polimorfismo, etc., están presentes en Java.
  • Disponibilidad de un amplio conjunto de bibliotecas. Como ya se mencionó anteriormente, Java es algo más que un lenguaje. La programación de aplicaciones con Java se basa no solo en el empleo del juego de instrucciones que componen el lenguaje, sino, fundamentalmente, en la posibilidad de utilizar el amplísimo conjunto de clases que Sun pone a disposición del programador y con las cuales es posible realizar prácticamente cualquier tipo de aplicación. 

  • Lenguaje simple. Java posee una curva de aprendizaje muy rápida. Resulta relativamente sencillo escribir applets interesantes desde el principio. Todos aquellos familiarizados con C++ encontrarán que Java es más sencillo, ya que se han eliminado ciertas características, como los punteros. Debido a su semejanza con C y C++, y dado que la mayoría de la gente los conoce aunque sea de forma elemental, resulta muy fácil aprender Java. Los programadores experimentados en C++ pueden migrar muy rápidamente a Java y ser productivos en poco tiempo.

  • Distribuido. Java proporciona una colección de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando así la creación de aplicaciones distribuidas.

  • Interpretado y compilado a la vez. Java es compilado, en la medida en que su código fuente se transforma en una especie de código máquina, los bytecodes, semejantes a las instrucciones de ensamblador. Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre cualquier máquina a la cual se hayan portado el intérprete y el sistema de ejecución en tiempo real (run-time).

  •   Robusto. Java fue diseñado para crear software altamente fiable. Para ello proporciona numerosas comprobaciones en compilación y en tiempo de ejecución. Sus características de memoria liberan a los programadores de una familia entera de errores (la aritmética de punteros), ya que se ha prescindido por completo de los punteros, y la recolección de basura elimina la necesidad de liberación explícita de memoria.

  • Seguro. Dada la naturaleza distribuida de Java, donde las applets se bajan desde cualquier punto de la Red, la seguridad se impuso como una necesidad de vital importancia. A nadie le gustaría ejecutar en su ordenador programas con acceso total a su sistema, procedentes de fuentes desconocidas. Así que se implementaron barreras de seguridad en el lenguaje y en el sistema de ejecución en tiempo real.

  • Alto rendimiento.

  • Multihebra. Hoy en día ya se ven como terriblemente limitadas las aplicaciones que sólo pueden ejecutar una acción a la vez. Java soporta sincronización de múltiples hilos de ejecución (multithreading) a nivel de lenguaje, especialmente útiles en la creación de aplicaciones de red distribuidas. Así, mientras un hilo se encarga de la comunicación, otro puede interactuar con el usuario mientras otro presenta una animación en pantalla y otro realiza cálculos.

  • Dinámico. El lenguaje Java y su sistema de ejecución en tiempo real son dinámicos en la fase de enlazado. Las clases sólo se enlazan a medida que son necesitadas. Se pueden enlazar nuevos módulos de código bajo demanda, procedente de fuentes muy variadas, incluso desde la Red.

  • Produce applets. Java puede ser usado para crear dos tipos de programas: aplicaciones independientes y applets. Las aplicaciones independientes se comportan como cualquier otro programa escrito en cualquier lenguaje, como por ejemplo el navegador de Web HotJava, escrito íntegramente en Java. Por su parte, las applets son pequeños programas que aparecen embebidos en las páginas Web, como aparecen los gráficos o el texto, pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones de red, presentar menús y cuadros de diálogo para luego emprender acciones, etc.






Visual C++

Visual C++





Visual C++. También conocido como MSVC, Microsoft Visual C++, es un entorno de desarrollo integrado (IDE) para lenguajes de programación CC++ y C++/CLI. Esta especialmente diseñado para el desarrollo y depuración de código escrito para las API's de Microsoft WindowsDirectX y la tecnología Microsoft .NET Framework.


Características.


  • El IDE cuenta con herramientas como el IntelliSense, RemoteDebuging, Editar y Continuar, y Texto Resaltado.

  • Cuenta con una versión Express, llamada Microsoft Visual C++ Express Edition, la cual es gratuita y se puede descargar desde el sitio de Microsoft.

  • El lenguaje de programación utilizado por esta herramienta, de igual nombre, está basado en C++ y es compatible en la mayor parte de su código con este lenguaje, a la vez que su sintaxis es exactamente igual. En algunas ocasiones esta incompatibilidad impide que otros compiladores, sobre todo en otros sistemas operativos, funcionen bien con código desarrollado en este lenguaje.

  • Algunas de las nuevas implementaciones es que el llamado código administrado (managed code), hace uso de una de las mejores herramientas dentro de .NET, el recolector de basura (garbage collector).