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.